%%% Copyright (C) 2015-2023 Vincent Goulet
%%%
%%% Ce fichier fait partie du projet
%%% «Rédaction avec LaTeX»
%%% https://gitlab.com/vigou3/formation-latex-ul
%%%
%%% Cette création est mise à disposition sous licence
%%% Attribution-Partage dans les mêmes conditions 4.0
%%% International de Creative Commons.
%%% https://creativecommons.org/licenses/by-sa/4.0/

\chapter{Apparence et disposition du texte}
\label{chap:apparence}

Les bonnes pratiques dictent de séparer le contenu du texte de son
apparence lorsque l'on utilise un système de mise en page comme
{\LaTeX}. Néanmoins, vous pourriez souhaiter modifier l'apparence
générale du document ou disposer le texte d'une manière particulière.
{\LaTeX} offre toute la flexibilité voulue, que ce soit pour contrôler
les attributs et la taille des polices de caractères, disposer du
texte sous forme de liste numérotée ou à puce, centrer du texte ou
créer des notes de base de page et des citations.

\section{Police de caractères}
\label{sec:apparence:police}

Par défaut, tous les documents {\LaTeX} utilisent la même police de
caractères\footnote{%
  Donald~Knuth a créé la police en même temps que {\TeX}.}, %
{\fontfamily{lmr}\selectfont Computer Modern}. Chose qui ne manque
jamais de surprendre les utilisateurs débutants: le système n'a pas
été conçu pour changer facilement la police du document!

Cela dit, il est aujourd'hui devenu assez simple d'utiliser d'autres
polices pour vos documents, surtout avec les moteurs {\TeX} modernes
comme {\XeTeX}. La \autoref{sec:trucs:polices} traite du sujet plus en
détail.

Cette section se concentre plutôt sur le changement d'\emph{attribut}
de la police du document, qu'il s'agisse de la famille (avec ou sans
empattements, à largeur fixe ou variable), de la forme (droit,
italique, penché) ou de la graisse (normal, gras). Le
\autoref{tab:apparence:police} dresse la liste des commandes de
changement d'attribut de la police.

\begin{table}
  \centering
  \caption[Commandes de changement d'attribut de la police]{%
    Commandes de changement d'attribut de la police. Les
    commandes de la deuxième colonne s'appliquent à tout le texte qui
    suit. Celles de la troisième colonne s'appliquent uniquement au
    texte en argument.}
  \label{tab:apparence:police}
  \begin{tabularx}{0.9\linewidth}{p{0.35\linewidth}Xl}
    \toprule
    \textbf{Famille} \\
    \textrm{romain} & \cmd{\rmfamily} & \cmd{\textrm}\marg{texte} \\
    \texttt{largeur fixe} & \cmd{\ttfamily} & \cmd{\texttt}\marg{texte} \\
    \textsf{sans empattements} & \cmd{\sffamily} & \cmd{\textsf}\marg{texte} \\
    \addlinespace[6pt]
    \textbf{Forme} \\
    \textup{\rmfamily droit} & \cmd{\upshape} & \cmd{\textup}\marg{texte} \\
    \textit{\rmfamily italique} & \cmd{\itshape} & \cmd{\textit}\marg{texte} \\
    \textsl{penché}$^\dagger$ & \cmd{\slshape} & \cmd{\textsl}\marg{texte} \\
    \textsc{\rmfamily petites capitales} & \cmd{\scshape} & \cmd{\textsc}\marg{texte} \\

    \addlinespace[6pt]
    \textbf{Série} \\
    \textmd{\rmfamily moyen} & \cmd{\mdseries} & \cmd{\textmd}\marg{texte} \\
    \textbf{\rmfamily gras} & \cmd{\bfseries} & \cmd{\textbf}\marg{texte} \\
    \bottomrule
  \end{tabularx} \\
  \raggedright
  \hspace*{3em}{\footnotesize $^\dagger$ diffère de l'italique selon
    la police utilisée}
\end{table}

La commande \cmd{\normalfont} permet de revenir d'un trait à la police
par défaut, soit le romain, droit de graisse moyenne.

\begin{exemple}
  \label{ex:apparence:police}
  La commande \cmd{\setsecheadstyle} de la classe \class{memoir}
  permet de modifier facilement le style des titres de section pour
  tout le document. La commande suivante placée dans le préambule
  permet d'obtenir des titres de section en gras sans empattements:
