Programmation LaTeX/Structure du document
Un livre de Wikibooks.
|
Table des matières - Généralités - Premiers pas - Structure du document - Gestion de la bibliographie - Tableaux - Images - Éléments flottants et figures - Mise en forme du texte - Choix de la police - Mise en page - Mathématiques - Gestion des gros documents - Faire des présentations - Arts et loisirs - Dessiner avec LaTeX - Créer une extension ou une classe - Programmer avec LaTeX - Annexes - Vade mecum - Conversion - Glossaire de typographie - Index - Commandes - Liens externes |
Ce cours d'instruction approfondit de manière significative le très simpliste didacticiel précédent. Le but est de produire un modèle d'article dont le style ressemblerait à celui d'une publication de chercheur. Pour réaliser cela efficacement, ce didacticiel se concentre en grande partie sur la structure de document.
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 que je commence à expliquer comment employer 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.
Sections |
[modifier] Préambule
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 possiblité 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
babelavec l'option[frenchb]; l'option[francais]est obsolète depuis la version 3.6 debabel(elle est strictement équivalente à l'optionfrenchbpour des raisons de compatibilité, mais ne devrait plus être utilisée) ; - l'extension
frenchprode Bernard Gaulle, payante, oufrenchle, gratuite mais plus restreinte ; - l'ancienne extension
frenchde Bernard Gaulle est obsolète et a été remplacée parfrenchproetfrenchle; dans les anciennes versions debabel, l'appel defrenchchargeait l'extension éponyme si elle était présente, et utilisaitbabel/frenchbsinon, on avait donc un résultat qui dépendait de l'installation ; ce n'est plus le cas maintenant,frenchest devenu un équivalent defrenchb.
Les extensions frenchle et frenchpro semblent fournir des possibilité 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].
[modifier] Entrée en matière
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-Unis,\\ 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.
[modifier] Résumé
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é 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.clsdans 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
.texappelé par un\inputdans le préambule, ou encore dans une extension ou une classe personnelle si vous en avez fait une.
[modifier] Commandes de sectionnement
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 le 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}
[modifier] La bibliographie
À 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 où que l'on déplace du texte).
- Pour plus de détails voir : Programmation LaTeX/Gestion de la bibliographie.
[modifier] Index
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 avec
\latex, puis avecmakeindex, puis à nouveau aveclatex.
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 :
makeindex test(ou bien utiliser la commandemakeindexde l'éditeur de texte) ;makeindex test.enx -o test.end;makeindex test.exx -o test.exd;makeindex test.cmx -o test.cmd.
[modifier] Notes
- ↑ on pourra à ce titre consulter la discussion babel : french, frenchb ou francais du forum fr.comp.text.tex (2 mars 2008)
- ↑ 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