« LaTeX/Structure du document » : différence entre les versions

Contenu supprimé Contenu ajouté
m Révocation des modifications de 82.230.126.134 (discussion) vers la dernière version de Rayj
Yes
Balise : blanchiment
Ligne 1 :
OKOKOKO
<noinclude>{{NavTitre|book={{BASEPAGENAME}}|prev=À l'aide !|next=Gestion de la bibliographie}}</noinclude>
<noinclude>{{LaTeX/Navigation}}</noinclude>
 
Ce cours d'instruction approfondit de manière significative le très simpliste [[Programmation LaTeX/Premiers pas|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.
 
== 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 <code>\begin{document}</code>. Elle contient normalement les commandes qui affectent le document entier.
<source lang="latex">
% 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}
...
</source>
La première ligne est un commentaire (signalé par le symbole <code>%</code>). La commande de <code>\documentclass</code> 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 <code>\usepackage</code> est une commande importante qui demande à LaTeX d'utiliser quelques macro-commandes externes. Dans cet exemple, j'ai indiqué <code>times</code> qui signifie que LaTeX emploiera les polices postscript de type 1, qui paraissent plus jolies :).
 
Et enfin, le <code>\begin{document}</code> 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.
 
<span id="babel6">Voici</span> une autre possibilité de commencer le document en plaçant l'option de langue dans le préambule :
<source lang="latex">
% simple.tex – Un exemple d'article simple pour illustrer la structure d'un document.
\documentclass[frenchb]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}
 
\begin{document}
...
</source>
ainsi chaque nouvelle commande <code>\usepackage</code> saura automatiquement (si besoin est) qu'elle doit utiliser l'option <code>frenchb</code>
ici plus besoin donc de rajouter l'option <code>frenchb</code> au paquet <code>babel</code>.
 