\begin{lstlisting}
\setsecheadstyle{\normalfont\sffamily\bfseries}
\end{lstlisting}
  La commande \cmd{\normalfont} au début de l'argument permet de
  réinitialiser le style des titres, question d'éviter d'éventuels
  conflits avec une configuration antérieure. %
  \qed
\end{exemple}

\section{Taille du texte}
\label{sec:apparence:taille}

Vous vous souviendrez que l'on règle la taille de base du texte au
chargement de la classe du document, tel qu'expliqué à la
\autoref{sec:bases:classes}. Les commandes du
\autoref{tab:apparence:taille} permettent néanmoins de réduire ou
d'agrandir la taille des caractères pour une section du texte. Les
commandes servent également pour la configuration de l'apparence
générale du document dans le préambule.

\begin{table}
  \centering
  \caption[Commandes de changement de la taille des caractères]{%
    Commandes de changement de la taille des caractères. Toutes
    les tailles sont relatives à celle de police de base du document.}
  \label{tab:apparence:taille}
  \begin{tabularx}{0.9\linewidth}{Xl}
    \toprule
    \cmd{\miniscule}$^\dagger$ & {\miniscule minuscule} \\
    \cmd{\tiny} & {\tiny vraiment petit} \\
    \cmd{\scriptsize} & {\scriptsize encore plus petit} \\
    \cmd{\footnotesize} & {\footnotesize plus petit} \\
    \cmd{\small} & {\small petit} \\
    \cmd{\normalsize} & {\normalsize taille normale} \\
    \cmd{\large} & {\large grand} \\
    \cmd{\Large} & {\Large plus grand} \\
    \cmd{\LARGE} & {\LARGE encore plus grand} \\
    \cmd{\huge} & {\huge énorme} \\
    \cmd{\Huge} & {\Huge encore plus énorme} \\
    \cmd{\HUGE}$^\dagger$ & {\HUGE vraiment énorme} \\
    \bottomrule
  \end{tabularx} \\
  \raggedright
  \hspace*{3em}{\footnotesize $^\dagger$ ajout de la classe
    \class{memoir}}
\end{table}

\begin{exemple}
  \label{ex:taille-du-texte}
  Les titres de sections sont généralement composés dans une taille
  supérieure à celle du texte. La commande suivante permet d'augmenter
  de deux échelons la taille des titres de
  l'\autoref{ex:apparence:police}:
\begin{lstlisting}
\setsecheadstyle{\normalfont\Large\sffamily\bfseries}
\end{lstlisting}
  \qed
\end{exemple}

\section{Italique}

L'italique est l'un des attributs de police les plus fréquemment
employés dans le texte. Il sert, notamment, à insister sur des mots, à
composer les expressions et locutions en langue étrangère ou à
détacher les titres d'{\oe}uvres du fil du texte.

