LaTeX/Structure du document

Un livre de Wikilivres.

Ce chapitre approfondit la notion de structuration d'un document abordée dans le didacticiel précédent. Le but est de vous permettre de produire un modèle d'article destiné à une publication académique.

LaTeX vous oblige pratiquement à définir la structure de votre document à l'intérieur de celui-ci. C'est tout de même une bonne chose. Parce qu'une fois que LaTeX comprend comment vous voulez organiser votre document, il prendra en charge à votre place toutes les tâches pénibles de disposition et de présentation. La séparation du contenu et de la présentation vous permet de vous concentrer sur votre travail, qui est de communiquer les résultats de vos recherches.

Avant d'expliquer les diverses commandes LaTeX, je crois qu'il serait préférable de commencer par voir à quoi ressemble le résultat final, afin que nous sachions dès le début quels seront les effets de nos actions. Jetez un coup d'œil au [tutorial2/simple.pdf] produit à partir de l'exemple de ce didacticiel. En outre, la source en LaTeX est très longue, j'emploierai donc seulement des extraits au cours de ce didacticiel. Le fichier source est disponible [tutorial2/simple.tex ici] et à la fin de cette page.

Préambule[modifier | modifier le wikicode]

Si vous vous rappelez du cours d'instruction précédent, le préambule est la partie se trouvant au tout début du fichier source LaTeX avant la commande \begin{document}. Elle contient normalement les commandes qui affectent le document entier.

% simple.tex – Un exemple d'article simple pour illustrer la structure d'un document.
\documentclass{article}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage{times}

\begin{document}
...

La première ligne est un commentaire (signalé par le symbole %). La commande de \documentclass prend un paramètre, qui est dans ce cas article, parce que c'est le type de document que nous voulons produire. Les autres classes existantes sont book, report, thesis etc. Il est également possible de créer vos propres classes, comme souvent les éditeurs de journal le font, en fournissant simplement leur propre fichier de classe qui indique à LaTeX comment composer le contenu. Mais nous nous contenterons de la classe standard d'article pour l'instant. La commande \usepackage est une commande importante qui demande à LaTeX d'utiliser quelques macro-commandes externes. Dans cet exemple, j'ai indiqué times qui signifie que LaTeX emploiera les polices postscript de type 1, qui paraissent plus jolies :).

Et enfin, le \begin{document} qui ne fait pas strictement partie du préambule, mais que je mettrai quand même ici, étant donné qu'il marque la fin du préambule et déclare comme son nom l'indique que le document commence à partir de cet endroit.

Voici une autre possibilité de commencer le document en plaçant l'option de langue dans le préambule :

% simple.tex – Un exemple d'article simple pour illustrer la structure d'un document.
\documentclass[frenchb]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}

\begin{document}
...

ainsi chaque nouvelle commande \usepackage saura automatiquement (si besoin est) qu'elle doit utiliser l'option frenchb ici plus besoin donc de rajouter l'option frenchb au paquet babel.