<span id="frenchb2">À</span> titre d'information, il existe plusieurs extensions afin d'obtenir la typographie française sous LaTeX, dont certaines sont obsolètes<ref>on pourra à ce titre consulter les discussions [http://groups.google.com/group/fr.comp.text.tex/browse_thread/thread/44a3e70f2741f479/2f1c0b2fb1d4ccb8#2f1c0b2fb1d4ccb8 babel : french, frenchb ou francais] et [http://groups.google.com/group/fr.comp.text.tex/msg/b0f3975a9eb4449f Annonce changement distribution french] du forum [news:fr.comp.text.tex fr.comp.text.tex] (2 mars 2008)</ref> :
* l'extension <code>babel</code> avec l'option <code>[frenchb]</code> ; l'option <code id="francais1">[francais]</code> est strictement équivalente à l'option <code>frenchb</code> depuis la version 3.6 de <code>babel</code> (mais son utilisation avec une très ancienne distribution de LaTeX — d'avant 1997… — pourrait poser des problèmes) ;
* l'extension <code id="frenchpro1">frenchpro</code> de Bernard <font style="font-variant:small-caps">Gaulle</font>, payante, ou <code id="frenchle1">frenchle</code>, gratuite mais plus restreinte ;
* l'ancienne extension <code id="french1">french</code> de Bernard <font style="font-variant:small-caps">Gaulle</font> est obsolète et a été remplacée par <code>frenchpro</code> et <code>frenchle</code> ; dans les anciennes versions de <code>babel</code> (avant 1997), l'appel de <code>french</code> chargeait l'extension de même nom si elle était présente, et utilisait <code>babel/frenchb</code> sinon, on avait donc un résultat qui dépendait de l'installation ; ce n'est plus le cas maintenant, <code>french</code> est devenu un équivalent de <code>frenchb</code>.
 
Les extensions <code>frenchle</code> et <code>frenchpro</code> 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 <font style="font-variant:small-caps">Gaulle</font> est mort en 2007, ce qui rend incertain la maintenance de ces extensions<ref>voir à ce titre les discussions [http://groups.google.com/group/fr.comp.text.tex/browse_thread/thread/380486bbb082e6a9 french ou babel ? une expérience] (11 novembre 2007) et [http://groups.google.com/group/fr.comp.text.tex/browse_thread/thread/5a251332112ca394 Package french de Bernard GAULLE : au secours !] (1<sup>er</sup> janvier 2008) sur le forum [news:fr.comp.text.tex fr.comp.text.tex] </ref>.
 
Bonne nouvelle ! Le paquet FrenchPro est &agrave; nouveau suivi sous le nom e-French
et les modifications (il n'est plus besoin de licence) sont accessible sur le site [http://www.eFrench.org paquets pour Windows et Linux avec sources].
 
== 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 :
<source lang="latex">
\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
</source>
 
La commande <code>\title</code> est assez simple à utiliser. Mettez simplement le titre que vous voulez entre les accolades.
 
La commande <code>\author</code> 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 (<code>amsart</code>), alors vous comprendrez mieux le besoin de fournir une information sur l'auteur. En attendant, vous pouvez voir comment la commande de nouvelle ligne (<code>\\</code>) est utilisée pour, comme ici, placer son adresse. Mon adresse courriel se trouve à l'extrémité, et la commande <code>\texttt</code> formate les adresses de courriel en utilisant une police de chasse fixe.
 
La commande de <code>\date</code> prend un paramètre pour indiquer la date de création du document. J'ai utilisé une commande intégrée appelée <code>\today</code> 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 <code>\maketitle</code>, 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 <code>\title</code>, <code>\author</code> et <code>\date</code> définissent les attributs, la commande <code>\maketitle</code> provoque leur affichage dans une mise en forme standardisée.
 
== 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.
<source lang="latex">
\begin{abstract}
Votre résumé commence ici...
...
\end{abstract}
</source>
 
Cet environnement <code>abstract</code> est disponible pour les classes <code>article</code> et <code>report</code>, mais ''pas'' pour la classe <code>book</code>. Il est toutefois simple d'en bricoler un :
* ouvrir le fichier <code>report.cls</code> 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 <code>.tex</code> appelé par un <code>\input</code> dans le préambule, ou encore dans une extension ou une classe personnelle si vous en avez fait une.
 
== 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''.
<source lang="latex">
\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...
</source>
 
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 <tt>\begin</tt > ou <tt>\end</tt> par exemple.
 
{| border="1" frame="box" rules="groups" frame="box" rules="groups"
<!--<colgroup></colgroup>
<colgroup></colgroup>-->! Commande
! Niveau
|-
| <code>\part{''partie''}</code>
| -1
|-
| <code>\chapter{''chapitre''}</code>
| 0
|-
| <code>\section{''section''}</code>
| 1
|-
| <code>\subsection{''sous-section''}</code>
| 2
|-
| <code>\subsubsection{''sous-sous-section''}</code>
| 3
|-
| <code>\paragraph{''paragraphe''}</code>
| 4
|-
| <code>\subparagraph{''sous-paragraphe''}</code>
| 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 :
<source lang="latex">
\section*{Un titre sans numéro}
</source>
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 <code>\addcontentsline{toc}{''niveau''}{\protect\numberline{}''titre''}</code>, par exemple
<source lang="latex">
\section*{Préface}
\addcontentsline{toc}{section}{\protect\numberline{}Préface}
</source>
 
== 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).
 
{{loupe|../Gestion de la bibliographie}}
 
== Index ==
 
LaTeX permet de réaliser un index. Pour cela, il faut :
* utiliser l'extension <code>makeidx</code> ;
* dans le préambule, mettre la commande <code>\makeindex</code> ;
* pour créer une entrée, mettre dans le texte <code>\index{''nom de l'entrée''}</code> ;
* mettre la commande <code>\printindex</code> à l'endroit où l'on veut mettre l'index ;
* compiler en tapant <code>\latex mon_fichier.tex</code> votre fichier source;
* <code>\latex</code> générera en plus des fichiers habituels le fichier <code>mon_fichier.idx</code> ;
* compiler ce dernier fichier avec <code>makeindex</code> en tapant <code>\makeindex mon_fichier.idx</code> ;
* compiler une deuxième fois votre fichier source en tapant <code>\latex mon_fichier.tex</code>;
 
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 : <code>\index{''nom de classement''@''nom affiché''}</code>, par exemple <code>\index{Epee@Épée}</code> ;
* pour faire référence à un autre mot : <code>\index{''mot''|see{''autre mot''}}</code>, par exemple <code>\index{Sabre|see{Épée}}</code> ;
* pour avoir un intervalle de page : on place <code>\index{''mot''|(}</code> au début de la zone et <code>\index{''mot''|)}</code> à la fin ;
* pour une « cascade », on met un point d'exclamation, par exemple <code>\index{Lame!Sabre}</code>, <code>\index{Lame!Epee@Épée}</code>.
 
Si vous utilisez l'extension <code>hyperref</code>, les numéros de page sont des liens vers les endroits concernés.
 
Vous pouvez créer plusieurs index. Pour cela, utilisez l'extension <code>index</code> (l'extension <code>multind</code> est obsolète).
 
Pour créer un index, <code>makeidx</code> crée des fichiers intermédiaires avec le nom du document et les extensions <code>.idx</code> et <code>.ind</code>.
Avec l'extension <code>indexw</code>, 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 <code>index</code> ;
* dans le préambule, mettre les commandes <code>\newindex{''nom_de_l'index''}{''extension''x}{''extension''d}{''titre''}</code> ;
* pour créer une entrée, mettre dans le texte <code>\index[''nom_de_l'index'']{''nom de l'entrée''}</code> ;
* mettre la commande <code>\printindex[''nom_de_l'index'']</code> à l'endroit où l'on veut mettre l'index ;
* compiler chaque index en ligne de commande, avec<br /><code>\makeindex ''document''.''extension''x -o ''document''.''extension''d</code>
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 <code>test.tex</code> :
<source lang="latex">
\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}
</source>
Entre la première et la deuxième compilation du fichier <code>.tex</code>, exécuter en ligne de commande :
# <code>makeindex test</code> (ou bien utiliser la commande <code>makeindex</code> de l'éditeur de texte) ;
# <code>makeindex test.enx -o test.end</code> ;
# <code>makeindex test.exx -o test.exd</code> ;
# <code>makeindex test.cmx -o test.cmd</code>.
 
== Notes ==
 
<references />
 
== Glossaire ==
 
[[Catégorie:LaTeX (livre)|Structure du document]]