svictor.net

Victor A. Stoichiţă

Bienvenue ! TeX & typo. Source XeTeX pour livre d'anthropologie

Source XeTeX pour livre d'anthropologie

Imprimer
Mercredi, 17 Juin 2009 19:25

La petite histoire

L'éditeur manquant d'argent, j'ai assuré moi-même la mise en page de mon livre Fabricants d'émotion. Ma thèse était déjà écrite en LaTeX, mais pour le livre j'ai travaillé avec XeLaTeX. Ce dernier permet une gestion plus fine des polices modernes (opentype) et de l'unicode.

Le livre est publié dans la collection "Hommes et musiques" des presses de la Société d'ethnologie. Les normes typographiques de la collection sont plutôt contraignantes. Elles s'inspirent de la typographie au plomb, et ne sont pas vraiment adaptées aux techniques de composition informatique. Le résultat est en revanche magnifique (je suis bien sûr objectif) !

Habituellement, les typographes de la maison d'édition travaillent sur XPress ou InDesign. Par commodité et par principe, j'ai préféré continuer à travailler avec des outils libres, et j'ai donc adopté XeLaTeX.

Parvenir à respecter l'ensemble des normes de la collection ne fut pas une mince affaire ! Durant ce travail, j'ai beaucoup appris de la communauté des utilisateurs de Latex (XeLaTeX était à l'époque largement inconnu). A toutes fins utiles, voici le code-source partiel de mon livre, au cas où quelqu'un aurait un jour besoin de reproduire des effets similaires.

Le code

L'ouvrage est constitué d'un document-maître (ci-dessous) qui définit un ensemble de fonctions et appelle d'autres documents par des \include. Ce sont ces derniers qui contiennent le texte proprement dit. A titre d'exemple, voici le premier chapitre. Il est écrit ainsi, ce qui donne cela (et peut-être envie de lire le livre Complice?).

Voici le document-maître.

Le code ci-dessous est là pour vous donner une idée. Il ne fonctionnera pas tel quel, en raison des sauts de ligne au milieu des commentaires. Si vous devez travailler dessus, Je vous recommande le fichier original, qui est aussi mieux indenté.

\documentclass[xetex,cleardoubleempty,11pt]{scrbook}
\usepackage{fixme} % utile pour les épreuves de correction
\usepackage[frenchb]{babel}
\frenchbsetup{
og=«,
fg=»,
ThinColonSpace=true,
ThinSpaceInFrenchNumbers=true
}
\usepackage[autolanguage]{numprint}%nécessaire pour \nombre

\usepackage[quiet]{fontspec} % Lié à XeTeX
\usepackage[xetex]{graphicx}
\graphicspath{{../imajtex/schemas/}{../imajtex/schemas/not_utiles/}{../imajtex/fotos/}{../imajtex/scans/}}
\usepackage{rotating}
\usepackage{xunicode}
\usepackage{xltxtra} % Améliorent XeTeX. xltxtra charge aussi graphix
\usepackage{fixltx2e} % Divers fixes pour latex2e, optionnels car pouvant causer des problèmes de compatibilité avec les anciens docs. Entre autres, le paquet autorise des petites capitales italiques.


%%%%%%%%%%%%%%%%%%%% DEFINITIONS GENERALES DES POLICES %%%%%%%%%%%%%%%
% Police générale
\defaultfontfeatures{Mapping=tex-text, % pour interpréter correctement les
% conventions de LaTeX (--- \dots etc.)
Numbers=OldStyle,
WordSpace={1.6, 1.7, 1.5},% nominal, stretch, shrink
Contextuals={
WordInitial,
WordFinal,
LineInitial,
LineFinal,
}
}
\setmainfont{Adobe Garamond Pro}

% Capitales pour les titres de chapitre
\newfontfamily\titrecaps[LetterSpace=20,WordSpace=3]{Adobe Garamond Pro}

% Petites capitales pour les références à un autre chapitre dans le
% corps du texte.
\newfontfamily\refchap[Letters=SmallCaps]{Adobe Garamond Pro}

% Hack pour accéder à l'alphabet phonétique (en principe AgaramondPro
% l'a mais en pratique, les caractères ne s'impriment pas).
\newfontfamily\ipafont{FreeSerif} 