À titre d'information, il existe plusieurs extensions afin d'obtenir la typographie française sous LaTeX, dont certaines sont obsolètes[1] :

  • l'extension babel avec l'option [frenchb] ; l'option [francais] est strictement équivalente à l'option frenchb depuis la version 3.6 de babel (mais son utilisation avec une très ancienne distribution de LaTeX — d'avant 1997… — pourrait poser des problèmes) ;
  • l'extension frenchpro de Bernard Gaulle, payante, ou frenchle, gratuite mais plus restreinte ;
  • l'ancienne extension french de Bernard Gaulle est obsolète et a été remplacée par frenchpro et frenchle ; dans les anciennes versions de babel (avant 1997), l'appel de french chargeait l'extension de même nom si elle était présente, et utilisait babel/frenchb sinon, on avait donc un résultat qui dépendait de l'installation ; ce n'est plus le cas maintenant, french est devenu un équivalent de frenchb.

Les extensions frenchle et frenchpro semblent fournir des possibilités plus fines, notamment en ce qui concerne la gestion des guillemets (par exemple les « guillemets de suite » qui ouvrent chaque ligne d'une citation longue). Cependant, leur auteur Bernard Gaulle est mort en 2007, ce qui rend incertain la maintenance de ces extensions[2].

Bonne nouvelle ! Le paquet FrenchPro est à nouveau suivi sous le nom e-French et les modifications (il n'est plus besoin de licence) sont accessibles sur le site paquets pour Windows et Linux avec sources.

Entrée en matière[modifier | modifier le wikicode]

Au début de la plupart des documents, se trouvent des informations sur le document lui-même, telles que le titre et la date, et aussi des informations sur les auteurs, comme leur nom, leur adresse, leur adresse courriel, etc. Toutes ces informations, Latex les désigne collectivement sous le nom d'entrée en matière. Un exemple :

\title{Comment structurer un document \LaTeX{}}
\author{Andrew Roberts\\
   école d'informatique,\\
   Université de Leeds,\\
   Leeds,\\
   Royaume-Uni,\\
   LS2 1HE\\
   \texttt{andyr@comp.leeds.ac.uk}}
\date{\today}

\maketitle

La commande \title est assez simple à utiliser. Mettez simplement le titre que vous voulez entre les accolades.

La commande \author semble aussi assez facile d'emploi. Si vous disposez d'un fichier de classe d'un éditeur, ou si vous employez la classe de base d'article d'AMS (amsart), alors vous comprendrez mieux le besoin de fournir une information sur l'auteur. En attendant, vous pouvez voir comment la commande de nouvelle ligne (\\) est utilisée pour, comme ici, placer son adresse. Mon adresse courriel se trouve à l'extrémité, et la commande \texttt formate les adresses de courriel en utilisant une police de chasse fixe.

La commande de \date prend un paramètre pour indiquer la date de création du document. J'ai utilisé une commande intégrée appelée \today qui, lorsqu'elle est exécutée par Latex, est remplacée par la date du jour. Mais vous êtes libre de mettre à la place la date que vous voulez. Si les accolades sont laissées vides, alors la date est omise.

Sans \maketitle, l'entrée en matière n'apparaîtrait pas dans le document. Ainsi elle est nécessaire pour donner vos attributs d'article au document.

Les commandes \title, \author et \date définissent les attributs, la commande \maketitle provoque leur affichage dans une mise en forme standardisée.

Résumé[modifier | modifier le wikicode]

Parce que beaucoup d'articles de recherche ont un résumé, certaines classes de document disposent d'un environnement permettant de définir une partie du contenu comme étant le résumé. Celui-ci devrait apparaître dans un ordre logique, c'est-à-dire après l'entrée en matière, mais avant les sections principales du corps du document.

\begin{abstract}
   Votre résumé commence ici...
   ...
\end{abstract}

Cet environnement abstract est disponible pour les classes article et report, mais pas pour la classe book. Il est toutefois simple d'en bricoler un :

  • ouvrir le fichier report.cls dans l'éditeur de texte ;
  • dans ce fichier, rechercher la chaîne de caractères « abstract » ;
  • copier le code trouvé dans le préambule de votre fichier, ou mieux, dans un fichier .tex appelé par un \input dans le préambule, ou encore dans une extension ou une classe personnelle si vous en avez fait une.

Commandes de sectionnement[modifier | modifier le wikicode]

Les commandes pour insérer des sections sont assez intuitives. Naturellement, certaines commandes sont appropriées à différentes classes de documents. Par exemple, un livre a des chapitres mais un article n'en a pas. Voici une énumération de certaines des commandes de structure utilisées dans simple.tex.

\section{Introduction}
Cette section contient...

\section{Structure}
Cette section contient...

\subsection{Entrée en matière}
Cette sous-section contient...

\subsubsection{Information de l'article}
Cette sous-sous-section contient...

Comme vous pouvez le voir, les commandes sont assez intuitives. Notez que vous n'avez pas besoin d'indiquer les numéros de section, Latex s'occupera de cela pour vous ! En outre, pour les sections, vous n'avez pas besoin de préciser à quel bloc appartient tel contenu, en utilisant des commandes comme \begin ou \end par exemple.

Commande Niveau
\part{partie} -1
\chapter{chapitre} 0
\section{section} 1
\subsection{sous-section} 2
\subsubsection{sous-sous-section} 3
\paragraph{paragraphe} 4
\subparagraph{sous-paragraphe} 5

La numérotation des sections est réalisée automatiquement par Latex, ainsi ce n'est pas la peine de rajouter explicitement de numéro ; il suffit juste d'insérer le titre que vous voulez entre les accolades. Si vous ne voulez pas de numérotation de section, ajoutez un astérisque « * » après la commande de section, mais avant la première accolade ouvrante, par exemple :

\section*{Un titre sans numéro}

dans ce cas-là, le titre ne figure pas dans la table des matières. Pour qu'il y figure, il faut ajouter la commande \addcontentsline{toc}{niveau}{\protect\numberline{}titre}, par exemple

\section*{Préface}
\addcontentsline{toc}{section}{\protect\numberline{}Préface}

La bibliographie[modifier | modifier le wikicode]

À l'instar des références croisées, les références vers des publications externes sont gérées directement par LaTeX, ce qui permet de s'affranchir des problèmes d'étiquettes (par exemple changement de numérotation si l'on introduit une nouvelle référence ou que l'on déplace du texte).


Pour plus de détails voir : LaTeX/Gestion de la bibliographie.

Index[modifier | modifier le wikicode]

LaTeX permet de réaliser un index. Pour cela, il faut :

  • utiliser l'extension makeidx ;
  • dans le préambule, mettre la commande \makeindex ;
  • pour créer une entrée, mettre dans le texte \index{nom de l'entrée} ;
  • mettre la commande \printindex à l'endroit où l'on veut mettre l'index ;
  • compiler en tapant latex mon_fichier.tex votre fichier source;
  • latex générera en plus des fichiers habituels le fichier mon_fichier.idx ;
  • compiler ce dernier fichier avec makeindex en tapant \makeindex mon_fichier.idx ;
  • compiler une deuxième fois votre fichier source en tapant latex mon_fichier.tex;

L'index contiendra le nom de l'entrée suivi du, ou des numéros de page.

On a les possibilités suivantes :

  • pour avoir un classement alphabétique ne correspondant pas au nom de l'entrée : \index{nom de classement@nom affiché}, par exemple \index{Epee@Épée} ;
  • pour faire référence à un autre mot : \index{mot|see{autre mot}}, par exemple \index{Sabre|see{Épée}} ;
  • pour avoir un intervalle de page : on place \index{mot|(} au début de la zone et \index{mot|)} à la fin ;
  • pour une « cascade », on met un point d'exclamation, par exemple \index{Lame!Sabre}, \index{Lame!Epee@Épée}.

Si vous utilisez l'extension hyperref, les numéros de page sont des liens vers les endroits concernés.

Vous pouvez créer plusieurs index. Pour cela, utilisez l'extension index (l'extension multind est obsolète).

Pour créer un index, makeidx crée des fichiers intermédiaires avec le nom du document et les extensions .idx et .ind. Avec l'extension indexw, il faut définir de nouvelles extensions afin d'avoir plusieurs fichiers intermédiaires. Il est recommandé d'utiliser deux lettres caractéristique du nom de l'index (par exemple les deux premières), puis d'ajouter un « x » et un « d » pour avoir les deux extensions. Par ailleurs, chaque index a un nom, sa référence interne, et un titre qui sera affiché dans le document.

  • appelez l'extension index ;
  • dans le préambule, mettre les commandes \newindex{nom_de_l'index}{extensionx}{extensiond}{titre} ;
  • pour créer une entrée, mettre dans le texte \index[nom_de_l'index]{nom de l'entrée} ;
  • mettre la commande \printindex[nom_de_l'index] à l'endroit où l'on veut mettre l'index ;
  • compiler chaque index en ligne de commande, avec
    makeindex document.extensionx -o document.extensiond

On peut toujours utiliser un index général, comme à l'habitude, qui se compile normalement (par exemple avec l'interface de l'éditeur de texte).

Par exemple, pour un fichier test.tex :

\documentclass{article}

\usepackage{index}
   \makeindex % index général
   \newindex{env}{enx}{end}{Environnements}
   \newindex{ext}{exx}{exd}{Extensions}
   \newindex{cmm}{cmx}{cmd}{Commandes}
\newcommand{\commande}[1]
   {\texttt{\textbackslash #1}}
\newcommand{\indexcmm}[1]
   {\index[cmm]{#1@\commande{#1}}} % index d'une commande
 
\begin{document}
 
Une citation\index{citation} hors paragraphe
se met dans un environnement
\emph{quote}\index[env]{quote}
ou \emph{quotation}\index[env]{quotation}
 
L'extension \emph{array}\index[ext]{array}
fournit les commandes
\commande{raggedleft}\indexcmm{raggedleft}
et \commande{raggedright}\indexcmm{raggedright}.
 
\printindex % index général
\printindex[env]
\printindex[ext]
\printindex[cmm]

\end{document}

Entre la première et la deuxième compilation du fichier .tex, exécuter en ligne de commande :

  1. makeindex test (ou bien utiliser la commande makeindex de l'éditeur de texte) ;
  2. makeindex test.enx -o test.end ;
  3. makeindex test.exx -o test.exd ;
  4. makeindex test.cmx -o test.cmd.

Notes[modifier | modifier le wikicode]

  1. on pourra à ce titre consulter les discussions babel : french, frenchb ou francais et Annonce changement distribution french du forum fr.comp.text.tex (2 mars 2008)
  2. voir à ce titre les discussions french ou babel ? une expérience (11 novembre 2007) et Package french de Bernard GAULLE : au secours ! (1er janvier 2008) sur le forum fr.comp.text.tex

Glossaire[modifier | modifier le wikicode]