\chapter{Améliorer son texte et sa mise en forme} \epigraph{La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.}{Antoine \textsc{de Saint-Exupéry}} \label{chap-texte-details}\lettrine{S}{i} tu sais désormais écrire des paragraphes, faire une page de garde simple, afficher un sommaire ou utiliser des listes sous \LaTeX{}, il existe encore plein d'autres fonctionnalités sympathiques pour compléter ces éléments. Et je les recense justement dans ce chapitre ! \section{Changer la police d'écriture} \subsection*{Introduction} \label{chgt-police}Changer de police constitue un vaste débat sous \LaTeX{}. Tout d'abord, pourquoi vouloir changer ? La police proposée ne convient-elle pas ? Ou est-ce par habitude d'utiliser auparavant une autre police sous Word ? \`A moins que ton école impose une police spécifique pour ton rapport ? Ensuite, quelle police préfères-tu utiliser ? Avec empattement\footnote{Mode de terminaison d'un caractère : \url{http://fr.wikipedia.org/wiki/Empattement_(typographie)}.}, sans empattement ? Mais surtout, si tu dois écrire des formules mathématiques, la nouvelle police possède-t-elle les caractères nécessaires sous un format équivalent ? Je pense notamment aux symboles courants $\sum$ ou $\int$, sans parler des lettres grecques. \\ Il existe de multiples façons de changer de police sous \LaTeX{} : de manière locale, pour pouvoir juste profiter d'un effet de style ; puis, de manière globale, donc sur tout le document. Et il faut au préalable connaître la police que tu aimerais utiliser. Naturellement, si tu tiens à conserver la police native de \LaTeX{}, tu sais déjà ce que tu dois renseigner dans le préambule et tu peux lire la suite pour te cultiver, sans forcément devoir l'appliquer. \subsection*{Empattement et machine à écrire} Tout comme il est possible de mettre un bout de texte en gras grâce à la commande \verb?\textbf{}?, tu peux choisir d'enlever l'empattement (\textit{sans serif}) d'un bout de texte grâce à la commande \verb?\textsf{}?. Tu peux aussi choisir de le mettre en valeur différemment grâce à la mise en forme \og machine à écrire \fg{} (\textit{typewriter}) avec la commande \verb?\texttt{}?. \\ Si tu veux appliquer un tel changement sur plusieurs paragraphes, tout comme \verb?\textbf{}? a pour équivalent \verb?{\bfseries{}}?, nous avons donc à disposition le \verb?\sffamily? et le \verb?\ttfamily?. Là encore, il faut délimiter les paragraphes concernés avec des accolades \verb?{? et \verb?}? ou utiliser de telles commandes à l'intérieur d'un environnement, ou encore utiliser directement un environnement : \verb?\begin{sffamily}? fonctionne parfaitement ! Et si jamais tu veux annuler ces modifications (localement ou sur un paragraphe) et donc retrouver la traditionnelle police avec empattement, les commandes \verb?\textrm{}? et \verb?{\rmfamily{}}? sont disponibles. \\ Enfin, si tu veux faire de telles modifications sur tout le document, tu peux aussi renseigner une des commandes suivante dans le préambule : \begin{code}{} % Avec empattement (défaut) \renewcommand{\familydefault}{\rmdefault} % Sans empattement \renewcommand{\familydefault}{\sfdefault} % Machine à écrire \renewcommand{\familydefault}{\ttdefault} \end{code} \begin{attention}{Ordre de priorité des commandes} Les commandes globales sont exécutées en premier lors de la compilation. Elles sont donc supplantées par l'utilisation des environnements, eux-mêmes écrasés par les commandes locales comme \verb?\texsf{}?. Il faut donc bien réfléchir au résultat souhaité, ainsi qu'à l'ordre d'utilisation des commandes précédemment décrites pour y parvenir. \end{attention} Voyons maintenant un exemple pour comprendre le fonctionnement de ces nouvelles commandes : \begin{codedisplay}{L'empattement et la machine à écrire} Texte \textsf{sans empattement} ou au format \texttt{machine à écrire}. \\[\baselineskip] {\sffamily{}C'est amusant à faire surtout avec plusieurs paragraphes. \\ Il faut bien tout encadrer avec des \textrm{accolades !}} \\[\baselineskip] \begin{bfseries} \ttfamily{}Sinon, je peux aussi la jouer retro sur plusieurs paragraphes, à l'intérieur d'un environnement ! \end{bfseries} \end{codedisplay} Bien, maintenant que nous avons vu quelques spécificités quant à l'empattement du texte, passons au changement de police. \subsection*{Les packages de police} Depuis le début de ce guide, je préconise fortement d'utiliser le package \verb?lmodern? et de s'y tenir. Il existe toutefois d'autre packages qui peuvent le substituer et qui permettent donc d'utiliser de nouvelles polices sous \LaTeX{} : \verb?bookman?, \verb?chancery?, \verb?charter?, \verb?ebgaramond? \& \verb?ebgaramond-maths? (police Garamond), \verb?fourier?, \verb?mathpazo?, \verb?mathptmx? (police Times), \verb?newcent?, \verb?tgbonum?, etc. (liste non exhaustive). Les packages \verb?times? et \verb?palatino? sont \textbf{obsolètes} et sont donc déconseillés à l'usage. D'autres peuvent être utilisés, comme \verb?helvet? ou \verb?courier?, mais sans résultat pour ma part (aucun changement de police). \\ L'utilisation d'un autre package de police que \verb?lmodern? est donc encore un sujet délicat, sur lequel il faut être méfiant et faire des essais au préalable. Tu peux parfois rencontrer des bizarreries, des erreurs insoupçonnées. Mais si tu veux faire des essais, je recommande particulièrement le site suivant : \url{http://www.tug.dk/FontCatalogue/}. En quelque sorte, il s'agit d'une bibliothèque qui recense les polices accessibles sous \LaTeX{}. Attention à bien lire l'aide et les indications affichées : certaines polices ne fonctionnent qu'avec le moteur de compilation \XeLaTeX{} ! \\ Enfin, il est possible d'appeler tous ces packages localement\footnote{L'appel peut se faire aussi globalement si la commande est appelée en tout début de document.} grâce à la commande suivante : \begin{code}{} \fontfamily{}\selectfont \end{code} Quant au choix de \verb??, tu peux par exemple renseigner \verb?ptm?, ce qui est équivalent à utiliser le package \verb?mathptmx? (police Times). Une liste détaillée (mais non exhaustive) est disponible en annexes, page \pageref{annexes-code-police}. Et si tu veux plus d'explications, tu peux te rendre sur le site : \url{https://fr.overleaf.com/learn/latex/Font_typefaces}. \begin{attention}{La petite subtilité} Certaines polices ne font pas la pluie et le beau temps. Par exemple, tu peux être amené à cumuler les commandes, comme mettre du texte en gras et en italique. Jusque là, tout va bien, tu peux même le faire de deux façons : \begin{center} \verb?\textit{\textbf{test}}? \quad ou \quad \verb?\textbf{\textit{test}}? \end{center} As-tu déjà utilisé les petites majuscules ? C'est très propre et vraiment agréable à lire. Pour rappel, tu peux utiliser \verb?\textsc{Texte}? ou \verb?{\scshape{}Paragraphes}?. Toutefois, essaye maintenant : \begin{center} \verb?\textbf{\textsc{Texte}}? \quad et \quad \verb?\textsc{\textbf{Texte}}? \end{center} Ben zut alors, aucune petites majuscules avec le package \verb?lmodern?. C'est parce que cette police ne gère pas une telle configuration. Changer de police est une solution possible : le package \verb?mathptmx?(police Times) est compatible, par exemple. Fort heureusement, c'est un cas d'utilisation extrêmement rare. C'était surtout pour te faire toucher du doigt cette petite subtilité. Dans ce genre de situation, il faut mieux se résigner et faire avec le package \verb?lmodern?, pour limiter les problèmes et les complications. \end{attention} \subsection*{Utiliser une police externe à \LaTeX{}} Il n'y a apparemment qu'un seul moyen de pouvoir utiliser une police d'écriture non disponible nativement (ou via des packages) sous \LaTeX{}. Loin de moi l'idée que la police par défaut me déplaise, bien au contraire. Toutefois, quand il faut taper un rapport officiel et qu'une police spécifique de Word est imposée -- Calibri ou Cambria par exemple, Times reste disponible avec le package \verb?mathptmx? --, il n'y a pas d'autres solutions. \\ \textcolor{red!70!black}{\textbf{Cette solution fonctionne uniquement grâce à une compilation sous \XeLaTeX{}}} (ou \LuaLaTeX{}). Le résultat est à la hauteur de nos attentes : accents affichés et utilisation de toutes les autres commandes exactement de la même façon que sous \pdfLaTeX{} (mathématiques, images, tableaux\dots{}). Elle permet d'utiliser toutes les polices disponibles sur ton ordinateur, y compris des polices téléchargées et ajoutées manuellement par la suite. Pour tout faire fonctionner correctement, il faut utiliser le préambule suivant : \begin{code}{Changer de police} \documentclass[a4paper, 12pt]{report} % XeLaTeX / LuaLaTeX \usepackage{fontspec} % Pour le changement de police \setmainfont{} % Appel de la police (#17) % Par exemple, = Arial ou Cambria ou Calibri \usepackage{polyglossia} % Equivalent de babel \setdefaultlanguage{french} % Paramétrage français % Autres packages \begin{document} Lorem ipsum dolor \end{document} \end{code} \begin{attention}{\textit{Nota Bene}} La modification de la police d'écriture n'est pas recommandée dans le cas d'un document qui contient des formules. Les symboles utilisés par \LaTeX{} peuvent ne pas être (ou ne sont généralement pas) définis dans cette nouvelle police. Normalement, \LaTeX{} générera malgré tout les formules mathématiques avec la police par défaut soit Computer Modern. \end{attention} Dans le cas d'une \textcolor{orange}{\textbf{modification locale de la police}} d'écriture, il faut utiliser la commande \verb?\fontspec{}?, ce qui donne l'exemple suivant : \begin{code}{Changement local de police} \documentclass[a4paper, 12pt]{report} % XeLaTeX / LuaLaTeX \usepackage{fontspec} \setmainfont{Arial} \usepackage{polyglossia} \setdefaultlanguage{french} \begin{document} Lorem ipsum dolor {\fontspec{Cambria}nam dui ligula} nulla malesuada porttitor ! \end{document} \end{code} \begin{attention}{Quelques petits changements d'habitude\dots{}} Il faut enfin savoir qu'utiliser ce nouveau préambule n'est pas sans de légères conséquences sur des commandes usuelles : \verb?\degres{}? et \verb?\og mot \fg{}? sont définies grâce au package \verb?babel?. Tu peux décider de l'ajouter avant l'appel de \verb?polyglossia?, ce qui permet de conserver \verb?\degres{}?. Sinon, tu peux directement écrire le symbole au clavier (sous \Windows{}, \keys{\shift + $\degres{}~)_{~]}$}). Toutefois, les guillemets français sont mal définis avec ce nouveau package\dots{} \\ La seule solution consiste donc à utiliser les commandes suivantes plus génériques : \begin{code}{Guillemets français avec \verb?polyglossia?} \guillemotleft{} % Guillemet français ouvrant \guillemotright{} % Guillemet français fermant \end{code} \end{attention} \subsection*{Bilan} Nous avons donc vu : \begin{itemize}[label = \ding{213}] \item comment modifier l'empattement du texte ; \item comment utiliser un package de police sous \LaTeX{} ; \item comment utiliser une police externe à \LaTeX{}, en compilant sous \XeLaTeX{} et grâce au package \verb?fontspec?. \\ \end{itemize} Changer la police peut se révéler amusant pour certaines réalisations personnelles mais il faut passer sous \XeLaTeX{} dans le pire des cas, ce qui peut augmenter le temps de compilation -- qui reste raisonnable malgré tout, je te rassure, tout au plus de l'ordre de quelques dizaines secondes. Le format par défaut proposé depuis le début de ce guide convient tout à fait et permet de te démarquer des autres réalisations. Après tout, ne s'agit-il pas d'une marque de fabrique signée \LaTeX{} ? \section{Changer la taille de police} Si tu es amené à changer de police, tu peux aussi faire face à un autre problème : la taille du texte n'est pas automatiquement la même d'une police à une autre. Certes, il existe des commandes génériques comme \verb?\large?, \verb?\Large?, \verb?\LARGE?, \verb?\huge? ou \verb?\Huge? pour augmenter la taille du texte mais il peut arriver que ce soit totalement insuffisant. Heureusement, il y a une commande toute prête dans ce cas : \begin{code}{Changer la taille de police} Lorem ipsum dolor {\fontsize{}{}\selectfont{}nam dui ligula} nulla malesuada porttitor ! % : taille de la police (13mm, 215pt, etc.) % : espacement entre les lignes \end{code} \verb?? remplace alors (localement) la valeur par défaut de la commande \verb?\baselineskip?. Naturellement, cette commande \verb?\fontsize? s'utilise surtout pour faire un gros titre, délimité par un environnement -- \verb?center? par exemple -- pour ne pas affecter le reste du document. Et si tu ne sais pas quelle valeur choisir pour \verb??, je ne réfléchis plus personnellement et prends toujours la moitié de \verb??, arrondie si besoin. \section{Inclure des fichiers PDF} \label{fusion-pdf}Tu es pauvre ? Tu ne veux pas payer Adobe et toutes les options inutiles qu'il propose, dont la fusion de fichiers PDF ? Peu importe : \LaTeX{} sait faire du très bon boulot, gratuitement. \\ Pour inclure des fichiers PDF, il faut utiliser le package \verb?pdfpages? et utiliser la commande : \begin{code}{Inclure un fichier PDF} % Compilation sous pdfLaTeX / XeLaTeX / LuaLaTeX \includepdf[pages = debut-fin]{} \end{code} La commande insère le document \verb?? à l'endroit où la commande est appelée. Le document doit se situer dans le même dossier que le fichier \verb?.tex?. Sinon, il faut préciser le chemin complet du document. Si tu écris \verb?[pages = -]?, le document entier sera inclus. Du coup, il ne te reste plus qu'à placer cette commande autant de fois que le nombre de fichiers à fusionner et le résultat \LaTeX{} contiendra donc tes différents fichiers les uns à la suite des autres. Et si jamais tu veux mélanger les pages, tu peux renseigner l'option \verb?pages? de la manière suivante par exemple : \verb?pages = {1,3,2,4,6,5}?. Tu peux aussi te servir de cette commande pour insérer une page d'un rapport PDF dans ton propre rapport ou un tableau Excel exporté en PDF : c'est des fois plus simples que de tout recopier sous \LaTeX{}. \begin{attention}{\textit{Nota Bene}} Le paramètre \verb?? ne doit contenir ni espace ni accent. C'est le même principe que pour les images. \\ Pour rappel, la \textbf{compilation} doit se faire \textbf{uniquement} avec \pdfLaTeX{} ou \XeLaTeX{} (ou \LuaLaTeX{}). \end{attention} Il existe d'autres options, comme faire une rotation à la page (\verb?landscape?, \verb?angle = ?), ajuster automatiquement le format (\verb?fitpaper?), etc. Pour les connaître ou si tu en as besoin, je te laisse consulter la documentation du package : \url{https://www.ctan.org/pkg/pdfpages}. \\ Pour présenter un point plus technique, il est possible de réaliser des références sur un tel fichier (renvoi de pages) mais il existe une astuce pour faire en sorte que le renvoi et le numéro de page correspondent. Pour ce faire, il faut créer un compteur\footnote{Si tu es curieux, tu peux commencer à approcher la notion de compteur ici : \url{http://fr.wikibooks.org/wiki/LaTeX/Programmer_avec_LaTeX\#Compteurs}} dans le préambule de la manière suivante : \verb?\newcounter{pdfpage}?, puis procéder ainsi (utilisation de l'option \verb?pagecommand? de \verb?\includepdf?) : \begin{code}{Référence d'un fichier PDF inséré} \documentclass[a4paper, 12pt]{report} \usepackage{lmodern} \usepackage[french]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{pdfpages} % Le package \newcounter{pdfpage} % Le compteur \usepackage{hyperref} \begin{document} J'ai beaucoup de texte à écrire \dots{} % Enlever le % ci-après %\includepdf[pages = -, pagecommand = {\refstepcounter{pdfpage}\label{reference}}]{} % pagecommand : faire un peu ce qu'on veut % refstepcounter : permet le bon renvoi % label : création de la référence Je viens d'intégrer un document très important. Pour le consulter, aller à la page \pageref{reference}. \end{document} \end{code} Si cette solution fonctionne pour un document d'une page, il faut ruser pour l'appliquer sur un document plus long ou pour différents documents : \begin{code}{Référence de plusieurs fichiers PDF insérés} \documentclass[a4paper, 12pt]{report} \usepackage{lmodern} \usepackage[french]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{pdfpages} % Le package \newcounter{pdfpage} % Le compteur \usepackage{hyperref} \begin{document} %\includepdf[pages = -1, pagecommand = {\refstepcounter{pdfpage}\label{ref-debut}}]{} % Début document %\includepdf[pages = 2-12]{} % Document %\includepdf[pages = 13-, pagecommand = {\refstepcounter{pdfpage}\label{ref-fin}}]{} % Fin document Le document inséré est disponible de la page \pageref{ref-debut} à \pageref{ref-fin}. \end{document} \end{code} \begin{attention}{Numérotation des PDF insérés} Par défaut, la numérotation des pages se poursuit lors de l'inclusion de fichiers PDF avec la commande \verb?\includepdf?. Il faut donc veiller à ce que ces derniers n'en aient pas (pour éviter les incohérences) ou supprimer l'insertion du numéro de page grâce à \verb?pagecommand?. \end{attention} Cette dernière idée tombe à pic : étudions désormais la gestion des en-têtes et pieds de page ! \section{En-têtes et pieds de page} Par défaut, \LaTeX{} propose principalement trois styles pour les en-têtes et pieds de page. Ces derniers peuvent être appelés \textbf{n'importe où dans le document} grâce à la commande \verb?\pagestyle{