%%%%%%%%%%%%%%%%%%%%%%%%%%% GEOMETRIE DE LA PAGE %%%%%%%%%%%%%%%%%%

% Marges et conteneurs de la page
\usepackage[
papersize={160mm,240mm},
includeheadfoot=false,
hmargin={24mm,28mm},
vmargin={29mm,42mm},
headsep=3mm,
footskip=8mm,
marginparwidth=12mm,
marginparsep=2mm,
]{geometry}

% Préparation de la page pour l'imprimeur (traits de coupe etc.)
\usepackage[
cam,
a4,
center,
info
]{crop}

% Pour varier l'interlignage au besoin
\usepackage{setspace}

% En-têtes et pieds des pages normales
\usepackage{scrpage2}
\cfoot[\pagemark]{\pagemark}
\ofoot[]{}
\cehead[]{\sc \titrecaps fabricants d'émotion}
\cohead[]{\sc \titrecaps \MakeLowercase \leftmark}
\ohead[]{}

% En-têtes et pieds des pages de chapitre (pas d'en-tête)
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\pagestyle{scrheadings}

% En-têtes et pieds des fins de chapitre (pas de pied).
\newpagestyle{finchap}{
{\hfill \sc \titrecaps \MakeLowercase fabricants d'émotion \hfill}{\hfill \sc
\titrecaps \MakeLowercase \leftmark \hfill}{}
}{
{}{}{}
}

%%%%%%%%%%%%%%%%%%%%%%%%% TITRAGE DES SECTIONS %%%%%%%%%%%%%%

\def\chaptername{chapitre} % pas de majuscule car petites caps.
\def\thesection{\arabic{section}} % numéros de sections en chiffres
% arabes, sans le numéro de chap. avant.
\setcounter{secnumdepth}{1} % changer la profondeur de
% numérotation. Rien n'est plus numéroté
% en dessous des sections

\usepackage[sc,nobottomtitles*]{titlesec} % charger avant html !
\titleformat{\part}[display] % forme générale du titre
{\Large \filcenter \thispagestyle{empty}} % code pour tout le titre
{\itshape \partname} % label du titre
{2ex} % distance entre label et nom
{\titrecaps \MakeUppercase} % code avant le nom
{\normalfont} % code après le nom
\titlespacing{\part}
{0pt} % ajouter à la marge gauche
{*4} % espace avant
{*5} % espace après
{} % ajouter à la marge droite

\titleformat{\chapter}[display] % forme générale du titre
{\sc \filcenter} % code pour tout le titre
{\titrecaps \MakeLowercase \chaptername{}
\def\thechapter{\MakeLowercase {\titrecaps
\Roman{chapter}}} %compteur interlettré
\thechapter} % label du titre
{1.5ex} % distance entre label et nom
{\itshape \Large} % code avant le nom
{\normalfont \protect\def\thechapter{\MakeLowercase {\sc \Roman{chapter}}}} % code après le nom
\titlespacing{\chapter}
{0pt} % ajouter à la marge gauche
{*0} % espace avant
{*15} % espace après
{} % ajouter à la marge droite

\titleformat{\section}[hang] % forme générale du titre
{\filcenter} % code pour tout le titre
{\thesection{}. } % label du titre
{0pt} % distance entre label et nom
{\itshape} % code avant le nom
{} % code après le nom

\titlespacing{\section}
{0pt} % ajouter à la marge gauche
{*5} % espace avant
{*2} % espace après
{} % ajouter à la marge droite
\titleformat{\subsection}[hang] % forme générale du titre
{} % code pour tout le titre
{} % label du titre
{0pt} % distance entre label et nom
{\itshape} % code avant le nom
{} % code après le nom
\titlespacing{\subsection}
{0pt} % ajouter à la marge gauche
{*2.5} % espace avant
{*1} % espace après
{} % ajouter à la marge droite
\renewcommand{\bottomtitlespace}{0pt} % en principe page avant saut
% est ragged

%%%%%%%%%%%%%%%%%%%%%%%%%%% TABLEAUX ET COLONNES %%%%%%%%%%

% Pour pouvoir écrire sur plusieurs colonnes (utilisé dans le glossaire)
\usepackage{multicol}

% Tables longues pour traductions de chansons
\usepackage{array}
\usepackage{longtable}
\setlength\LTpre{0ex}
\setlength\LTpost{0ex}

%%%%%%%%%%%%%%%%%%%  TABLE DES MATIERES %%%%%%%%%%%%%%
\usepackage{tocloft} % Charger avant floatrow, caption et
% subfig. Les commandes en cft... en dépendent.
\renewcommand{\cfttoctitlefont}{\vspace*{-16mm} \hfill \sc \titrecaps \Large
\MakeLowercase }
\renewcommand{\cftaftertoctitle}{\hfill \vspace*{16mm}}
\renewcommand{\cftdot}{\hfill}
\renewcommand{\cftchappresnum}{chapitre }
\renewcommand{\cftchapaftersnum}{ — }
\renewcommand{\cftchapfont}{\sc}
\renewcommand{\cftchapaftersnumb}{\normalfont \itshape}
\renewcommand{\cftchappagefont}{\normalfont}
\newlength\tocbox
\setlength{\tocbox}{14ex} % valeur moyenne, pour éviter les erreurs. La
définition des valeurs correctes se fait au besoin dans chaque chapitre.
\renewcommand{\cftchapnumwidth}{\tocbox}
\renewcommand{\cftsecfont}{\normalfont
\fontsize{9.5}{10.2}\selectfont}
\renewcommand{\cftsecpagefont}{\normalfont\fontsize{9.5}{10.2}\selectfont}
\renewcommand{\cftsecaftersnum}{. }
\renewcommand{\cftsecnumwidth}{3ex}
\renewcommand{\cftsubsecfont}{\normalfont
\fontsize{9.5}{10.2}\selectfont}
\renewcommand{\cftsubsecpagefont}{\normalfont\fontsize{9.5}{10.2}\selectfont}
\addtolength{\cftsubsecindent}{0ex}

%%%%%%%%%%%%%%%%%%%%%%%%%% FLOTTANTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Définition de nouveaux flottants. Floatrow dépasse certaines limitations de float, notamment pour les wrapfigures (plus d'erreur sur le caption des illustrations par ex.).
\usepackage{floatrow,caption,subfig}
\renewcommand{\captionlabelfont}{\normalfont}
\usepackage{wrapfig}

\floatstyle{plain} % comme dans les figures standard de latex

% Noter que tout flottant X défini par \newfloat comporte une variante sidewaysX.
\newfloat{illustration}{}{ill} % ce flottant illustration se place selon la technique habituelle de Latex (autrement, remplir les 2e {}). Son fichier auxiliaire s'appelle
ill. Il est numéroté d'un bout à l'autre du livre (autrement, rajouter [unité de numérotation: chapter, section, etc.]].
\floatname{illustration}{{\sc ill.}} % La légende commence par "Ill."
\DeclareCaptionLabelSeparator{endash}{~—~} % allonger le séparateur — (--- au lieu de --)
\DeclareCaptionLabelFormat{cont}{#1~#2\alph{ContinuedFloat}}% ABC pour
ContinuedFloat... Mais ça ne marche pas.
\captionsetup[ContinuedFloat]{labelformat=cont,labelsep=endash}
\newfloat{tableau}{}{tab}
\floatname{tableau}{{\sc tableau}}
\DeclareCaptionFormat{hommesetmusiques}{\fontsize{10}{10.7}\selectfont
\sc{#1#2}\it{#3}\par}
\captionsetup[tableau]{format=hommesetmusiques,labelsep=endash}
\captionsetup[illustration]{format=hommesetmusiques,labelsep=endash}
\captionsetup[figure]{format=hommesetmusiques,labelsep=endash}
\floatsetup[tableau]{style=plaintop}

% La redéfinition de "figure" se fait ici. En principe, wrapfigure suit.
\usepackage{remreset} % pour enlever le reset du compteur à chaque chapitre (numérotation continue sur tout le document).
\makeatletter
\@removefromreset{figure}{chapter}
\makeatother
\renewcommand{\thefigure}{\arabic{figure}}


%%%%%%%%%%%%%%%%%% NOTES et RENVOIS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage[french]{varioref} % Customisé par moi selon les normes de la collection. Autrement, on peut le faire avec \renewcommand mais seulement après le préambule.
\usepackage{endnotes}
\renewcommand{\enoteformat}{\rightskip \leftskip \noindent \leavevmode\llap{\makeenmark}} % pour éviter l'indentation automatique des notes de fin

\usepackage{fnpos} % Pousse les notes en bas de page, même avec \raggedbottom.
\renewcommand{\footnoterule}{}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENVIRONNEMENTS MAISON %%%%%%%%%%%%%%%%%%%

% Carrés en marge pour les exemples
\usepackage{fancybox}
\newcommand{\ex}[1]{\marginpar[\raggedleft \footnotesize\fbox{#1}]{\footnotesize\fbox{#1}}}
\setlength{\marginparsep}{5mm}


% Pour les traductions de chansons
\newenvironment{traduction}{
\begin{quotation}
\fontsize{9.5}{10.9}\selectfont% interligne 10.2
% dans la collection, mais ça crée trop de
% problèmes.
\begin{longtable}{@{\hspace{10mm}}>{\itshape}p{40mm}@{\hspace{8mm}}p{40mm}}
}
{ \end{longtable}\normalsize\end{quotation} }

\def\quotquotation{\fontsize{9.5}{10.2}\selectfont
\vspace{5.1pt}%
\par%
\noindent%
\ignorespaces% autrement, une espace visible...
}

% Amener quotation aux normes de la collection
\renewenvironment{quotation}{\quotquotation}
{\par\vspace{10.2pt}\normalsize}

% Amener quote aux normes de la collection
\renewenvironment{quote}{\quotquotation}
{\par\vspace{10.2pt}\normalsize}

% Alignement des références des citations (quote/quotation).
\newcommand{\refcit}[1]{
\smallskip \noindent
\begin{tabular}{@{}>{\raggedleft}p{103mm}@{}p{5mm}@{}}
#1 & ~
\end{tabular} \intextsep=0ex
}

% Après bien des discussions avec l'éditeur, je renonce à la mise en forme spéciale des citations. Elles seront définies comme des "quotation", mais l'environnement citons est encore appelé ici ou là dans le texte.
\newenvironment{citons}{ \begin{quotation}  }
{ \end{quotation} }

% Pour les dialogues, aucun paragraphe n'est indenté
\newlength{\parstock}
\newenvironment{dialogue}{
\setlength{\parstock}{\parindent}%
\setlength{\parindent}{0pt} \begin{quotation}  }
{ \end{quotation} \setlength{\parindent}{\parstock} }


%%%%%%%%%%%%%%%%%%%% DIVERS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Bibliographie
\usepackage{natbib}
\bibpunct[\,: ]{(}{)}{\,; }{a}{}{\ et\ }

\usepackage[normalem]{ulem}% Pour souligner plusieurs lignes de texte
% (utilisé dans chapitre "Musique Tsigane")

% Surtout parce que j'ai la flemme de taper html... à chaque fois
%\newcommand{\lien}[2]{\htmladdnormallink{#1}{#2}}

% Quelques césures particulières
\hyphenation{conçoi-vent é-po-que con-naî-tre connais-sent rou-mai-nes plei-ne mu-ta-tion
man-quent ex-em-ples ex-em-ple é-cou-te main-tes ur-sari moin-dres peu-vent
dan-sent pres-que ethno-mu-si-co-lo-gie lan-gues don-né conser-vé
consom-ment mineu-res}

%%% Pour tester des chapitres isolés :
% \includeonly{
% AvantPropos,
% Introduction,
% OursQuiDanse,
% HistoireIugani,
% FabricantsDemotion,
% MusiqueTsigane,
% Apories,
% JusteFauxRuse,
% MusiqueEnMorceaux,
% Apprentissage,
% SixiemeSens,
% Conclusion,
% IndexDocuments,
% GuideEcoute,
% Glossaire,
% ConventionsNotation,
% ResAng,
% TableFigures
% }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
%%%%%%%%%%%%%%%% COMMANDES A PLACER APRES LE PREAMBULE ! %%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%% CHANGER CERTAINS NOMS %%%%%%%%%%%%%%%%%%%%%%%%%
\def\chaptername{chapitre} % pas de majuscule car petites caps.
\def\figurename{{\sc fig.}} % Au lieu de "Figure" (défaut dans frenchb2)
\def\tablename{{\sc tab.}}
\def\thechapter{\MakeLowercase {\sc \Roman{chapter}}}

%%%%%%%%%%%%%%% CESURES ET CASSURES DE PAGE %%%%%%%%%%%%%%%%%%%%%%%%%
\lefthyphenmin=3 % ne pas autoriser les césures de - de 3 lettres
\righthyphenmin=3
\setlength{\emergencystretch}{1em} % élasticité entre mots après
% hyphénation et avant overfull hbox
\widowpenalty=10000 % veuves interdites
\clubpenalty=10000 % orphelins interdits (mais il en reste quand-même!
% Vérifier et régler leur compte aux récalcitrants !)
\raggedbottom % Enlevé car sinon notes de bas de page pas calées en bas.

%%%%%%%%%%%%%%%%%%%%% QUELQUES DIMENSIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setstretch{.87} %Valeur empirique. Sur Indesign, ce serait 11.7pt paraît-il.
\setlength\parindent{5mm}
\setlength\parskip{0pt}
\addtokomafont{footnoote}{\fontsize{8}{9}\selectfont}
\setlength{\footnotesep}{0pt}

% Labels des listes "description"
\renewcommand\descriptionlabel[1]{\hspace\labelsep\normalfont \sc
#1} % labels en petites caps

% Espacement des listes "description"
\makeatletter
\let\orig@Description=\description
\renewenvironment{description}{\orig@Description
\leftmargin=0ex
\rightmargin=0ex
\itemindent=0ex
\itemsep=\parskip
}
{\endlist}% Attention: sauter une ligne avant makeatother !

\makeatother

% Espacement des listes "enumerate"
\makeatletter
\let\orig@Enumerate=\enumerate
\renewenvironment{enumerate}{\orig@Enumerate
\itemsep=0ex
\partopsep=0ex
}
{\endlist} % Attention: sauter une ligne avant makeatother !

\makeatother

% 1/4 quadratin pour les guillemets
\makeatletter
\renewcommand*{\FBguill@spacing}{\,}
\makeatother

% Supprimer l'indentation des notes. Nécessaire pour que addtokomafont prenne effet. Pourquoi? Bonne question !
\deffootnote[8mm]{0em}{5mm}{\thefootnotemark{}.\ }

% L'interligne imposé par la collection est petit. Cela pose des problèmes avec les majuscules accentuées. Il faut \smash pour les À et É. Mais pour les À isolés (À Bucarest, ... il faut \Vmash si le À est en début de paragraphe (en incluant l'espace suivant le À dans la boîte). Par sécurité, je mets \Vsmash partout.
\newcommand{\Vsmash}[1]{\mbox{\smash{#1}}}

% Changer le nom de la bibliographie
\renewcommand{\bibname}{\sc \titrecaps références citées}

% Ne lister qu'un niveau dans la table des matières
\setcounter{tocdepth}{2} % Pour ne lister que 1 niveau dans la toc

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%% CA Y EST, ON COMMENCE A ECRIRE !!! %%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% PAGE 2 : Mentions de copyright
\thispagestyle{empty} { \centering \itshape Le présent ouvrage est
publié avec le concours\%
du ministère de la Culture et de la Communication\%
(Direction de la musique, de la danse, du théâtre et des
spectacles),\%
du Centre de recherches en ethnomusicologie \normalfont (\textsc{crem} –
\textsc{lesc umr} 7186)\itshape\%
et de l'université Paris X-Nanterre

}

\vfill

{ \footnotesize \centering © Société d'ethnologie 2008

\textsc{isbn} 978-2-901161-85-1

[08-03]

\textsc{issn} 1258-2611

}

\clearpage

%%% AVANT-PROPOS
\setcounter{page}{7} % d'autres pages sont insérées de l'extérieur au
% début du livre.
\include{AvantPropos}

\clearpage

%%% PREMIERE PARTIE
\thispagestyle{empty}
\vspace{5ex}
{ \filcenter \Large \itshape Première partie

\vspace{2ex}

\normalfont \filcenter \titrecaps LA FABRIQUE DE MUSIQUE

}
\addtocontents{toc}{ \protect\centering \vspace{5ex} \par
\sc \titrecaps première partie \par \vspace{.7ex}
\normalfont \itshape La fabrique de musique \par \vspace{2ex}}
\cleardoublepage

\include{Introduction}
\include{OursQuiDanse}
\include{HistoireIugani}
\include{FabricantsDemotion}
\include{MusiqueTsigane}

\cleardoublepage

%%% DEUXIEME PARTIE

\thispagestyle{empty}
\vspace{5ex}
{ \filcenter \Large \itshape Deuxième partie \normalfont

\vspace{2ex}

\filcenter \titrecaps QU'EST-CE QU'UNE MÉLODIE\,?

}

\addtocontents{toc}{ \protect\centering \vspace{5ex} \par
\sc \titrecaps deuxième partie \par \vspace{.7ex}
\normalfont \itshape Qu'est-ce qu'une mélodie? \par \vspace{2ex}}
\cleardoublepage

\include{Apories}
\include{JusteFauxRuse}
\include{MusiqueEnMorceaux}
\include{Apprentissage}
\include{SixiemeSens}
\include{Conclusion}

%%% BIBLIOGRAPHIE

\addcontentsline{toc}{chapter}{références citées}
\nocite{akrich94-comment}
\nocite{latour96-lecons}
\nocite{logeay04}
\bibliographystyle{HommesEtMusiques2c}
\bibliography{./Bibliographie}

\clearpage

%%% APPENDICES

\include{IndexDocuments}
\include{GuideEcoute}
\include{Glossaire}
\include{ConventionsNotation}
\include{ResAng}
\include{TableFigures}
\clearpage

%%% TABLE DES MATIERES
\fontsize{11}{11.7}\selectfont
\pagestyle{plain}
\tableofcontents
\thispagestyle{empty}

\pagestyle{empty}
\clearpage ~
\clearpage ~
\end{document}

Je travaille actuellement sur d'autres projets, et ne pratique plus vraiment le (Xe)LaTeX de pointe.  Il m'est donc difficile d'assurer un "service après-vente". Cependant, si ce document vous a été utile, ou si vous avez besoin d'autres fichiers liés au livre (table des matières, etc.), n'hésitez pas à me laisser un message.

 

Menu