\chapter{Texte et mise en forme}

\label{chap_texte_anx}

\section{Changer la police d'écriture}

\label{chgt_police}Changer de police peut être un vaste débat sous \LaTeX{}. Déjà, pourquoi vouloir changer ? La police proposée ne te convient-elle pas ? Ou est-ce par habitude d'utiliser auparavant une autre police sous \verb?Word? ? 

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 (symboles $\sum$ ou $\int$, sans parler des lettres grecques, par exemple) ?

Du coup, il existe de multiples façons de changer de police sous \LaTeX{}. Dans un premier temps, de manière locale, pour pouvoir juste profiter d'un effet de style ; puis, de manière globale, donc sur tout le document. \\

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 d'un bout de texte (\textit{sans serif}) 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, comme l'équivalent du \verb?\textbf? et le \verb?\bfseries?, nous avons donc à disposition le \verb?\sffamily? et le \verb?\ttfamily?. Naturellement, il faut délimiter les paragraphes concernés avec des accolades ``\{'' et ``\}'' ou utiliser de telles commandes à l'intérieur d'un environnement (séparateur en soi).

Enfin, si tu veux faire de telles modifications sur tout le document, tu peux aussi renseigner la commande suivante dans le préambule : \begin{center} \verb?\renewcommand{\familydefault}{\sfdefault}? \end{center}

Voyons plutôt un exemple pour comprendre le fonctionnement de ces nouvelles commandes :

\begin{code}{L'empattement et la machine à écrire}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

%\renewcommand{\familydefault}{\sfdefault} % sans serif sur tout le document
%\renewcommand{\familydefault}{\ttdefault} % typewriter sur tout le document

% N.B. : les commandes locales ont la priorité sur la commande globale


\begin{document}

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 accolades !} \\[\baselineskip]

\begin{large}
\bfseries\ttfamily{}Sinon, je peux aussi la jouer retro sur \dots{} \\

\noindent{}plusieurs paragraphes, à l'intérieur d'un environnement !
\end{large}
% ATTENTION : le format "machine à écrire" ne respecte pas les marges si le texte est trop long !

\end{document}
\end{code}

Bien, maintenant que nous avons vu quelques spécificités quant à l'empattement du texte, passons au changement de police. Déjà, depuis le début de ce guide, je recommande d'utiliser le package \verb?lmodern?. Même s'il n'est pas nécessaire, il améliore le rendu et peut aussi être substitué par d'autres polices :

\begin{itemize}[label = \ding{118}]
\item \verb?times? : un équivalent au \textit{Times New Roman},

\item \verb?palatino? : une autre police,

\item \verb?helvet? : un équivalent à l'\textit{Helvetica},

\item \verb?courier? : encore de la machine à écrire.
\end{itemize}

\textcolor{Brown}{Les deux dernières possibilités n'ont rien donné d'intéressant pour ma part donc il faut aller creuser le sujet.} Mais les deux premières fonctionnent à merveille. Pour plus d'informations sur les polices disponibles par défaut, tu peux aller sur \url{http://en.wikibooks.org/wiki/LaTeX/Fonts}.

\begin{conseilbox}{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}}? ou \verb?\textbf{\textit{test}}? \end{center}

As-tu déjà utilisé les petites majuscules ? C'est très propre et vraiment agréable à lire. La commande ? \verb?\textsc{Texte}? ou \verb?{\scshape{}Paragraphes}? sont deux solutions possibles. Toutefois, essaye maintenant : \begin{center} \verb?\textbf{\textsc{Texte}}? et \verb?\textsc{\textbf{Texte}}? \end{center}

Ben zut alors, aucune petites majuscules sous \verb?lmodern?. C'est parce que cette police ne gère pas une telle configuration. Utiliser \verb?times? ou \verb?palatino? est une solution possible, mais il en existe d'autres sur Internet.

Fort heureusement, c'est un cas d'utilisation extrêmement rare. C'était surtout pour te faire toucher du doigt cette petite subtilité.
\end{conseilbox}

Autrement, il n'y a apparemment qu'un seul moyen de pouvoir \textit{véritablement} changer de police d'écriture 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 \texttt{Word} est imposée, il n'y a pas d'autres solutions !