Évidemment, il est possible d'obtenir de l'italique avec la commande
\cmd{\textit} du \autoref{tab:apparence:police}. Cependant, je
recommande plutôt d'utiliser une commande spécifiquement dédiée à
mettre en évidence une portion de texte:
\begin{lstlisting}
\emph`\marg{texte}'
\end{lstlisting}
Par défaut, la commande \cmd{\emph} (pour \emph{emphasis}, «emphase»)
placera \meta{texte} en italique dans du texte en romain (droit), ou
encore en romain dans du texte déjà en italique.
\begin{demo}
  \begin{texample}
\begin{lstlisting}
C'était un peu \emph{rough}
par moments.
\end{lstlisting}
    \producing
    C'était un peu \emph{rough} par moments.
  \end{texample}
  \begin{texample}
\begin{lstlisting}
Il m'a dit: «\emph{Enough
\emph{poutine} for the
week!}»
\end{lstlisting}
    \producing
    Il m'a dit: «\emph{Enough \emph{poutine} for the week!}»
  \end{texample}
\end{demo}

\tipbox{Le soulignement\index{soulignement} servait pour remplacer
  l'italique à l'ère des dactylos. C'est aujourd'hui une marque de
  typographie très rarement utilisée, voire à éviter. C'est d'ailleurs
  la raison pour laquelle il n'existe pas de commande de soulignement
  dans les classes {\LaTeX} standards.}


\section{Listes}
\label{sec:apparence:listes}

{\LaTeX} offre deux environnements principaux pour la composition de
listes ou d'énumérations:
\begin{demo}
  \begin{minipage}{0.48\linewidth}
\begin{lstlisting}
\begin{itemize}
\item `\meta{texte}'
\item `\meta{texte}'
...
\end{itemize}
\end{lstlisting}
  \end{minipage}
  \hfill
  \begin{minipage}{0.48\linewidth}
\begin{lstlisting}
\begin{enumerate}
\item `\meta{texte}'
\item `\meta{texte}'
...
\end{enumerate}
\end{lstlisting}
  \end{minipage}
\end{demo}
L'environnement \Ie{itemize} crée une liste à puce, alors que
l'environnement \Ie{enumerate} crée une énumération. Il est possible
d'imbriquer les listes les unes dans les autres, et ce, peu importe
leur type. {\LaTeX} se chargera d'adapter les marqueurs ou la
numérotation jusqu'à quatre niveaux de profondeur.

\begin{exemple}
  La liste mixte suivante résume les étapes de création d'une liste
  avec {\LaTeX}. Le texte qui a servi à la composer suit la liste.
  \begin{enumerate}
  \item Décider s'il s'agit d'une liste à puce ou d'une énumération;
    \begin{itemize}
    \item pour une liste à puce utiliser environnement \Ie{itemize};
      \begin{itemize}
      \item chaque niveau d'une liste à puce possède un marqueur
        différent;
      \end{itemize}
    \item pour une énumération utiliser environnement \Ie{enumerate};
    \end{itemize}
  \item Débuter chaque élément de la liste par la commande
    \cmdprint{\item}.
    \begin{enumerate}
    \item utiliser simplement un autre environnement \Pe{itemize} ou
      \Pe{enumerate} comme texte d'un élément pour créer des listes
      imbriquées;
    \item {\LaTeX} ajustera automatiquement les marqueurs;
    \end{enumerate}
  \item S'assurer de fermer tous les environnements dans le bon ordre
    pour retourner au texte normal.
  \end{enumerate}

  \begin{demo}
\begin{lstlisting}[emph={enumerate,itemize}]
\begin{enumerate}
\item Décider s'il s'agit d'une liste à puce ou [...]
  \begin{itemize}
  \item pour une liste à puce utiliser [...]
    \begin{itemize}
    \item chaque niveau d'une liste à puce [...]
    \end{itemize}
  \item pour une énumération utiliser [...]
  \end{itemize}
\item Débuter chaque élément de la liste par la commande
  \verb=\item=.
  \begin{enumerate}
  \item utiliser simplement un autre environnement [...]
  \item {\LaTeX} ajustera automatiquement les marqueurs;
  \end{enumerate}
\item S'assurer de fermer tous les environnements [...]
\end{enumerate}
\end{lstlisting}
  \qed
  \end{demo}
\end{exemple}

{\LaTeX} permet de configurer à peu près toutes les facettes de la
présentation des listes: marqueurs, folios, alignement, espacement entre
les éléments, etc. Cette grande flexibilité implique une certaine
complexité et la configuration des listes dépasse le cadre du présent
document. Plusieurs paquetages facilitent toutefois la configuration
des listes; je recommande à ce titre le paquetage \pkg{enumitem}
\citep{enumitem}.

\tipbox{Le mode français de \pkg{babel} remplace les marqueurs par
  défaut de l'environnement \Ie{itemize} («{\textbullet}»,
  «{\textendash}», «$\ast$» et «$.$») par le tiret cadratin
  «{\textemdash}». La documentation de \pkg{babel-french} explique
  comment restituer aux marqueurs les valeurs standards, ou comment
  choisir vos propres marqueurs.}

Il existe un troisième environnement, plus rarement utilisé, pour
composer du texte sous une forme s'apparentant à une liste.
L'environnement \Ie{description} permet d'associer des termes à une
définition ou une description pour chacun.
\begin{demo}
  \begin{texample}
\begin{lstlisting}
\begin{description}
\item[rouge] première couleur
\item[vert] deuxième couleur
\item[bleu] troisième couleur
\end{description}
\end{lstlisting}
    \producing
\begin{description}
\item[rouge] première couleur
\item[vert] deuxième couleur
\item[bleu] troisième couleur
\end{description}
  \end{texample}
\end{demo}


\section{Texte centré}
\label{sec:apparence:centering}

On obtient du texte centré avec l'environnement \Ie{center} ou à
l'aide de la commande \cmd{\centering}. L'environnement sert
principalement pour centrer un bloc de texte.
\begin{demo}
  \begin{eqxample}
\begin{lstlisting}
\begin{center}
  Centrer un mot ou une
  expression les met en
  évidence.
\end{center}
\end{lstlisting}
    \producing
\begin{center}
  Centrer un mot ou une expression
  les met en évidence.
\end{center}
  \end{eqxample}
\end{demo}
Remarquez comment le texte centré n'est pas placé en retrait des
marges gauche et droite (illustrées par les lignes verticales
ci-dessus). Lorsque le texte fait plus d'une ligne, vous pouvez forcer
des retours à la ligne avec la commande «\pixbsbs».
\begin{demo}
  \begin{eqxample}
\begin{lstlisting}
\begin{center}
  Centrer un mot \\
  ou une expression \\
  les met en évidence.
\end{center}
\end{lstlisting}
    \producing
\begin{center}
  Centrer un mot \\
  ou une expression \\
  les met en évidence.
\end{center}
  \end{eqxample}
\end{demo}

La commande \cmd{\centering}, quant à elle, centre tout le texte qui
la suit. Elle s'avère surtout utile à l'intérieur d'environnements
comme \Pe{table} ou \Pe{figure} pour centrer un tableau ou une figure
sur la page. Vous la rencontrerez dans plusieurs des exemples du
\autoref{chap:tableaux}.


\section{Citations}
\label{sec:apparence:citations}

Une citation est une reproduction d'un propos ou d'un écrit antérieur
d'un auteur. Il existe deux environnements dans {\LaTeX} pour composer
les citations.

\begin{quote}
  L'environnement \Ie{quote} est utilisé pour les citations courtes.
  Le texte est placé en retrait des marges gauche et droite. Le
  présent texte a été placé dans cet environnement.
\end{quote}

\begin{quotation}
  Ce paragraphe et les deux suivants sont plutôt composés dans
  un environnement \Ie{quotation}.

  Cet environnement sert pour les citations plus longues se comptant
  en paragraphes.

  La principale différence par rapport à l'environnement \Pe{quote},
  c'est que \Pe{quotation} prend aussi en charge les marques de
  paragraphes.
\end{quotation}


\section{Notes de bas de page}
\label{sec:apparence:notes}

Une note de bas de page --- ou tout simplement \emph{note},
puisqu'elle peut apparaitre ailleurs qu'au bas de la page --- est un
court texte qui sert à expliquer un mot ou une phrase du texte
principal. L'\emph{appel de note} désigne le signe, le chiffre ou la
lettre que l'on place après la partie à expliquer.

La commande
\begin{lstlisting}
\footnote`\marg{texte de la note}'
\end{lstlisting}
insère un appel de note à l'endroit où la commande apparait dans le
texte et affiche \meta{texte de la note} à l'endroit
approprié\footnote{%
  Au bas de la page par défaut, comme ici. La note est composée dans
  un corps plus petit et elle est séparée du texte par un trait.}. %
{\LaTeX} se charge automatiquement de la numérotation et de la
disposition des notes.

