Après avoir compilé notre premier document, il est temps de voir nos premières commandes qui s’utilisent dans le texte. Dans ce chapitre, nous apprendrons à donner du sens à certains mots, à mettre en évidence et nous verrons un package qui nous aide à avoir des documents dans la bonne langue.
Les commandes de hiérarchisation
Nous aimerions sûrement pouvoir découper notre document en chapitres, en sections, en sous-sections. Le sectionnement d’un texte est très important et permet d’organiser des idées et de ne pas perdre le lecteur. Il nous faut alors savoir que c’est l’une des choses qui se fait le plus facilement en LaTeX.
Des commandes bien utiles
LaTeX dispose en effet de quelques commandes pour nous aider dans cette tâche. Ces commandes correspondent à plusieurs niveaux de titres (chapitres, sections, sous-sections, paragraphes…) bien qu’on ne les utilise pas toujours suivant la signification de leur nom.
Le nombre de commandes est plus ou moins long en fonction de la classe que l’on a choisi. La classe article
que nous étudions ne permet pas, par exemple, d’avoir de chapitre. Voici les commandes disponibles avec la classe article
par ordre d’importance.
Niveau | Commande | Numérotation | Poids |
---|---|---|---|
Section |
| 1 | 1 |
Sous-section |
| 1.1 | 2 |
Sous-sous-Section |
| 1.1.1 | 3 |
Paragraphe |
| 4 | |
Sous-paragraphe |
| 5 |
Les commandes que nous utiliserons le plus sont \section
et \subsection
. La numérotation, la police, la taille et l’espacement sont gérés automatiquement. C’est l’une de ses forces.
Pour utiliser ces commandes, il suffit de les placer là où on veut dans le texte en leur passant comme argument le nom qu’on veut donner à la partie. Un exemple de document serait :
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
Le texte commence par un alinéa.
\section{Une première section}
\section{Une deuxième section avec une sous-section}
\subsection{Une première sous-section}
Le texte ne commence pas par un alinéa.
\end{document}
Compilons ce code. Nous pouvons y voir la numérotation et la différence de taille.
Ici, nous voyons comment changer le dernier niveau de sectionnement numéroté.
Pour changer le dernier niveau qui est numéroté, nous utilisons dans le préambule la commande \setcounter
qui prend deux paramètres. La commande \setcounter
permet de modifier la valeur d’un compteur, son premier paramètre est le compteur à modifier, la seconde est la valeur que l’on veut lui donner.
LaTeX utilise le compteur secnumdepth
pour connaître le dernier niveau de sectionnement qui doit être numéroté. En changeant la valeur de ce compteur, on obtient alors le résultat que l’on veut. On va alors utiliser \setcounter
avec ces deux paramètres.
- Le premier sera
secnumdepth
pour profondeur de la numérotation des sections. - Le second sera le poids du dernier niveau de sectionnement à numéroter (c’est donc un chiffre entre 1 et 5 pour la classe
article
).
Ainsi, avec \setcounter{secnumdepth}{4}
, on numérote jusqu’aux paragraphes.
Nous verrons les compteurs et leur utilisation plus tard. Ici, il nous faut juste savoir qu’ils existent.
Annexes
Nous avons aussi la possibilité de créer une annexe. Pour cela, il nous faut utiliser la commande \appendix
. Toutes les commandes \section
qui seront utilisées après cette commande seront considérées comme faisant partie de l’annexe et seront donc numérotées différemment (des lettres A, B plutôt que des chiffres).
La table des matières
LaTeX nous permet de plus de construire une table des matières à partir des différentes parties introduites grâce aux commandes de sectionnement. Pour cela, il suffit d’utiliser la commande \tableofcontents
. Cette commande place la table des matières à l’endroit où elle a été utilisée (donc utilisons-la au début de notre document ou à la fin).
Pour faire apparaître la table des matières, le document doit être compilé deux fois. La première fois sert à lister les différentes parties et la deuxième à créer la table.
Ici, nous voyons comment changer le dernier niveau de sectionnement qui apparaît dans la table des matières (par défaut, c’est la sous-sous-section).
Pour changer cela nous devons utiliser la commande \setcounter
dans le préambule (comme pour changer le dernier niveau de numérotation). Cela signifie que nous allons changer la valeur d’un compteur.
Ici, ce sera la valeur du compteur tocdepth
qui correspond à la profondeur de la « Table Of Contents ». Nous allons lui donner comme valeur le poids du dernier niveau que l’on veut faire apparaître dans notre table des matières (ici, le deuxième argument de \setcounter
est donc un chiffre entre 1 et 5 pour la classe article).
Titres courts
Par défaut, le nom de partie qui apparaît dans la table des matières est le nom donné à la partie. Avec la commande \section{Un nom de section vraiment très très, mais vraiment très long}
, le nom qui apparaîtra est « Un nom de section vraiment très très, mais vraiment très long ».
Ce serait fabuleux de pouvoir mettre un titre un peu plus court dans la table des matières et de malgré tout garder le titre complet dans l’article. Non seulement la table des matières sera plus lisible, et en plus la recherche sera facilitée. Pour faire cela, il suffit de passer à la commande de sectionnement le titre plus court en option :
\section[Nom court]{Un nom de section vraiment très très, mais vraiment très long}
La variante étoilée
Il y a des cas où on peut vouloir une section et ne pas vouloir de numérotation. C’est le cas par exemple d’une section « Introduction » ou « Avant-propos ». Nous pouvons également gérer ces cas : chaque commande de sectionnement possède une variante étoilée qui ne numérote pas le titre et ne change pas la numérotation des titres de même niveaux. Par exemple, pour notre section « Avant-propos », on doit écrire ceci.
\section*{Avant-propos}
Si nous voulons supprimer la numérotation de tous les titres, il ne faut pas utiliser la variante étoilée à chaque fois. Nous verrons plus tard la manière propre de faire cela en redéfinissant la commande.
Cependant, lorsque l’on utilise la variante étoilée d’une commande de sectionnement, le titre n’apparait pas dans la table des matières. Très embêtant pour nos introductions et autres avants-propos. Pour le faire apparaître, il faut utiliser la commande \addcontentsline
après la commande étoilée. Cette commande prend trois arguments :
- le premier sera toujours
toc
pour « Table Of Contents » ; - le deuxième est le niveau de titre ;
- le troisième est le titre que l’on veut faire apparaître.
Pour faire apparaître l’introduction, on utilisera donc ce code.
\section*{Introduction}
\addcontentsline{toc}{section}{Introduction}
Finalement, un document peut ressembler à ça.
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
\tableofcontents
\section*{Introduction}
\addcontentsline{toc}{section}{Introduction}
texte de l’introduction
\section{Première section}
texte d’introduction de la première section
\subsection{Sous-section 1}
texte de la sous-section 1
\subsection{Sous-section 2}
texte de la sous-section 2
\subsection{Sous-section 3}
texte de la sous-section 3
\section{Une deuxième section avec une sous-section}
texte d’introduction de la deuxième section
\subsection{Sous-section 1}
texte de la sous-section 1
\subsection{Sous-section 2}
texte de la sous-section 2
\section*{Conclusion}
\addcontentsline{toc}{section}{Conclusion}
texte de la conclusion
\appendix % On passe aux annexes
\section{Annexe 1}
texte de l’annexe 1
\section{Annexe 2}
texte de l’annexe 2
\end{document}
Des documents français
babel, un package international
Après avoir compilé les codes précédents, il y a quelque chose que nous n’avons pas pu manquer : le titre de la table des matières est « Contents », là où nous aimerions avoir « Table des matières ». Ce n’est pas trop gênant, mais nous aimerions quand même avoir des documents français.
Pour résoudre ce problème, nous allons utiliser le package babel. Il s’agit de l’un des principaux packages de LaTeX. Il a pour rôle de gérer les langues dans les documents. Il se charge donc de traduire certains mots, de modifier les règles de typographie, et il propose même des commandes pour faciliter l’écriture dans certaines langues.
Pour charger le package babel, il faut utiliser la commande \usepackage
(comme pour tous les packages) en lui passant en option la ou les langues qui l’utilisent. Pour utiliser le français, nous utiliserons cette ligne.
\usepackage[french]{babel}
Avec l’option french
, babel ajoute automatiquement les espaces insécables là où il le faut. Nous n’avons donc pas besoin de le faire manuellement.
babel agit sur beaucoup de packages en les mettant dans la bonne langue. Pour qu’il puisse agir sur tous les packages que nous avons, il faut le charger en dernier. En fait, les packages qui doivent être chargés après babel le spécifient.
Une autre méthode est de donner le langage à utiliser en option au documentclass
. Les autres packages pourront alors détecter la langue utilisée et s’y adapter. C’est cette dernière méthode que nous allons adopter.
Le package babel offre de plus de nombreuses fonctions pour accorder notre document à la langue utilisée. Par exemple, la typographie française veut que les noms de famille soient écrits en petite capitale. babel nous donne la commande \bsc
qui prend en paramètre un texte et se charge de le mettre en petites capitales. De plus elle met ce texte dans une boite insécable ce qui veut dire que le nom ne pourra pas être coupé.
Ici, nous voyons comment gérer plusieurs langues avec babel.
Lorsque nous utilisons plusieurs langues, il faut utiliser la commande selectlanguage
en lui passant en paramètre la langue que nous voulons utiliser pour changer de langue. Cette langue sera la langue active jusqu’à la prochaine commande \selectlanguage
. La langue qui est active au début du document est celle qui avait été passé en dernier à babel (avec le code \usepackage[langueA, langueB]{babel}
, ce sera langueB
).
La coupure
Ici, nous voyons comment nous pouvons gérer la coupure à la main.
Le moteur gère les coupures en essayant de couper au mieux les mots en fin de ligne et le package babel améliore la gestion des coupures. Cependant, il arrive que le moteur ne sache pas où couper un mot. Dans ce cas, il ne choisit pas et met tout le mot sur la même ligne. Testons par exemple ce code.
\documentclass[a4paper, 12pt, french]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\begin{document} ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\end{document}
Tous les f sont sur la même ligne et ça dépasse de la marge droite. D’ailleurs, le moteur génère l’avertissement Overfull \hbox
lors de la compilation. Cet avertissement signifie que quelque chose dépasse de la boîte (ici la page).
Heureusement, cela n’arrive pas tout le temps et surtout, si cela arrive, nous avons une commande pour préciser un endroit où un mot peut être coupé. Il s’agit de la commande \-
. Il suffit de la placer là où le texte doit être coupé.
Le meilleur moyen de gérer les coupures reste quand même de laisser babel s’occuper de couper les mots comme il faut.
Des caractères supplémentaires
En outre, en français, il y a des caractères indispensables. Si nous disposons d’un clavier qui nous permet de les utiliser, tant mieux. Sinon, nous avons plusieurs commandes et babel en rajoute. Avec babel, nous avons ces commandes :
\og
et\fg
nous permettent d’obtenir les guillemets français«
et»
;\no
,\nos
,\No
et\Nos
nous permettent d’obtenir « n° » et ses variantes majuscules et plurielles ;\ier
,\iere
,\ieme
,\iers
,\ieres
et\iemes
nous permettent d’obtenir « er », « re » et autres ;\primo
,\secundo
,\tertio
et\quarto
pour « 1° », « 2° », « 3° » et « 4° » et la commande\frenchenumerate
avec un nombre en paramètre nous permet d’obtenir les autres nombres.
Puisque nous avons chargé un package pour gérer l’encodage UTF-8
, nous pouvons écrire directement ces caractères dans notre document (si notre clavier nous le permet). Cependant, dans certains cas, c’est impossible et le seul moyen d’obtenir ces caractères est d’utiliser une commande.
De plus, avec ces commandes, on a automatiquement les espaces nécessaires, ce qui n’est pas forcément le cas lorsque nous écrivons le caractère nous même. Par exemple, en écrivant \og Citation \fg
, les espaces insécables sont présents ce qui n’est pas le cas lorsque nous écrivons « Citation »
. Pour régler ce problème, il nous faut rajouter dans notre préambule, après le chargement de babel, la commande \frenchbsetup{og=«,fg=»}
qui indique que les caractères «
et »
correspondent à \fg
et à \og
. On peut alors écrire « Citation »
et même «Citation»
sans problème.
Ici, nous voyons comment écrire des lettres accentués grâce à des commandes (là encore, puisque que nous avons chargé un package pour gérer l’encodage UTF-8
nous pouvons écrire ces caractères directement dans notre document).
Nous disposons de plus de plusieurs commandes pour avoir les différents accents. Ces commandes sont à placer avant la lettre qui doit porter l’accent. Voici un tableau présentant les quelques accents les plus communs.
Résultat obtenu | Commande |
---|---|
è |
|
é |
|
ê |
|
ë |
|
ñ |
|
Gestion du titre
Il est maintenant temps de se faire une page de titre.
La commande \maketitle
LaTeX nous propose la commande \maketitle
pour faire des titres. Elle se charge de mettre en place le titre, d’écrire le nom de l’auteur, tout ça sans que nous n’ayons à nous en mêler. Cette commande est à utiliser juste après avoir écrit \begin{document}
afin d’avoir le titre en première page.
Mais comment elle fait pour connaître le nom du titre et de l’auteur la commande \maketitle
?
En fait, les éléments du titre sont définis grâce à d’autres commandes à utiliser avant la commande \maketitle
(elles peuvent être utilisées dans le préambule).
- La commande
\title
prend en paramètre le titre du document. Elle est obligatoire pour utiliser la commande\maketitle
. - La commande
\author
prend en paramètre les auteurs du document (s’il y en a plusieurs, il faut les séparer par la commande\and
). Pour ne pas avoir d’auteurs, nous pouvons ne pas utiliser la commandeauthor
. Cependant, il vaut mieux transmettre à\author
un argument vide (utiliser\author{}
) pour ne pas avoir d’avertissements. - La commande
\date
prend en paramètre la date du document. Nous pouvons lui passer ce que nous voulons. Pour avoir la date du jour, nous pouvons soit ne pas utiliser\date
, soit lui passer\today
comme argument. Pour ne pas avoir de date, il suffit de transmettre à \date un argument vide.
Nous pouvons utiliser la commande \thanks
dans les commandes \title
et \author
pour obtenir une note de bas de page (elle prend en argument obligatoire la note à afficher). Elle est surtout utilisée dans les articles pour donner des informations complémentaires telles que l’adresse courriel.
Page de titre
Nous avons maintenant vu comment mettre en page le titre. En essayant de compiler un code avec la commande \maketitle
, nous pouvons remarquer que le texte commence tout de suite après le titre. Nous pouvons changer cela et dédier une page au titre. Cela se fait grâce aux options du documentclass
:
- l’option
titlepage
permet d’avoir le titre seul sur une page ; - l’option
notitlepage
permet d’avoir le titre en haut de la première page.
Nous pouvons nous en douter, l’option par défaut pour la classe article
est l’option notitlepage
. Il ne tient qu’à nous de choisir l’autre option pour obtenir une page de titre.
Nous pouvons alors tester les deux options et observer le résultat.
\documentclass[french]{article} % Nous pourrons tester avec l’option titlepage
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\date{\today}
\author{\bsc{Karnaj} \and Zeste de Savoir}
\title{Test}
\begin{document}
\maketitle
Je suis un document dans lequel il y a un titre.
\end{document}
Ce chapitre nous aura permis d’apprendre à structurer votre document comme il faut et nous aura vu utiliser vraiment notre premier package. C’est dans ce chapitre et dans le suivant que nous verrons vraiment l’importance de la sémantique lorsqu’on utilise LaTeX.