\textcolor{BrickRed}{\textbf{Cette solution fonctionne uniquement grâce à une compilation sous \verb?XeLaTeX?}} (ou \verb?LuaLaTeX?). Le résultat est à la hauteur de nos exigences : accents affichés et utilisation de toutes les autres commandes exactement de la même façon que sous \verb?PDFLaTeX? (mathématiques, images, tableaux, \dots{}). Le code est donc le suivant, sans plus d'explication technique de ma part car je n'en sais pas plus (hormis qu'il fonctionne) :

\begin{code}{Changer de police d'écriture}
\documentclass[a4paper, 12pt]{report}

% XeLaTeX
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{xltxtra}
\setmainfont{nom_police}
% Le paramètre nom_police est un nom de police présent dans le dossier Font de Windows : Arial, Calibri, Cambria, French Script MT, ...

\usepackage{polyglossia}
\setdefaultlanguage{french}

% Autres packages : idem


\begin{document}

J'aime écrire en \LaTeX{} ! Surtout des maths : $i = 13$.

% Taper son rapport comme d'habitude

\end{document}
\end{code}

\begin{attentionbox}{\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 tes formules mathématiques avec la police par défaut soit \verb?lmodern?. \\

Enfin, si une erreur incompréhensible surgit, il faut aller sur le gestionnaire de packages \texttt{MiKTeX} (\textit{MiKTeX Package Manager}), désinstaller puis réinstaller le package \verb?fontspec?. Au moment où j'écris ces lignes et que je vérifie qu'elles fonctionnent, c'est ce que j'ai dû faire en tout cas !
\end{attentionbox}

Dans le cas d'une \textcolor{Green}{\textbf{modification locale de la police}} d'écriture, \textcolor{BrickRed}{\textbf{toujours sous \verb?XeLaTeX?,}} il faut procéder ainsi : \begin{center} \verb?texte {\fontspec{nom_police} essai} suite texte? \end{center}

Il faut toutefois savoir qu'utiliser \verb?XeLaTeX? entraîne de légères modifications sur des commandes à utiliser. Actuellement, j'ai relevé les cas suivants : 

\begin{itemize}[label = \ding{213}]
\item la commande \verb?\degres{}? ne fonctionne pas et il faut directement taper le symbole \degres{} au clavier (sous \texttt{Windows}, \keys{\shift + $\degres{}~)_{~]}$}), \\

\item les guillemets français \verb?\og? et \verb?\fg? deviennent inopérants et il faut passer par les commandes plus génériques suivantes : \verb?\guillemotleft{}? et \verb?\guillemotright{}?. \\
\end{itemize}

Enfin, le changement de police est souvent problématique car la taille du texte n'est pas automatiquement la même. Certes, il existe des commandes 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{center} \verb?\fontsize{taille1}{taille2}\selectfont{}texte? \end{center}

\noindent{}avec \verb?taille1? la taille de la police (\verb?13pt?, \verb?215pt?, \dots{} bref, ce que tu veux\footnote{Le \verb?pt? est l'unité fréquemment utilisée pour les tailles de police mais rien ne t'empêche d'en choisir une autre.}) et \verb?taille2? l'espacement entre les lignes : \verb?taille2? remplace alors la valeur par défaut de \verb?\baselineskip?.

Naturellement, cette commande s'utilise surtout pour faire des gros titres, délimités par un environnement (\verb?center? par exemple) pour ne pas affecter le reste du document. Si tu ne sais pas quoi choisir pour \verb?taille2?, je ne réfléchis plus personnellement et prends toujours la moitié de \verb?taille1? (arrondie si besoin). \\

\begin{boite}{Bilan : le changement de police sous \LaTeX{}}{Gold}
Nous avons donc vu :

\begin{itemize}[label = \ding{213}]
\item comment modifier l'empattement du texte,

\item comment utiliser quelques unes des autres polices présentes par défaut sous \LaTeX{},

\item comment changer drastiquement la police d'écriture, en compilant sous \verb?XeLaTeX?,

\item comment personnaliser la taille de la police. \\
\end{itemize}

Changer la police peut se révéler amusant pour certaines réalisations personnelles mais il faut passer sous \verb?XeLaTeX? dans le pire des cas, ce qui peut augmenter le temps de compilation\footnote{Qui reste raisonnable malgré tout, je te rassure, tout au plus de l'ordre de quelques minutes, sinon de quelques 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{} ?
\end{boite}

\section{Inclure des fichiers PDF}

\label{fusion_pdf}Tu es pauvre ? Tu ne veux pas payer \texttt{Adobe} et toutes les options inutiles qu'il propose, dont la fusion de fichiers \texttt{PDF} ? Peu importe, c'est mon cas ! Et \LaTeX{} sait faire du très bon boulot, gratuitement. \\

Pour fusionner des fichiers \texttt{PDF}, il faut utiliser le package \verb?pdfpages? et utiliser la commande : \begin{center} \verb?includepdf[pages = debut - fin]{nom_fichier.pdf}? \end{center}

Le document \verb?nom_fichier.pdf? doit être inclus à l'endroit où la ligne de code est insérée. 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{} contient donc tes différents fichiers les uns à la suite des autres.

Tu peux aussi juste t'en servir pour insérer une page d'un rapport \texttt{PDF} dans ton propre rapport ou un tableau \texttt{Excel} exporté en \texttt{PDF} : c'est des fois plus simples que de le recopier sous \LaTeX{}.

\begin{attentionbox}{\textit{Nota Bene}}
Le paramètre \verb?nom_fichier? 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 \verb?PDFLaTeX? ou \verb?XeLaTeX?.
\end{attentionbox}

Il existe d'autres options, comme faire une rotation à la page, ajuster automatiquement le format (\verb?fitpaper?), réorganisation des pages. Pour les connaître ou si tu en as besoin, je te laisse aller consulter la documentation du package. \\

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 de la manière suivante (utilisation de l'option \verb?pagecommand? de \verb?\includepdf?) :

\begin{code}{Référence des fichiers \verb?.pdf? insérés}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage{pdfpages} % Le package
\newcounter{pdfpage} % Le compteur

\usepackage[hidelinks, breaklinks]{hyperref}


\begin{document}

J'ai beaucoup de texte à écrire \dots{}

% Enlever le % ci-dessous
%\includepdf[pages = -, pagecommand = {\refstepcounter{pdfpage} \label{reference}}]{nom_fichier.pdf}

% 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 consultant, aller à la page \pageref{reference}.

% Fonctionne bien pour un document d'une page
% Sinon, mettre plusieurs \includepdf du même document :

%\includepdf[pages = -1, pagecommand = {\refstepcounter{pdfpage} \label{ref_deb}}]{nom_fichier.pdf} % 1 page
%\includepdf[pages = 2-13]{nom_fichier.pdf}
%\includepdf[pages = 13-, pagecommand = {\refstepcounter{pdfpage} \label{ref_fin}}]{nom_fichier.pdf} % 1 page

Le document important est disponible de la page \pageref{ref_deb} à \pageref{ref_fin}.

\end{document}
\end{code}

\textcolor{Red}{\textbf{Attention :}} par défaut, la numérotation des pages se poursuit lors de l'inclusion de fichiers \texttt{PDF} avec cette méthode. Il faut donc veiller à ce que ces derniers n'en aient pas \dots{} ou supprimer l'insertion du numéro de page grâce à \verb?pagecommand?. \\

Cette solution 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. Ceux-ci sont appelés dans le préambule grâce à la commande \verb?\pagestyle{style}? : \\

\begin{itemize}[label = \ding{213}]
\item le style \verb?empty? : aucune en-tête et aucun pied de page ne seront affichés. Pour utiliser ce style, il faut donc renseigner dans le préambule la commande \verb?\pagestyle{empty}?,
	
\item le style \verb?plain?, \textcolor{Brown}{\textit{style par défaut} :} seul le numéro de page est affiché, au centre du pied de page. Comme c'est le style par défaut, il n'y a aucune commande à taper. Autrement, son appel se fait grâce à la commande \verb?\pagestyle{plain}? dans le préambule,
	
\item le style \verb?headings? : les en-têtes et les pieds de page sont définis automatiquement selon la classe de document utilisée. Pour utiliser ce style, il suffit donc d'inclure la commande \verb?\pagestyle{headings}? dans le préambule. \\
\end{itemize}

Si jamais tu désires personnaliser de ta main les en-têtes et pieds de page, le package \verb?fancyhdr? est très pratique. Il faut appeler le package dans le préambule \textbf{suivi de la commande} \verb?\pagestyle{fancy}?.

Ensuite, tu peux définir les en-têtes grâce à \verb?\fancyhead[zone]{contenu}? et les pieds grâce à \verb?\fancyfoot[zone]{contenu}?. Si \verb?contenu? est totalement libre (choix de l'utilisateur), \verb?zone? est défini de la manière suivante :

\begin{center}
\begin{longtable}{C{0.075\linewidth}|p{0.5\linewidth}}
\verb?zone? & {\hspace*{\stretch{1}}Description\hspace*{\stretch{1}}} \\ \hline
\verb?L? & champ gauche pour toutes les pages \\
\verb?LE? & champ gauche pour les pages paires \\
\verb?LO? & champ gauche pour les pages impaires \\
\verb?C? & champ central pour toutes les pages \\
\verb?CE? & champ central pour les pages paires \\
\verb?CO? & champ central pour les pages impaires \\
\verb?R? & champ droit pour toutes les pages \\
\verb?RE? & champ droit pour les pages paires \\
\verb?RO? & champ droit pour les pages impaires
\end{longtable}
\end{center} 

Un moyen mnémotechnique très simple pour s'en souvenir : \verb?L?, \verb?C? et \verb?R? pour \textit{Left}, \textit{Center} et \textit{Right} (je pense que ce n'est pas le plus compliqué) ; \verb?E? et \verb?O? pour \textit{Even} et \textit{Odd}. \\

Il existe ensuite quelques commandes fort pratiques pour \verb?contenu? :

\begin{itemize}[label = \ding{213}]
\item \verb?\thepage? : affiche le numéro de la page courante,
	
\item \verb?\thesection? : affiche le numéro de la section courante,
	
\item \verb?\thechapter? avec un document de classe \verb?book? ou \verb?report? : affiche le numéro du chapitre courant,
	
\item \verb?\leftmark? : avec un document de classe \verb?article?, affiche le nom de la section courante ; avec un document de classe \verb?book? ou \verb?report?, affiche le nom du chapitre courant,
	
\item \verb?\rightmark? : avec un document de classe \verb?article?, affiche le nom de la sous-section courante ; avec un document de classe \verb?book? ou \verb?report?, affiche le nom de la section courante. \\
\end{itemize}

Enfin, tu peux définir les épaisseurs des traits de séparation grâce à la commande : \begin{center} \verb?\renewcommand{\headrulewidth}{épaisseur}? \end{center}

\noindent pour les en-têtes et : \begin{center} \verb?\renewcommand{\footrulewidth}{épaisseur}? \end{center}

\noindent pour les pieds de page. \\

Un petit exemple ne fait jamais de mal :

\begin{code}{Les en-têtes et pieds de page}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % Effacer tout

\renewcommand{\headrulewidth}{0.5pt} % Trait en-têtes
\fancyhead[LE]{Initiation à \LaTeX{}}
\fancyhead[RE]{Adrien \textsc{Bouzigues}}
\fancyhead[LO]{\leftmark}

\renewcommand{\footrulewidth}{0pt} % Pas de trait = épaisseur nulle
\fancyfoot[C]{\thepage}


\begin{document}

Bla bla bla 

\newpage

Bla bla bla % Taper son rapport comme d'habitude

\end{document}
\end{code}

\begin{attentionbox}{Une question ?}
\og Je viens d'essayer ton exemple mais l'affichage sur les pages paires et impaires ne fonctionne pas ! Comment puis-je être remboursé ? \fg{} \\

Et oui, cela ne fonctionne pas et je voulais que tu touches du doigt ce problème, au moins une fois, pour pouvoir en être conscient. 

Un document de classe \verb?report? est, par défaut, considéré pour être imprimé uniquement en recto, même si tu peux choisir recto-verso au moment de l'impression. \LaTeX{} ne fait donc pas la différence entre les pages paires et impaires.

Pour résoudre ce problème, il faut donc dire à \LaTeX{} que ton document est en recto-verso. C'est possible grâce à une option supplémentaire dans le \verb?documentclass? : \verb?twoside?, soit : \begin{center} \verb?\documentclass[a4paper, 12pt, twoside]{report}? \end{center}

Par exemple, dans le cas d'un document de classe \verb?book?, le recto-verso est compris par défaut. Cette option entraîne alors des marges différentes selon les pages paires et impaires. \`A la lecture depuis ton écran, le résultat peut paraître déstabilisant \dots{} et pourtant, si tu y réfléchis 2 minutes 15, c'est parfaitement logique si tu veux faire relier ton rapport !

Toutefois, \textit{si tu tiens à avoir une feuille centrée,} avec des marges identiques à gauche et à droite, le package \verb?geometry? est alors recommandé.
\end{attentionbox}

\vspace{\baselineskip}

Enfin, il est possible de définir un ``nom de style''. Il est ainsi possible de changer à tout moment de style de page, et ce facilement. Cette astuce permet d'éviter bien des tracas et des copier-collers, tandis qu'elle respecte un des principes de \LaTeX{} : séparer le fond et la forme. La preuve ici et maintenant :

\begin{code}{Définir complètement son style de page}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage{fancyhdr, fourier-orns} % En-têtes et pieds de pages, avec un bonus pour les en-têtes (\headrule)
\fancyhf{} % Efface tout

% Définition de notre style
\fancypagestyle{mainstyle}{
\renewcommand{\headrulewidth}{0pt} % Pas de trait en haut
\renewcommand{\footrulewidth}{0pt} % Ni en bas
\fancyhead[L]{\textsc{\nouppercase{\leftmark}}} % Mettre l'en-tête en small capitals --> obligatoire pour ne pas avoir un résultat pixellisé !
\fancyfoot[C]{\thepage}} % Fin de la définition

\pagestyle{mainstyle} % Appel de notre style

\renewcommand{\headrule}{\hrulefill\raisebox{-2.1pt}[10pt][10pt]{\quad\decofourleft\decotwo\decofourright\quad}\hrulefill} % Bonus sur le headrule


\begin{document}

Un petit essai.

\newpage

\pagestyle{empty}Alors ? Quel est le style ?

\newpage

\pagestyle{mainstyle}Et maintenant ? Qu'avons-nous ? C'est de la magie, n'est-ce pas ?

\end{document}
\end{code}

Bon, que me reste-t-il à présenter ? Ah, je sais : une petite astuce, simple et courte, histoire de ce se reposer un peu.

\section{Centrer verticalement du texte}

\`A l'heure actuelle, la seule solution simple et fonctionnelle pour centrer verticalement du texte, comme un résumé par exemple, revient à utiliser la commande \verb?\vspace*{\stretch{1}}? de la manière suivante : 

\begin{center}
\begin{minipage}{0.3\linewidth}
\begin{verbatim}
\vspace*{\stretch{1}}
Paragraphe à centrer
verticalement
\vspace*{\stretch{1}}
\end{verbatim}
\end{minipage}
\end{center}

Techniquement, la commande \verb?\vfill? existe et reste bien plus simple à écrire \dots{} sauf que, pour ma part, elle fonctionne une fois sur deux, voire jamais ! \\

S'il faut aussi \textcolor{Blue!75!Green}{centrer le texte horizontalement, l'environnement \verb?center? convient parfaitement.} La commande \verb?\hfill? (et, par la même occasion, \verb?\hspace*{\stretch{1}}?) doit être utilisée plutôt pour équilibrer l'espacement entre des blocs, comme des \verb?minipage? ou des \verb?subfigure? par exemple.

\section{Générer une bibliographie}

Comme \LaTeX{} peut vraiment tout faire\footnote{Pour le traitement de texte, j'entends. J'attends toujours l'option ménage et repassage \dots{}}, pourquoi se priver et ne pas générer facilement de magnifiques bibliographies ? \\

Même si je commence à avoir un peu d'expérience avec les bibliographies, je n'en ai pas fait énormément pour en comprendre toutes les subtilités. Si mes explications te semblent un peu confuses, les sites :

\begin{itemize}[label = \ding{213}]
\item \url{http://www.tuteurs.ens.fr/logiciels/latex/bibtex.html}

\item \url{http://www.xm1math.net/doculatex/bibtex.html}
\end{itemize}

\noindent{}sont assez complets pour saisir les bases et compléter ce qui va suivre. \\

La première étape pour ajouter une bibliographie à un document généré sous \LaTeX{} est de créer la dite bibliographie, sous forme d'une base de données. Pour cela, ouvrons notre éditeur \LaTeX{} (\texttt{Texmaker} pour ce guide) puis créons un nouveau document. Là, renseignons les lignes suivantes qui nous serviront d'essais par la suite :

\begin{code}{Un début de bibliographie}
% Renseigner le type de document pour la bibliographie ==> utiliser un "@" suivi du nom du document (parmi ceux disponibles)
@Article{Johnson,
author = {Edgar G. Johnson and Alfred O. Nier},
title = {Angular Aberrations in Sector Shaped Lenses},
journal = {Physical Review},
year = {1953},
volume = {91},
number = {1},
}
% Le premier élément est la clef (similaire à une étiquette pour les références)

% ATTENTION : il faut séparer les noms d'auteurs par "and" et non par une virgule ou un &

@Phdthesis{Zoran,
author = {Zoran Racic},
title = {\'Etude et essais du spectromètre à  plasma},
publisher = {Université Pierre et Marie Curie},
year = {1996}
}

% Pour renseigner un nom composé ou un groupe de mots dans "author", il faut doubler les accolades : author = {André {Mouche Baie}}
% Apparemment, nécessaire seulement pour les documents de type @Misc
@Misc{opensource,
author = {{Open Source Initiative}},
title = {The Open Source Definition},
howpublished = {\url{http://opensource.org/osd}},
note = {accès le 10/10/2017}
}
\end{code}

Ensuite, il faut enregistrer le fichier. Ce doit sûrement être un peu la même recette pour tous les éditeurs de texte en général. Sous \texttt{Texmaker}, il faut procéder ainsi : 

\begin{enumerate}
\item barre de menus, 

\item \verb?Fichier?,

\item \verb?Enregistrer sous?,

\item \verb?nom_fichier.bib?, comme, par exemple, \verb?biblio_type.bib? pour ma part. 
\end{enumerate}

L'extension \verb?.bib? correspond au format employé sous \LaTeX{} pour gérer une base de données bibliographique. C'est très important car, lors de la compilation, \LaTeX{} va chercher un fichier \verb?.bib?, le lire et créer la bibliographie.

\begin{conseilbox}{Le conseil personnel}
Je recommande de conserver le fichier \verb?biblio_type.bib? dans un dossier à part en tant que \textit{template} : tu n'auras pas ainsi à le créer à chaque fois mais juste à faire un copier-coller du fichier en question. \\

Ensuite, je ne vais pas m'étendre sur les diverses possibilités de renseigner une bibliographie (article, thèse, livre, site internet, \dots{}). Internet fournit suffisamment d'exemples et \texttt{Texmaker} propose des commandes à trous (dans la barre de menus, \verb?Bibliographie? puis \verb?Bibtex? puis choisir le type de document à renseigner pour la bibliographie). \\

Personnellement, je viens d'en apprendre un peu plus sur les bibliographies grâce à des explications développées dans l'ouvrage \textit{\LaTeX{} - How To}, disponible au format numérique ici même : \url{http://www.latex-howto.be/book/download_fr} (chapitre 10 pour les bibliographies). 
\end{conseilbox}

Bon, nous avons créé la bibliographie. Il faut maintenant indiquer à \LaTeX{} de la générer et de l'introduire dans le document. Pour ce faire, il faut utiliser les commandes suivantes, dans cet ordre et \textcolor{Green}{\textbf{à l'endroit où doit apparaître la bibliographie}} :

\begin{itemize}[label = \ding{213}]
\item \verb?\bibliographystyle{smfplain}? : pour générer la bibliographie avec des normes françaises. Sans le \verb?smf?, la bibliographie est générée selon des normes américaines. 

Par exemple, le \texttt{and} dans le fichier \verb?.bib? pour séparer les auteurs reste tel quel, alors qu'il est remplacé par un ``\texttt{et}'' avec les normes françaises (entre autres modifications), \\

\item \verb?\?\verb?bibliography{nom_fichier}? : pour indiquer le fichier \verb?.bib? qui contient notre bibliographie. \textit{Ici,} \verb?nom_fichier? = \verb?biblio_type?. \\
\end{itemize}

Puis vient la compilation. Il faut alors procéder de la manière suivante : 

\begin{enumerate}
\item lancer la compilation sous \verb?PDFLaTeX? (première compilation du document),

\item lancer \verb?Bibtex? (génération de la bibliographie dans des fichiers annexes ; cf. les options \texttt{Texmaker} pour connaître le raccourci clavier associé),

\item relancer \verb?PDFLaTeX? deux fois (intégration de la bibliographie et bonne implémentation des références et du sommaire),

\item afficher le résultat.
\end{enumerate}

\begin{attentionbox}{\textit{Nota Bene}}
Le schéma est le même pour une compilation avec \verb?LaTeX?. Il faut juste ne pas oublier à la fin de transformer son fichier \verb?DVI? en \verb?PS? puis de convertir le \verb?PS? en \verb?PDF?. \\

Pour gagner en efficacité et ne pas se compliquer la vie, il est préférable d'utiliser la \verb?Compilation rapide? de \texttt{Texmaker} qui prend en compte la bibliographie, soit qui comprend le terme \verb?Bib(la)tex?. \\

\textcolor{OrangeRed}{\textbf{ATTENTION :}} avec cette méthode, il est impossible de générer une bibliographie sous \verb?XeLaTeX? !
\end{attentionbox}

Maintenant, si tu as lancé la compilation, tu dois te dire que c'est nul car rien n'apparaît \dots{} et c'est normal ! \LaTeX{} ne va pas générer une bibliographie si tu n'y fais pas référence. Te souviens-tu de la clef/étiquette créée lors de la création de ta base de données \verb?.bib? ? C'est ici qu'elle entre en jeu avec la commande \verb?\cite{clef}?. Il te suffit donc de placer cette commande à l'endroit où tu souhaites faire une référence à ta bibliographie.

Et voilà, c'est tout. Il ne faut pas en savoir plus pour générer une bibliographie. Tu as donc désormais toutes les cartes en main pour t'y mettre et expérimenter.

\begin{conseilbox}{Faire fonctionner \texttt{hyperref} avec la bibliographie}
Il peut être frustrant que les liens dans la bibliographie ne soient pas coupés, ou qu'un clic sur un élément cité ne renvoie pas à sa ligne dans la bibliographie. \\

Pour ce faire, il faut charger les packages ci-après, \textbf{dans l'ordre suivant :}

\begin{verbatim}
\usepackage[nottoc, notlof, notlot]{tocbibind} 
% Pour inclure la bibliographie dans le sommaire

\usepackage[hyphens]{url} 
% Pour couper les urls dans la bibliographie
\usepackage[hidelinks, breaklinks, linktoc = all]{hyperref} 
\usepackage[hyphenbreaks]{breakurl} 
% Idem package url
\end{verbatim}
\end{conseilbox}

Du coup, pour résumer tout ce qui a été vu durant cette partie, ton fichier \verb?.tex? doit ressembler à :

\begin{code}{Bibliographie : code complet}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage[nottoc, notlof, notlot]{tocbibind} % Pour inclure la bibliographie dans le sommaire

\usepackage[hyphens]{url} % Pour couper les urls dans la bibliographie
\usepackage[hidelinks, breaklinks, linktoc = all]{hyperref} 
\usepackage[hyphenbreaks]{breakurl} % Idem package url


\begin{document}

Mon document se réfère à \cite{Johnson, Zoran} mais des réponses sont aussi disponibles sur Internet \cite{opensource}.
% Possiblités de cumuler les \cite dans une même commande

\bibliographystyle{smfplain}
% Enlever le % ci-après
%\bibliography{biblio_type}

\end{document}
\end{code}

Tout ces éléments te semblent compliqués ? C'est bien normal au début. Là encore, il faut comprendre que tu sépares le fond de la forme : tu crées une base de données bibliographique, totalement désordonnée, puis \LaTeX{} affiche uniquement les éléments auxquels tu fais référence. En parallèle, \LaTeX{} gère automatiquement la mise en forme de la bibliographie et classe les auteurs par ordre alphabétique !

C'est donc un peu compliqué au début mais c'est extrêmement puissant. Toutefois, si jamais tu n'as que 2-3 références à faire, il existe une manière plus simple de générer une bibliographie. Je te laisse reprendre le code ci-après et digérer mes commentaires :

\begin{code}{Une autre possibilité pour la bibliographie}
\documentclass[a4paper, 12pt]{report}

% LaTeX ou PDFLaTeX
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

% XeLaTeX
%\usepackage{fontspec}
%\usepackage{xunicode}
%\usepackage{xltxtra}
%\setmainfont{Calibri}
%\usepackage{polyglossia}
%\setdefaultlanguage{french}

\usepackage{enumitem, pifont} % Pour les listes à puces
% Le item par défaut, un rond, n'est pas toujours défini dans toutes les polices


\begin{document}

Notre bibliothèque propose trois livres \cite{latexpratique, texbook, latexcompanion} :

\begin{itemize}[label = \ding{213}]
\item Les livres \cite{latexpratique,latexcompanion} traitent de \LaTeX.

\item Le livre \cite{texbook} traite de \TeX{}.
\end{itemize}

% \begin{thebibliography}{affichage} : "affichage" le plus long (taille du texte) pour produire un alignement correct
% "affichage" est OPTIONNEL --> numérotation automatique par LaTeX par défaut

% Ajout d'un élément bibliographique : \bibitem[affichage]{clef} Auteur. Titre, etc.
\begin{thebibliography}{KNU90}
\bibitem{latexpratique} Christian \textsc{Rolland}. \emph{\LaTeX{} par la pratique}. O'Reilly, 1999.

\bibitem[KNU90]{texbook} Donald E. \textsc{Knuth}. \emph{The \TeX{}book}. Addison-Wesley, 1990.

\bibitem{latexcompanion} Frank \textsc{Mittelbach} et Michel \textsc{Goosens}. \emph{The \LaTeX{} Companion}. Addison-Wesley, 2004.
\end{thebibliography}

\end{document}
\end{code}

\begin{boite}{Bilan sur la bibliographie}{Gold}
Pourquoi se priver d'un tableau synthétique pour résumer ces nouvelles notions ? Comparons donc l'usage d'un fichier \verb?.bib? à l'environnement \verb?thebibliography? :

\begin{center}
\begin{longtable}{C{0.4\linewidth}|C{0.4\linewidth}}
\verb?.bib? & \verb?thebibliography? \\ \hline
Base de données \verb?.bib? & Dans le fichier \verb?.tex? \\
\textcolor{Red}{Fichier supplémentaire à gérer} & \textcolor{Green}{Dans le code} \\
\textcolor{Green}{Gestion automatique de la mise en forme} (remplissage de champs dans la base de données) & \textcolor{Red}{Mise en forme par l'utilisateur} \\
\textcolor{Green}{Classement par ordre alphabétique des auteurs} & \textcolor{Red}{Entrées bibliographiques affichées dans l'ordre de leur création} \\
\textcolor{Green}{Cohérence de la bibliographie} (affichage des références citées) & \textcolor{Red}{Affichage de toute la bibliographie créée} \\
Compilation sous \verb?LaTeX? ou \verb?PDFLaTeX?, par l'intermédiaire de \verb?Bibtex? & Tous les modes de compilation tolérés (\#\verb?XeLaTeX? \#{}changement de police) ; pas besoin de \verb?Bibtex?
\end{longtable}
\end{center}

Pour conclure, il n'y a pas de bonnes ou de mauvaises méthodes. Tout dépend uniquement de l'utilisation que tu dois en faire. \\

\textcolor{RoyalPurple}{\textit{Personnellement},} désormais, pour une courte bibliographie, je la ferai à la main, quitte à la générer avec \verb?Bibtex? initialement pour voir la mise en forme, comme c'est conçu pour.

Sinon, à partir de 4-5 ouvrages à citer, je ne réfléchirai plus et implémenterai tout sous un fichier \verb?.bib?.
\end{boite}

Allez, passons à la cerise sur le gâteau : la génération d'un index. Ce serait dommage de s'en priver !

\section{Générer un index}

\label{index}Un index est \og un outil du livre qui consiste en une liste organisée d'éléments appelés termes (mots, concepts, objets, \dots{}) jugés pertinents pour le lecteur, accompagnés de leur adresse - c'est-à-dire la place où ils sont évoqués dans l'ouvrage. Il permet au lecteur de localiser rapidement un élément dans l'ouvrage, sans être contraint de le lire intégralement. \fg{} (\textit{Wikipédia}).

Pour être un poil plus précis, l'organisation d'un index se fait dans l'ordre alphabétique. Tu conviendras que c'est quand même vachement plus pratique. \\

Pour cette fois, je ne vais pas présenter le cas minimal qui fonctionne sous \LaTeX{} car le résultat est relativement moche et la compilation demande d'utiliser \verb?MakeIndex? (comme mode de compilation, entre deux compilations sous \verb?PDFLaTeX?). 

Il vaut donc mieux charger le package \verb?imakeidx? qui permet de personnaliser l'index et même d'en gérer plusieurs. La compilation intermédiaire devient même superflue et une compilation simple sous \verb?PDFLaTeX? suffit à tout générer\footnote{Bon, ok, en vérité, comme l'atteste la zone propre à la compilation sous \texttt{Texmaker}, le package \verb?imakeidx? lance en fond le mode de compilation \verb?MakeIndex?.}. \\

\textbf{Juste après} avoir chargé le package, il faut indiquer à \LaTeX{} de préparer l'index, grâce à la commande \verb?\makeindex?, avec les options \verb?intoc? pour inclure l'index dans le sommaire et \verb?options = {-s index-style.mst}? pour le fichier de personnalisation de l'index.

Je ne vais pas entrer dans les détails concernant la personnalisation de l'index. Un exemple fonctionnel et assez joli est disponible ci-après, tandis que le site \url{http://winnt.developpez.com/tutoriels/latex-index/} explique tout très bien en détail, complété par \url{http://fr.sharelatex.com/learn/Indices}.

Toutefois, je préciserai juste que le fichier est bel et bien au format \texttt{.mst} car c'est celui qui fonctionne pour ma part. Sur Internet, le même code est utilisé mais avec un fichier \texttt{.ist} \dots{} Je ne saurai dire, à l'heure actuelle, pourquoi un cas fonctionne chez moi et pas l'autre. \\

Ensuite, il suffit de placer un mot de l'index à l'endroit souhaité dans le document avec la commande \verb?\index{mot}?. Toutefois, il faut savoir que le classement alphabétique de \verb?makeindex? ne fonctionne pas avec les accents. Il faut donc ruser avec un ``\verb?@?'', de la manière suivante : \begin{center} \verb?\index{mot_sans_accent@mot_avec_accent}? \end{center}

Il est possible de créer une sous-liste dans l'index avec un ``\verb?!?'' : \begin{center} \verb?\index{mot_principal!mot_secondaire}? \end{center}

Enfin, il faut dire à \LaTeX{} de générer l'index. Pour cela, il faut utiliser la commande \verb?\printindex? à l'endroit voulu, un peu comme pour le sommaire ou la bibliographie. Voilà, c'est tout.

\begin{conseilbox}{Bilan sur l'index}
Pour répertorier tous les sites intéressants pour générer un index, nous avons donc :

\begin{itemize}[label = \ding{213}]
\item commandes propres à l'index : \url{http://en.wikibooks.org/wiki/LaTeX/Indexing},

\item personnalisation de l'index : \url{http://winnt.developpez.com/tutoriels/latex-index/},

\item toutes les options de personnalisation : \url{http://fr.sharelatex.com/learn/Indices}.
\end{itemize}
\end{conseilbox}

Ok pour toi ? Voyons un petit exemple alors.

\begin{code}{Générer un index}
% Environnement filecontents* : évite d'avoir à conserver un fichier en plus du fichier .tex
% Index style
\begin{filecontents*}{index-style.mst}
headings_flag 1 % Autoriser une lettre majuscule comme repère

heading_prefix "\\vspace{26pt}{\\bfseries\\huge " % Mise en forme de cette lettre (en-tête) - Début du code
heading_suffix "}\\vspace{13pt}\\nopagebreak\\\n" % Fin du code

% En-têtes pour les cas particuliers
symhead_positive "Symboles"
symhead_negative "symboles"
numhead_positive "Nombres"
numhead_negative "nombres"

% Séparateur entre  "mot de l'index" & "numéro de page" (selon les niveaux)
delim_0 "\\hspace{6pt}\\dotfill\\hspace{6pt}"
delim_1 "\\hspace{5pt}\\dotfill\\hspace{5pt}"
delim_2 "\\hspace{4pt}\\dotfill\\hspace{4pt}"

% Mise en forme du numéro de page
encap_prefix "{\\color{Red}\\"
encap_infix "{"
encap_suffix "}}"
\end{filecontents*}


\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage[makeindex]{imakeidx} % Ajout de [makeindex] pour préciser la compilation avec MakeIndex
\makeindex[options = {-s index-style.mst}, intoc]
% Index par défaut sur 2 colonnes
% Autre option possible : column = nbre (1, 2, 3 ...)
% Ajout de : columnsep = distance (13pt, ...) pour gérer l'écart entre les colonnes


\begin{document}

Texte\index{Texte}

\newpage

Autre essai \index{Essai a confirmer@Essai à confirmer} et j'ajouterai aussi \index{Ajout!Ajout1} que les combinaisons sont possibles \index{Ajout!Ajout teste@Ajout testé}

\indexprologue{Ceci est mon index !} % Pour ajouter un petit texte au début de l'index
\printindex{}

\end{document}
\end{code}

Grâce au package \verb?imakeidx?, il est possible de générer plusieurs index. Il suffit juste de leur donner un nom lors du \verb?\makeindex? puis d'indiquer ce même nom lors de \verb?\index? :

\begin{code}{Générer plusieurs index}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage[makeindex]{imakeidx}
\makeindex[name = nom1, intoc]
\makeindex[name = nom2, intoc]


\begin{document}

Texte\index[nom1]{Texte} % Va dans l'index 1

\newpage

Autre essai \index[nom1]{Essai a confirmer@Essai à confirmer} et j'ajouterai aussi \index[nom2]{Ajout!Ajout1} que les combinaisons sont possibles \index[nom2]{Ajout!Ajout teste@Ajout testé}

\indexprologue{Ceci est mon index !} % Pour ajouter un petit texte au début de l'index
\printindex[nom1]{}

\printindex[nom2]{} % indexprologue valable que pour le plus proche index

\end{document}
\end{code}

Enfin, il est possible d'utiliser un index pour classer des données (liste de films, animes, jeux, pistes musicales par nom d'auteur, \dots{}). Au lieu de tenir un Excel tout moche et de te prendre la tête pour trier le résultat, tu renseignes tous tes éléments et \LaTeX{} se charge de faire le classement. 

Il y a une toute petite astuce à connaître : supprimer le numéro de page. En effet, ici, tous nos références doivent être affichées sur une page bidon. Dans le cas contraire, l'index ne sera pas généré (ou sera vide). Toutefois, nous n'avons pas besoin des numéros de page. Il faut donc procéder ainsi :

\begin{code}{Index sans les numéros de page}
\documentclass[a4paper, 12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{lmodern}

\usepackage[makeindex]{imakeidx}
\makeindex[intoc]


\begin{document}

Texte bidon\index{Film 1}\index{Film 2}

\newpage

% \begingroup [...] \endgroup : permet d'appliquer des modifications uniquement  à l'intérieur des deux balises --> aucune influence sur le reste du document
\begingroup
\def\hyperpage#1{} % Suppression du numéro de page dans l'index

\printindex{}

\endgroup

\end{document}
\end{code}