Pour éviter que l'appel de note ne soit séparé du texte à expliquer,
la commande \cmd{\footnote} doit immédiatement suivre celui-ci. La
gestion des espaces peut alors devenir délicate, surtout si l'appel de
note se trouve en fin de phrase. Je recommande de faire bon usage
du symbole «\%» pour délimiter le contenu de \cmdprint{\footnote} du
texte courant.
\begin{lstlisting}[emph=footnote]
%% note en fin de phrase
Je remercie Pierre Lasou\footnote{%
  Spécialiste en ressources documentaires.}. %
Il fut d'une grande aide dans la préparation de ...
\end{lstlisting}
\begin{lstlisting}[emph=footnote]
%% note au fil de la phrase
Je souligne que Pierre Lasou\footnote{%
  Spécialiste en ressources documentaires.} %
fut d'une grande aide dans la préparation de ...
\end{lstlisting}

Les usages en matière de numérotation et de disposition des notes
varient beaucoup d'une discipline à l'autre: numérotation consécutive
pour tout le document, notes dans la marge plutôt qu'au bas de la
page, notes rassemblées à la fin de chaque chapitre ou à la toute fin
du document, etc. Différents paquetages permettent de réaliser ce type
de disposition, notamment \pkg{footmisc} \citep{footmisc}. La classe
\class{memoir} compte également de nombreuses fonctionnalités pour la
gestion des notes; consultez le chapitre~12 de la %
\doc{memoir}{https://texdoc.net/pkg/memoir}.


\section{Texte brut et code source}
\label{sec::apparence:code}

Il est parfois utile d'afficher du texte exactement comme il a été
saisi dans un fichier, sans que {\LaTeX} n'interprète les commandes
qui s'y trouvent ou n'en modifie la disposition. C'est ainsi que j'ai
composé les nombreux extraits de code du présent document.

L'environnement \Ie{verbatim} permet de présenter du texte tel qu'il
est entré dans le code source du document.
\begin{demo}
  \begin{texample}
\begin{lstlisting}
\begin{verbatim}
Texte disposé exactement tel
qu'il est tapé et
présenté dans une police
à largeur fixe
\end{verbatim}
\end{lstlisting}
    \producing
\begin{verbatim}
Texte disposé exactement tel
qu'il est tapé et
présenté dans une police
à largeur fixe
\end{verbatim}
\end{texample}
\end{demo}
La variante \Ie{verbatim*} affiche les espaces de manière explicite en
les remplaçant par le symbole \verb*| |. C'est surtout utile pour le
code source de langages informatiques où le nombre d'espaces joue un rôle
important.

Pour afficher du texte brut ou une commande {\LaTeX} au fil du texte,
on aura recours à la commande
\cmd{\verb}. Sa syntaxe est un peu particulière:
\begin{lstlisting}
\verb`\meta{c}\meta{source}\meta{c}'
\end{lstlisting}
où \meta{c} est un symbole quelconque ne se trouvant pas dans
\meta{source} et qui sert à délimiter le début et la fin de
\meta{source}. La variante
\cmd{\verb*} affiche elle aussi les espaces.
\begin{demo}
  \begin{texample}
\begin{lstlisting}
{\LaTeX} n'interprète pas la
commande \verb=\bfseries=
lorsqu'elle est placée
dans \verb=\verb=.
\end{lstlisting}
    \producing
    {\LaTeX} n'interprète pas la
    commande \verb=\bfseries=
    lorsqu'elle est placée
    dans \verb=\verb=.
  \end{texample}
  \begin{texample}
\begin{lstlisting}
Le nombre d'espaces entre les
mots ne compte pas dans
{\LaTeX}: \verb*=a b= et
\verb*=a  b= donnent «a b».
\end{lstlisting}
    \producing
    Le nombre d'espaces entre les mots ne
    compte pas dans {\LaTeX}: \verb*=a b= et
    \verb*=a  b= donnent «a b».
  \end{texample}
\end{demo}

Pour tout document comportant une grande quantité de texte brut ou de
code source, je recommande d'employer le paquetage \pkg{listings}
\citep{listings}. La \autoref{sec:trucs:listings} approfondit le
sujet.


%%%
%%% Exercices
%%%

\section{Exercice}
\label{sec:apparence:exercices}

% \Opensolutionfile{solutions}[solutions-apparence]

% \begin{Filesave}{solutions}
% \section*{Chapitre \ref*{chap:apparence}}
% \addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:apparence}}

% \end{Filesave}

\begin{exercice}[nosol]
  \begin{enumerate}
  \item Ouvrir le fichier \fichier{exercice-complet.tex} et en
    étudier le code source, puis le compiler.
  \item Supprimer l'option \code{article} au chargement de la classe
    et compiler de nouveau le document. Observer l'effet de cette
    option de la classe \class{memoir}.
  \item Au dernier paragraphe de la première section, placer toute la
    phrase débutant par \code{«De simple dérivé»} à l'intérieur d'une
    commande \cmd{\emph} et compiler de nouveau le document.
  \item Changer la puce des listes pour le symbole \code{\$>\$} et
    compiler de nouveau le document.
  \end{enumerate}
\end{exercice}

% \Closesolutionfile{solutions}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "formation-latex-ul"
%%% TeX-engine: xetex
%%% coding: utf-8
%%% End:
