Première partie : Premiers pas avec LaTeX▲
« Les Sabins [...] commencerent la bataille, qui fut aspre & dura longuement »
Plutarque, Romulus, XXVII, trad. par Jacques AMYOT
2. Chapitre 2 - Commencer avec XeLaTeX▲
Nous supposons que vous avez installé LaTeX (☞ Annexe AAnnexe A - Installer LaTeX) et un éditeur de texte (☞ Annexe BAnnexe B - Quelques logiciels pour travailler avec LaTeX) spécialisé en LaTeX. Voyez en annexe.
La première chose à faire est de vérifier que ce logiciel de traitement de texte enregistre bien en UTF-8 (23) . Nous reviendrons plus loin (☞ Saisir des textes en caractères non latinsSaisir des textes en caractères non latins) sur l'intérêt d'un tel encodage, sachez simplement qu'il permet d'utiliser des signes non latins (24) .
2-A. Un premier document▲
Dans votre éditeur de texte, frappez le code suivant(25) puis cliquez sur le bouton de compilation avec XeLaTeX(26) :
Si vous êtes sous Mac, les caractères nécessaires à l'utilisation de LaTeX ne sont pas visibles directement sur votre clavier. Nous avons listé en annexe la manière de les frapper (☞ Les caractères LaTeX sous Mac Os XLes caractères LaTeX sous Mac Os X).
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
\documentclass
[12pt,a4paper]{book}
\usepackage
{fontspec}
\usepackage
{xunicode}
\usepackage
{polyglossia}
\setmainlanguage
{french}
\begin
{document}
\title
{Un titre d'
ouvrage}
\author
{Le nom de son auteur}
\maketitle
Lorem ipsum dolor sit amet, consectetuer adipiscing elit ?
Morbi commodo ipsum ; sed pharetra gravida !
Nullam sit amet enim. Suspendisse id : velit vitae ligula.
Aliquam erat volutpat.
Sed quis velit. Nulla facilisi. Nulla libero.
Quisque facilisis erat a dui.
Nam malesuada ornare dolor.
Cras gravida, diam sit amet rhoncus ornare,
erat elit consectetuer erat, id egestas pede nibh eget odio.
% La fin du document
\end
{document}
Regardez le PDF obtenu : afin de comprendre les principes de base de LaTeX nous allons lire le code que vous avez copié et le commenter ligne par ligne.
2-B. Structure d'un document LaTeX▲
2-B-a. La classe du document▲
La première ligne \documentclass[12pt]{book} déclare la classe du document, ici book. Une classe correspond à un choix éditorial - mise en page et organisation générale du document. Le choix de la classe influence entre autres :
- le nombre de niveaux de titre disponibles ;
- les marges appliquées ;
- les en-têtes et pieds de page.
Il existe en standard plusieurs classes de documents : citons book, pour rédiger un livre ; article pour un article (si, si !) ; beamer pour une présentation sous forme de diapositives à projeter. Dans cet ouvrage, nous aborderons essentiellement les deux premières, nous ferons également une brève présentation de beamer (☞ Chapitre 21Chapitre 21 - Présentations avec LaTeX : Beamer).
Tout document LaTeX doit commencer par une déclaration de classe, avant toutes autres lignes. La syntaxe est :
\documentclass
[⟨options⟩]{⟨classe⟩}
Dans la suite de ce livre, tout texte situé entre crochets (⟨ainsi⟩), doit être remplacé dans votre fichier .tex par une valeur textuelle.
Les options viennent spécifier certaines propriétés de la classe. Dans notre exemple, nous précisons que la taille de la police du texte courant doit être de 12 pt et que le format du papier est A4. Vous pouvez indiquer plusieurs options, en les séparant par des virgules.
Voici quelques options disponibles et utiles en sciences humaines :
10pt | pour une police de base en 10 pt. |
11pt | pour une police de base en 11 pt. |
12pt | pour une police de base en 12 pt. |
onecolumn | pour un texte sur une seule colonne. C'est le cas par défaut sur les classes citées. |
twocolumn | pour un texte sur deux colonnes. |
oneside | pour une impression en recto seulement. |
twoside | pour une impression en recto verso(27). |
Nous en préciserons d'autres au fur et à mesure de l'ouvrage, lorsque les notions requises auront été abordées.
2-B-b. L'appel aux packages▲
Voyons les trois lignes suivantes :
3.
4.
\usepackage
{fontspec}
\usepackage
{xunicode}
\usepackage
{polyglossia}
Il s'agit, comme vous auriez pu le deviner, d'appel à des packages(28). Un package est un ensemble de fichiers qui ajoutent des fonctionnalités à LaTeX, c'est l'équivalent d'un plugin sous Firefox.
Le premier package est fontspec. Il est utile à XeLaTeX pour une typographie avancée, notamment pour disposer d'accents dans le document PDF produit.
Le second package est xunicode. Il permet de gérer l'Unicode, autrement appelé UTF-8(29). Il nous permet d'utiliser des caractères non latins (☞ Saisir des textes en caractères non latinsSaisir des textes en caractères non latins) dans le document .tex.
On trouve sur Internet de la documentation expliquant qu'il faut, pour insérer un « é », frapper \'{}, et qui fournit une liste de commandes de caractères accentués.
Ceci était vrai fut un temps. Il est depuis longtemps inutile d'apprendre ces commandes : vous pouvez tranquillement frapper vos lettres accentuées de manière « normale ».
Le troisième, polyglossia, permet de gérer facilement un document multilingue (☞ Chapitre 4Chapitre 4 - Gérer les langues avec Xunicode et Polyglossia) et les changements typographiques qu'un tel document implique.
Ces trois packages sont propres à XeLaTeX : ils ne fonctionnent pas (☞ TeX, LaTeX, XeTeX et XeLaTeX : points communs et différencesTeX, LaTeX, XeTeX et XeLaTeX : points communs et différences) avec LaTeX.
Certains packages peuvent recevoir des options qui modifieront leur comportement standard. La syntaxe est alors
\usepackage
[⟨options⟩]{⟨package⟩}
Tout au long de cet ouvrage, nous aborderons divers packages.
Dans la suite de ce livre, chaque fois que nous décrivons les fonctionnalités d'un package, nous supposons
que le package a été chargé au préalable dans le préambule par la commande \usepackage{⟨package⟩}.
Lorsque nous parlons d'un package, nous renvoyons souvent à son manuel. Il existe une façon très simple de trouver le manuel d'un package en passant par le terminal : nous expliquons en annexe comment faire (☞ Manuels des packagesManuels des packages).
2-B-c. Le français, langue par défaut▲
Tout de suite après, la ligne \setmainlanguage{french} indique que nous utilisons comme langue principale du document le français (☞ Chapitre 4Chapitre 4 - Gérer les langues avec Xunicode et Polyglossia), et que le compositeur de texte devra donc prendre en compte la typographie française.
Cette ligne n'est compréhensible par le compilateur que parce que nous avons chargé polyglossia au préalable.
Vous entendrez peut-être parler du package babel. Il est très souvent utilisé à la place de polyglossia, notamment parce qu'il est plus ancien. Toutefois, nous avons choisi pour notre part de nous limiter à polyglossia, puisque c'est lui que nous avons utilisé pour nos travaux et qu'il possède plus de fonctionnalités, par exemple pour les langues notées dans un alphabet non latin.
Vous trouverez aisément des informations à propos de babel sur Internet.
2-B-d. Le corps du document▲
Tout ce que nous avons vu jusqu'à présent, avant \begin{document}, fait partie de ce que l'on appelle le préambule du document. Ce sont des informations qui n'apparaissent pas dans le document final, mais qui sont utiles à sa composition, autrement dit des métadonnées. Tous les packages que vous souhaitez utiliser sont à appeler dans le préambule.
Tout ce qui se trouve entre la ligne \begin{document} et \end{document} constitue le corps du document, le contenu proprement dit de votre travail.
Enfin, rien de ce qui se trouve après \end{document} n'est analysé par le compilateur. Vous pouvez donc y mettre ce que vous voulez, cependant nous ne vous le conseillons pas.
2-B-e. Titre, auteur et date : la notion de commande▲
9.
10.
11.
\title
{Un titre d'
ouvrage}
\author
{Le nom de son auteur}
\date
{Une date}
\maketitle
Les trois premières de ces lignes définissent respectivement le titre (\title), l'auteur (\author) et la date (\date) du travail. En ce qui concerne cette dernière, ne pas l'indiquer revient à indiquer celle du jour de la compilation, et il faut indiquer \date{} pour qu'aucune date n'apparaisse.
La dernière ligne affiche ces informations. Si votre document est de classe book, alors le compilateur les dispose sur une page à part. S'il est de classe article, il les affiche sans provoquer de saut de page.
On peut déroger à cette règle en passant une option à l'appel de classe (☞ La classe du documentLa classe du document).
notitlepage | pour ne pas avoir de page de titre spécifique. |
titlepage | pour avoir une page de titre spécifique. |
Nous pouvons maintenant définir la notion de commande. Une commande est un bout de code qui est interprété par le compilateur pour effectuer une suite d'opérations, c'est un raccourci d'écriture. Ici la commande \maketitle affiche les informations telles que le titre, la date et l'auteur du travail, informations que le compilateur a apprises grâce aux commandes utilisées au préalable.
Une commande peut prendre des arguments, certains facultatifs, d'autres obligatoires. Ces arguments modifient son comportement. Une commande s'appelle avec la syntaxe :
\nom
[⟨opt1⟩][⟨...⟩][⟨optn⟩]{⟨obl1⟩}{⟨...⟩}{⟨obln⟩}
Entre crochets sont indiqués les arguments optionnels, entre accolades les arguments obligatoires. Ces arguments peuvent eux-mêmes contenir des commandes.
L'ordre des arguments dépend de chaque commande, et les arguments optionnels ne sont pas systématiquement avant les arguments obligatoires : ils peuvent être après ou s'intercaler entre. Notez que certaines commandes ne prennent pas d'argument : c'est le cas ici de \maketitle.
À chaque crochet ou accolade ouverts doit correspondre un crochet ou accolade fermés, faute de quoi vous risquez de provoquer une erreur de compilation.
La grande force de LaTeX est justement l'utilisation de commandes afin d'éviter la répétition des tâches fréquentes. C'est pourquoi nous apprendrons à définir nos propres commandes (☞ Chapitre 7Chapitre 7 - Mettre en sens (3) : créer ses propres commandes).
2-B-f. Le corps du texte : la manière de rédiger▲
Analyse de notre exemple
Regardez maintenant les lignes suivantes et leur résultat à la compilation.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit ?
Morbi commodo ; ipsum sed pharetra gravida !
Nullam sit amet enim. Suspendisse id : velit vitae ligula.
Aliquam erat volutpat.
Sed quis velit. Nulla facilisi. Nulla libero.
Quisque facilisis erat a dui.
Nam malesuada ornare dolor.
Cras gravida, diam sit amet rhoncus ornare,
erat elit consectetuer erat, id egestas pede nibh eget odio.
Nous pouvons constater plusieurs choses.
- Une ligne vide produit un changement de paragraphe. Plusieurs lignes vides produisent un seul changement de paragraphe.
- Un retour à la ligne en revanche se comporte comme une espace(30). C'est une grande différence avec les logiciels WYSIWYG, qui traduisent automatiquement un retour à la ligne par un saut de paragraphe.
- Plusieurs espaces à la suite produisent une seule espace.
Vous connaissez donc les règles de base de la rédaction d'un texte en LaTeX.
Allons plus loin
Nous l'avons dit, LaTeX produit une mise en page et une typographie plus correctes qu'un logiciel de type WYSIWYG. Il est cependant nécessaire de lui fournir un code correct, afin qu'il puisse déterminer comment typographier.
LaTeX produit automatiquement une espace fine devant les signes de ponctuation double, !:;? principalement, comme il se doit en bonne typographie française(31). Toutefois, nous recommandons d'insérer des espaces dans le fichier .tex avant ces signes de ponctuation doubles, pour le confort de lecture.
Les espaces avant les signes de ponctuation doubles sont une spécificité de la typographie française. Elles ne sont généralement pas présentes dans les autres langues. C'est pourquoi, si vous écrivez dans une autre langue que celle de Molière, il ne faut pas mettre ces espaces. À vous donc de choisir si vous les mettez ou non dans votre fichier source, sachant que LaTeX les insérera pour vous le cas échéant, mais ne les supprimera pas dans les langues autres que le français.
En revanche il est obligatoire de mettre une espace après chaque signe de ponctuation. Pour ce qui est des points de suspension, il est mieux de ne pas frapper trois points à la suite, mais d'utiliser la commande \ldots qui espacera correctement les points(32).
En ce qui concerne les guillemets, une partie sera consacrée plus tard à l'art et la manière de faire des citations (☞ Citation dans le corps du texteCitation dans le corps du texte) en LaTeX. Nous n'en parlons donc pas maintenant.
Prêtons attention à certaines lettres ligaturées comme ? et æ. À la différence de la plupart des traitements de texte, LaTeX ne remplace pas automatiquement les suites oe et ae par ? ou æ. Il faut donc frapper soi-même ces caractères, ou configurer son éditeur pour qu'il effectue ce remplacement.
Signalons également trois types de tirets :
- - qui produit un tiret simple (-), utilisé pour les mots composés ;
- -- qui produit un tiret demi-cadratin (-), en théorie à utiliser pour séparer une plage de nombres ;
- --- qui produit un tiret cadratin (-), pour des incises(33).
Enfin, il est parfois utile d'insérer une espace insécable, pour éviter que deux mots se trouvent séparés par un retour à la ligne, par exemple entre un nom de souverain et son numéro de règne : « Jean XXIII ». L'espace insécable est produite par le caractère ~.
Par ailleurs, comme vous avez pu le constater, LaTeX interprète de manière spécifique un certain nombre de caractères : \{}~, à quoi nous ajoutons %_&$#^(34).
Comment faire si nous désirons afficher un de ces caractères ? Il faut les faire précéder du caractère \. Ainsi pour insérer le caractère %, il faut écrire \%.
Trois exceptions toutefois :
- \ qui s'insère avec la commande \textbackslash ;
- ~ qui s'insère avec la commande \textasciitilde ;
- ^ qui s'insère avec la commande \textasciicircum.
2-B-g. Un commentaire▲
La ligne suivante est :
%La fin du document
Il existe en LaTeX une règle simple : tout ce qui se trouve à droite d'un signe % est un commentaire. C'est-à-dire qu'il n'est pas interprété par le compilateur et n'apparaît donc pas dans le document final.
Nous conseillons de se servir des commentaires pour indiquer les grandes structures du document et pour commenter les commandes que vous créez vous-même (☞ Chapitre 7Chapitre 7 - Mettre en sens (3) : créer ses propres commandes).
Vous pouvez aussi vous en servir, par exemple, pour faire un commentaire à usage personnel ligne à ligne d'un texte que vous traduisez.
En revanche, nous vous déconseillons de l'utiliser pour des notes personnelles lors de la rédaction. Nous vous indiquerons plus loin comment définir une commande personnalisée afin de générer un fichier qui les affiche, pour une relecture, et une autre qui les masque, pour le document final (☞ Création d'une commande personnaliséeCréation d'une commande personnalisée).
2-B-h. La notion d'environnement▲
Nous avons vu jusqu'à maintenant les notions de package, préambule, commande.
Il nous reste à en définir une dernière : celle d'environnement.
Un environnement est une portion de document ayant une signification spécifique et qui par conséquent subit un traitement spécifique. Par exemple, pour indiquer une citation, une liste, etc. Nous découvrirons au fur et à mesure des environnements.
On marque le début d'un environnement ⟨nom⟩ par \begin{⟨nom⟩} et on le termine \end{⟨nom⟩}.
Dans la classe article il existe un environnement utile : abstract. On place dans cet environnement un résumé de l'article :
2.
3.
\begin
{abstract}
Écrivons ici un résumé de l'
article.
\end
{abstract}
Il est possible d'imbriquer des environnements :
2.
3.
4.
5.
6.
7.
\begin
{1}
blabla blab
\begin
{2}
blabl blab
\end
{2}
blabl
\end
{1}
En revanche il n'est pas possible de superposer des environnements : ainsi le code suivant ne fonctionne pas et produit une erreur lors de la compilation.
2.
3.
4.
5.
6.
7.
\begin
{1}
blabla blab
\begin
{2}
blabl blab
\end
{1}
blabl
\end
{2}
2-B-i. Conclusion▲
Vous avez appris ici les principales notions de LaTeX. Pour l'instant, cela doit sans doute paraître très flou : mais au fur et à mesure de votre lecture, vous comprendrez mieux(35)...
3. Chapitre 3 - Structurer son travail▲
Après avoir découvert les bases de LaTeX, apprenons la manière de structurer son travail.
3-A. Différents niveaux de titres▲
LaTeX propose par défaut six ou sept niveaux de titres, selon la classe choisie.
Pour introduire un titre dans LaTeX - en dehors du titre du travail - il suffit d'utiliser une commande de titre qui possède la syntaxe suivante :
\⟨titre⟩[⟨titre court⟩]{⟨titre long⟩}
Le titre court est facultatif, comme l'indique le fait qu'il soit entre crochets (☞ Titre, auteur et date : la notion de commandeTitre, auteur et date : la notion de commande). Il sert pour la table des matières (☞ Chapitre 17Chapitre 17 - Sommaire et table des matières) et, éventuellement, pour les en-têtes des pages (☞ Chapitre 22Chapitre 22 - Personnaliser en-têtes et pieds de pages).
Évidemment \⟨titre⟩ doit être remplacé par le type de titre. Voici les niveaux de titre disponibles, du plus général au plus détaillé. Plus un titre se trouve haut dans la hiérarchie, plus son numéro de niveau est faible.
Commande | Sens | Numéro de niveau |
\part | Titre de partie | -1 |
\chapter | Titre de chapitre | 0 |
\section | Titre de section | 1 |
\subsection | Titre de sous-section | 2 |
\subsubsection | Titre de sous-sous-section | 3 |
\paragraph | Titre de paragraphe | 4 |
\subparagraph | Titre de sous-paragraphe | 6 |
Quelques remarques importantes :
- le niveau \chapter n'existe que dans la classe book ;
- chaque niveau de titre se voit attribuer un numéro. Ce numéro sert lors de l'affichage de la table des matières pour définir sa profondeur ; (☞ Choisir la profondeur de la table des matières : la notion de compteurChoisir la profondeur de la table des matières : la notion de compteur)
- les niveaux dont les numéros sont inférieurs à 1 provoquent un changement de page ;
- les niveaux dont les numéros sont supérieurs à 3 ne provoquent pas de changement de paragraphe. Les titres sont positionnés en « lettrine ».
3-A-a. Des titres non numérotés▲
Par défaut, tous les titres sont automatiquement numérotés(36). Il est possible d'obtenir un titre non numéroté, en faisant suivre le nom de la commande d'un astérisque :
\chapter*
{⟨Un chapitre non numéroté⟩}
Toutefois un titre non numéroté ne sera pas ajouté à la table des matières (☞ Chapitre 17Chapitre 17 - Sommaire et table des matières).
Pour contourner ce problème, il faut utiliser la commande :
\addcontentsline
{toc}{⟨1⟩}{⟨2⟩}
où :
⟨1⟩ | est le type de titre |
⟨2⟩ | est le texte du titre |
Un exemple sera plus parlant :
2.
\addcontentsline
{toc}{chapter}{Introduction}
\chapter*
{Introduction}
Le lecteur alerte se demandera sans doute pourquoi il est nécessaire de mettre toc comme premier argument. Cela correspond à l'extension du fichier qui contiendra la table des matières : nous renvoyons au chapitre dédié à ce sujet (☞ Chapitre 17Chapitre 17 - Sommaire et table des matières).
3-B. Structurer ses fichiers▲
Jusqu'à maintenant, vous aviez tout mis dans un seul fichier. Une fonctionnalité intéressante de LaTeX est la possibilité d'appeler dans un fichier d'autres fichiers, pour ainsi séparer son travail en plusieurs fichiers, chacun contenant une partie seulement du document final.
Par exemple, il est possible de faire un fichier par chapitre d'un mémoire, ou encore par texte cité dans un exemplier. Seul un fichier « père » est compilé, ce document appelle des fichiers « fils ».
Pourquoi procéder ainsi ?
- Pour pouvoir changer plus aisément l'ordre des parties.
- Pour pouvoir « recycler » plus facilement certaines parties.
- Pour pouvoir compiler seulement certaines parties.
Concrètement, comment fait-on ?
- Le fichier « père » doit systématiquement commencer par un appel de classe, et contenir \begin{document} et \end{document}.
- Les fichiers « fils » ne doivent contenir aucun appel de classe, ni les commandes \begin{document} et \end{document}.
- Ils sont inclus dans le fichier « père » par l'une des commandes suivantes :
- \include{⟨chemin-du-fichier⟩}, qui entraîne systématiquement un saut de page ;
- \input{⟨chemin-du-fichier⟩}, qui n'entraîne pas de saut de page.
La commande \input, contrairement à \include, peut aussi être appelée dans un fichier « fils », voire dans un fichier « petit-fils », etc.
Nous conseillons de mettre l'ensemble des appels à des packages dans un fichier à part. Ainsi, vous pouvez disposer d'un jeu de packages pour tous vos documents : il suffit d'appeler à chaque fois ce fichier.
3-B-a. Comment indiquer le chemin du fichier▲
La notion de chemin de fichier en informatique renvoie à l'arborescence des dossiers sur un ordinateur.
En LaTeX, le chemin du fichier se compte à partir du fichier « père », celui qui est compilé, y compris lorsqu'on procède à une inclusion dans un fichier « fils ».
On indique le chemin du fichier en séparant chaque dossier par /(37). Ainsi, si nous souhaitons inclure le fichier nommé c.tex situé dans le dossier b, lui-même situé dans le dossier a, qui se trouve à côté du fichier « père », il faut que nous mettions dans notre fichier « père » : \input{a/b/c} ou bien \include{a/b/c}.
Il est déconseillé d'avoir des caractères spéciaux dans le nom des dossiers et des fichiers.
Nous conseillons de mettre les fichiers « fils » dans un ou plusieurs sous-dossiers.
3-C. La classe book : structuration globale du document▲
La classe book propose, en plus des niveaux de titres, une manière de structurer en quatre parties son travail : préambules (avant-propos, sommaire, introduction, etc.) ; corps du travail ; appendices ; outils de navigation (index, glossaires, bibliographie, tables des matières, etc.).
Chacune de ces parties est indiquée par une commande initiale, respectivement : \frontmatter ; \mainmatter ; \appendix(38) ; \backmatter.
Cette structuration en parties globales a un impact sur la présentation des numéros de page (romains ou arabes) et sur la numérotation des titres.
Ainsi, par défaut :
\frontmatter | donne des titres non numérotés, mais présents dans la table des matières. En outre les numéros de pages sont en chiffres romains minuscules. |
\mainmatter | donne des titres numérotés. La numérotation des pages est réinitialisée et est en chiffres arabes. |
\appendix | affiche les numéros de chapitres sous forme de lettres majuscules. Le texte « chapitre » est remplacé par « appendice ». |
\backmatter | supprime les numéros de chapitres tout en présentant les chapitres dans la table des matières. |
4. Chapitre 4 - Gérer les langues avec Xunicode et Polyglossia▲
Dans ce chapitre nous verrons la manière de signaler à LaTeX les changements de langue, ainsi que les méthodes pour écrire en caractères non latins.
4-A. Indiquer les changements de langue▲
4-A-a. Pourquoi indiquer les changements de langue ?▲
Voici les principales raisons :
- Chaque langue a ses propres règles typographiques (espacement avant et/ou après les signes de ponctuation, par exemple). Indiquer la langue courante permet donc à LaTeX d'adapter sa typographie ;
- Chaque langue a ses propres règles de césure des mots : indiquer la langue permet d'avoir une césure correcte.
4-A-b. Commandes et environnements de changement de langue▲
Langue principale et langues secondaires
Nous avons vu que dans le préambule on indiquait le français comme langue principale par la commande : \setmainlanguage{french} (☞ Le français, langue par défautLe français, langue par défaut).
Évidemment on pourrait indiquer une autre langue : par exemple si vous écrivez votre travail en grec : \setmainlanguage{greek}.
On pourrait même préciser qu'il s'agit du grec ancien(39) :
1L'auteur de ces lignes aime retarder de quelques mondialisations, c'est pourquoi il préfère le grec ancien à l'anglais.
\setmainlanguage
[variant=ancient]{greek}
On trouve une liste des langues disponibles et de leurs variantes dans la documentation de polyglossia(40). Dans le cas où votre langue n'est pas disponible, trois solutions s'offrent à vous :
- regardez si le package babel ne peut rien faire pour vous ;
- écrivez à l'auteur(41) en lui présentant le nom de la langue et ses règles typographiques et de césure et demandez-lui gentiment d'ajouter une langue à polyglossia ;
- ne respectez pas les bonnes raisons d'indiquer les changements de langue.
Pour pouvoir indiquer des changements de langue, il faut déclarer dans le préambule les langues secondaires :
\setotherlanguage
[⟨options⟩]{⟨codelang⟩}
où ⟨codelang⟩ est remplacé par le code de la langue, par exemple greek.
Les options sont principalement les variantes, mais il peut également s'agir d'options d'affichage des nombres ou des dates : voir le manuel de polyglossia(42).
4-A-c. Indiquer un changement de langue▲
Il existe deux manières d'indiquer un changement de langue.
Par une commande
On peut le faire par une commande
\text
⟨codelang⟩[⟨options⟩]{⟨texte dans une autre langue⟩}
par exemple(43) :
\textgreek
[variant=ancient]{Ἐν ἀρχῇ ἦν ὁ λόγος}
Par un environnement
Pour des textes plus longs, il peut être intéressant d'utiliser plutôt un environnement ⟨codelang⟩ :
2.
3.
4.
5.
\begin
[variant=ancient]{greek}
Ἐν ἀρχῇ ἦν ὁ λόγος,
3 καὶ ὁ λόγος ἦν πρὸς τὸν θεόν,
4 καὶ θεὸς ἦν ὁ λόγος.
\end
{greek}
4-A-d. Le problème du latin▲
Dans le package polyglossia le latin suit la typographie anglaise. Ainsi le francophone aura quelques soucis s'il désire des espaces avant les signes typographiques doubles dans un environnement latin ou dans une commande \textlatin. Pourtant il pourrait vouloir utiliser cet environnement ou cette commande, afin d'avoir un respect des césures latines.
Pour ce faire, il devra redéfinir dans le préambule l'environnement latin par le code suivant :
2.
\renewenvironment
{latin}{\begin
{hyphenrules}{latin}}%
{\end
{hyphenrules}}
La commande \renewenvironnement redéfinit un environnement, dans le cas présent latin. Le deuxième argument de la commande indique ce qui se passe lorsque l'on ouvre l'environnement, le troisième argument ce qui se produit lorsqu'on l'on ferme l'environnement. L'environnement hyphenrules indique un changement des règles de césure.
4-B. Saisir des textes en caractères non latins▲
Ce que nous allons expliquer maintenant n'a en réalité pas grand-chose à voir avec LaTeX. Il s'agit en fait d'un problème plus général à l'informatique : comment écrire dans des caractères non latins ? Nous allons ici expliquer la mauvaise méthode, puis la bonne méthode.
Nous commencerons par un peu d'explications techniques très simplifiées : que les puristes nous pardonnent.
4-B-a. Les jeux de caractères : ou comment se servir de nombres pour autre chose que des mathématiques▲
Au départ, un ordinateur ne manipule que des nombres. Mais les ordinateurs servant aux humains, ceux-ci leur ont appris à « stocker » des caractères, en associant des lettres à des nombres.
Cependant les premiers ordinateurs ayant été développés par des Anglo-Saxons, on n'a attribué des nombres qu'à 127 caractères, ce qui suffisait largement pour écrire en anglais et ajouter des caractères spécifiques, comme les accolades informatiques(44). Le jeu de caractères connu sous le doux nom d'ASCII(45) a ainsi vu le jour.
Un jour d'autres peuples que les Anglo-Saxons ont voulu écrire avec un ordinateur et ont souhaité frapper leurs propres caractères. Par exemple les Européens occidentaux ont voulu taper des accents, des cédilles, des trémas et autres joyeusetés. On a donc créé un nouveau système de codage pour représenter les caractères latins occidentaux, en attribuant des nombres à d'autres caractères.
On a ainsi formé le jeu de caractères ISO-8859-1.
D'autres ont voulu pouvoir frapper dans leur alphabet, et c'est ainsi que furent inventés des jeux de caractères comme ISO-8859-5 pour le cyrillique. En outre certaines entreprises inventèrent leurs propres manières de stocker des caractères : ainsi Apple inventa MacRoman et Microsoft Windows-1252(46).
Mais certaines personnes souhaitaient mélanger des caractères de divers alphabets : par exemple écrire tantôt en grec, tantôt en cyrillique, tantôt en caractères latins. Comment faire ? Pendant longtemps,la technique utilisée(47) consistait à écrire dans un jeu de caractères donné, typiquement ISO-8859-1, mais en utilisant une police qui affichait le texte dans un autre alphabet.
Par exemple, pour écrire le caractère grec « α » on écrivait le caractère latin « a » et on le faisait afficher dans la police SPIonic. Cette méthode posait - et pose encore - de nombreux problèmes :
- elle nécessitait que la police soit présente sur toutes les machines de travail ;
- ne stockant pas l'information exacte sur le caractère, puisqu'elle utilise un code pour désigner autre chose que ce qu'il devait désigner, elle ne permettait pas de faire aisément des recherches ;
- avec LaTeX, étant donné que nous ne sommes pas dans un système WYSIWIG, elle rendait la rédaction et la relecture extrêmement pénible ;
- elle était un non-sens informatique et logique.
Une métaphore simple explique le problème : supposons que vous vouliez une maison en brique rouge. Que diriez-vous si votre entreprise de maçonnerie vous posait du parpaing, puis le peignait en rouge pour faire croire que c'est de la brique ? Voilà le problème fondamental de cette méthode : elle fait prendre du parpaing (la lettre « a ») pour de la brique (la lettre « α ») en se servant d'une peinture (la police de caractères).
Heureusement petit à petit une solution a émergé : elle a consisté à inventer un jeu de caractères qui puisse stocker tous les caractères présents sur la terre, y compris dans le passé, tout en laissant de la place pour les caractères des civilisations extraterrestres qu'un jour, éventuellement, nous rencontrerions. Ce jeu de caractères s'appelle Unicode.
Avec ce jeu de caractères, il est donc possible de mélanger allègrement de l'arabe, du vietnamien, de l'hébreu et du cyrillique dans un même fichier. Toutefois, histoire de compliquer les choses, plusieurs implémentations de ces jeux de caractères ont été inventées, chacune présentant des avantages et des inconvénients divers(48). La plus courante de ces implémentations est UTF-8.
C'est celle que vous utilisez depuis que vous lisez ce livre, si du moins vous avez lu le chapitre 2.
En un mot : Unicode dans sa variante UTF-8 est aujourd'hui la meilleure méthode pour écrire des fichiers mêlant plusieurs familles de caractères(49).
Le lecteur narquois fera remarquer que le même problème se pose qu'avec la méthode de la police : à savoir que chaque ordinateur de travail devrait implanter Unicode et UTF-8 chez lui.
L'auteur fera remarquer qu'aujourd'hui tous les ordinateurs possèdent en natif ces possibilités, et qu'il est possible très facilement de l'installer sur des ordinateurs un peu anciens. En outre, avec Unicode on stocke du sens, et non pas de la forme, ce qui permet une plus grande souplesse.
Pour en savoir plus, vous pouvez consulter mon autre livre Normalisation des caractères unicode et typographie.
4-B-b. Concrètement▲
Fort bien, fort bien, stockons en UTF-8. Mais comment écrit-on en UTF-8 ?
Avec les claviers des ordinateurs vendus en Europe occidentale(50), nous n'avons pas les caractères grecs à portée de main.
Il faut ici distinguer le support physique : le clavier avec ses touches bien concrètes, et le support logique : le fait que telle touche appuyée donne tel ou tel caractère.
Pour reprendre notre cas, il suffit de dire à notre ordinateur que la touche A correspond au caractère α. Les ordinateurs récents proposent plusieurs pilotes de clavier en standard(51). Toutefois ces pilotes de clavier sont généralement destinés aux langues contemporaines, et rarement adaptés aux langues anciennes - par exemple pour les accents sur le grec(52). Heureusement on trouve aisément sur Internet des pilotes de clavier pour d'autres langues(53).
4-B-c. Et les changements de sens d'écriture ?▲
Certaines langues s'écrivent de droite à gauche, d'autres de gauche à droite.
On souhaiterait que les alignements de paragraphes, les positions des titres et d'autres éléments correspondent au sens de la langue. Comment signaler cela à LaTeX ? L'indication des changements de langue (☞ Indiquer un changement de langueIndiquer un changement de langue) suffit.
Pour ce qui concerne l'écriture en boustrophédon, on utilisera le package bidi. Celui-ci possède des commandes qui permettent d'indiquer des changements de sens.
5. Chapitre 5 - Mettre en sens son document (1) : premiers pas▲
Nous allons maintenant voir comment mettre en sens notre document, c'est-à-dire comment poser des balises, des repères, pour marquer le « relief » sémantique du texte.
5-A. Mettre en forme n'est pas mettre en sens▲
Lorsque nous lisons un livre, tous les éléments ne sont pas présentés de la même manière : certains sont en gras, d'autres en italiques, en soulignés, en couleur, etc.
Tout ceci constitue la mise en forme du texte. Si notre livre est bien conçu, ces changements de forme renvoient à des changements de signification : l'italique peut indiquer un titre d'ouvrage ou bien une citation ou une simple insistance, le gras peut indiquer une notion ou une définition ou toute autre signification.
On le voit, la mise en forme diffère de la mise en sens. Cette dernière est idéalement faite par l'auteur du travail, tandis que l'éditeur s'occupe normalement de la mise en forme et de la mise en page.
C'est d'ailleurs ce qui se passait auparavant quand les auteurs proposaient encore des textes manuscrits à leurs éditeurs : ils indiquaient les éléments à mettre en sens par des signes, mise en sens que l'éditeur transformait en mise en forme(54).
Dans LaTeX, le principe est le même : il existe des commandes de mise en sens qui sont ensuite transformées en commandes de mise en forme. Mieux : on peut définir ses propres commandes de mise en sens. L'intérêt est évident : pouvoir changer rapidement de mise en forme pour un ensemble de données mises en sens.
Un exemple sera plus parlant. Supposons que nous écrivions un livre d'introduction à l'histoire du christianisme antique. Ce livre cite divers auteurs. Nous souhaitons mettre en valeur ces auteurs, et pour ce faire décidons de les mettre en petites capitales.
Donc, à chaque fois que nous citons un auteur, nous indiquons que nous souhaitons avoir son nom en petites capitales. Vient le moment où nous imprimons notre livre, et nous nous rendons compte que le choix des petites capitales n'est pas le plus pertinent, mais qu'il vaudrait mieux mettre du gras. Il ne nous reste alors plus qu'à repérer toutes les petites capitales dans notre texte, à vérifier qu'il s'agit bien de petites capitales indiquant un nom d'auteur et à les remplacer par du gras - travail fastidieux !
En revanche, si au lieu de signaler à chaque occurrence qu'il faut des petites capitales, nous signalons simplement qu'il s'agit d'un nom d'auteur - par exemple en écrivant : \auteur{Tertullien} - nous n'aurons qu'une seule ligne à changer pour indiquer que nous souhaitons avoir les noms d'auteur en gras.
Mieux : nous pourrons créer très simplement un index des auteurs (☞ Principe de basePrincipe de base).
LaTeX propose quelques commandes simples de mise en sens : par exemple celles que nous avons vues plus haut pour indiquer les niveaux de titres (☞ Différents niveaux de titresDifférents niveaux de titres).
Nous allons ici présenter quelques autres commandes et environnements de mise en sens. Dans le chapitre suivant, nous en indiquerons des spécifiques aux citations (☞ Chapitre 6Chapitre 6 - Mettre en sens (2) : l'art de citer en LaTeX). Dans un troisième chapitre, nous expliquerons comment créer ses propres commandes (☞ Chapitre 7Chapitre 7 - Mettre en sens (3) : créer ses propres commandes), et nous présenterons alors la manière de mettre en forme.
5-B. Commandes de mise en sens▲
5-B-a. Mise en valeur d'un texte▲
On peut ponctuellement vouloir mettre en valeur un morceau de son écrit.
Pour ce faire il existe la commande \emph{⟨texte en emphase⟩}. Exemple :
2.
3.
On peut se demander si des textes apocryphes
ont été non seulement \emph
{utilisés,} mais aussi \emph
{lus}
dans la liturgie africaine.
Concrètement cela se traduit par un italique.
Toutefois, à la différence d'une commande qui indiquerait directement de mettre le texte en italique, cette commande pourrait, si on voulait, donner un résultat différent, par exemple mettre en couleur.
Une autre propriété intéressante est la gestion des imbrications : par défaut une commande \emph à l'intérieur d'une autre commande \emph produit un texte en caractères droits.
5-B-b. Le paratexte : notes de bas de page et de marge▲
LaTeX propose deux commandes pour indiquer des paratextes(55) : pour des notes de bas de page et des notes de marge (la position de ces dernières changeant, quand on est en recto-verso, selon que la page est paire ou impaire). Ces commandes sont, respectivement, \footnote et \marginpar.
2.
Lorem\footnote
{Une note de bas de page.} ipsum dolor amat.
Aliquam sagittis\marginpar
{Annotation marginale} magna.
On serait tenté d'utiliser cette commande pour citer en note de bas de page une référence bibliographique. Il existe en fait une commande spécifique, que nous étudierons en temps voulu (☞ Citation d'un élément bibliographiqueCitation d'un élément bibliographique).
Certaines mauvaises langues diront qu'il s'agit ici d'une mise en forme et non pas d'une mise en sens. Ils ont partiellement raison, dans la mesure où parfois distinguer la mise en forme de la mise en sens n'est pas évident.
Les personnes vraiment perfectionnistes pourront définir leurs propres commandes pour différencier les différents sens d'une note de marge ou de bas de page.
Certains préfèrent mettre des notes de fin de texte. Bien que nous n'approuvons guère ce choix, nous signalons qu'il est possible d'en produire à l'aide du package endnotes.
5-B-c. Listes▲
LaTeX propose trois types de listes : les listes numérotées, les listes nonnumérotées et les listes de description.
Les listes numérotées
Une liste numérotée est un environnement enumerate. Chaque élément de la liste est marqué par la commande \item.
2.
3.
4.
5.
\begin
{enumerate}
\item
Premier élément
\item
Deuxième élément
\item
Troisième élément
\end
{enumerate}
Il existe un package etaremune proposant l'environnement etaremune pour obtenir une liste numérotée à l'envers, avec le plus grand numéro en début de liste.
Les listes non numérotées
Une liste non numérotée est un environnement itemize. Chaque élément de la liste est marqué par la commande \item.
2.
3.
4.
5.
\begin
{itemize}
\item
Un élément
\item
Un autre
\item
Encore un autre
\end
{itemize}
Les listes de descriptions
Une liste de descriptions fait correspondre une à une des valeurs. Une telle liste peut être utile pour des lexiques, des glossaires, des chronologies, etc. Pour chaque couple, la première valeur est passée comme argument à la commande \item. Les listes de définitions sont des environnements description.
2.
3.
4.
5.
\begin
{description}
\item
[325]Concile de Nicée.
\item
[381]Concile de Constantinople.
\item
[431]Concile d'
Éphèse.
\end
{description}
5-B-d. Imbrication des listes▲
Il est possible d'imbriquer des listes, quels que soient leurs types. On ne peut, par défaut, avoir plus de quatre niveaux d'imbrication.
2.
3.
4.
5.
6.
7.
8.
\begin
{itemize}
\item
Un élément de premier niveau
\begin
{enumerate}
\item
Premier sous élément
\item
Second sous élément
\end
{enumerate}
\item
Un autre élément de premier niveau
\end
{itemize}
On a parfois besoin de personnaliser l'aspect des listes, ou bien encore d'arrêter une numérotation de liste pour la reprendre plus loin. Bertrand Masson a écrit un excellent tutoriel sur la manière d'utiliser le package enumitem pour arriver à ces fins(56).
6. Chapitre 6 - Mettre en sens (2) : l'art de citer en LaTeX▲
Nous évoquerons dans ce chapitre les citations explicites et textuelles, c'est-à-dire celles où l'auteur du travail ne se contente pas de renvoyer à une source ou à une étude, mais cite des extraits de cette source.
Une citation peut se faire de deux manières : dans le corps du propos, elle est alors normalement entourée de guillemets, ou bien dans un paragraphe spécifique. Elle est alors généralement présentée avec des marqueurs typographiques particuliers : changement de la taille de police, de la marge etc.
Nous avions vu plus haut qu'il fallait séparer sens et forme (☞ Mettre en forme n'est pas mettre en sensMettre en forme n'est pas mettre en sens). Nous allons donc présenter ici les commandes servant à marquer des citations.
Toute citation se doit d'être accompagnée d'une référence, généralement en note de bas de page. Toutefois toute référence n'accompagne pas nécessairement une citation textuelle. C'est pourquoi nous renvoyons pour la gestion des références bibliographiques à la partie qui lui est consacrée.
6-A. Citation dans le corps du texte▲
Les citations dans le corps d'un texte sont normalement entourées de guillemets français : «». Lorsqu'on cite un texte qui cite un texte, la citation dans la citation s'entoure de guillemets courbes “”.
Les claviers disponibles sur nos ordinateurs ne disposent généralement en accès direct que des guillemets anglais(57)("). La plupart des logiciels WYSIWYG convertissent automatiquement ces guillemets en guillemets français. Rares sont les éditeurs de texte qui le proposent(58).
En outre, en vertu du principe de séparation du sens et de la forme, évoqué plus haut (☞ Mettre en forme n'est pas mettre en sensMettre en forme n'est pas mettre en sens), il est plus pertinent d'utiliser une commande spécifique pour indiquer une citation dans le corps du texte.
Nous allons donc utiliser le package csquotes qui propose des commandes pour les citations.
Le package contient une première commande utile : \enquote{⟨citation⟩}, qui sert pour les citations dans le corps du texte.
2.
3.
Comme le dit très justement xxx :
\enquote
{Lorsque yyy déclare \enquote
{zzz}
il ne déclare rien du tout}.
Nous constatons que csquotes s'occupe automatiquement de choisir les bons guillemets. Par défaut on ne peut imbriquer que deux niveaux de citation. Toutefois une option du package permet d'avoir plus de niveaux de citation. Par exemple pour en avoir trois :
\usepackage
[maxlevel=3]{csquotes}
Le package propose d'autres options et commandes : consultez le manuel(59).
6-B. Citation dans un bloc séparé▲
LaTeX propose en standard trois environnements pour citer dans un bloc séparé.
6-B-a. L'environnement quote▲
Il est prévu pour des courtes citations d'un paragraphe(60).
2.
3.
4.
5.
6.
7.
\begin
{quote}
Le corps de Pierre gît à Rome, disent les hommes,
le corps de Paul gît à Rome, le corps de Laurent aussi,
les corps d'
autres martyrs y gisent,
mais Rome est misérable,
elle est dévastée, affligée, saccagée, incendiée.
\end
{quote}
Ce code produit le résultat suivant :
6-B-b. L'environnement quotation▲
Il est prévu pour des citations plus longues(61).
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
\begin
{quotation}
Que rien exceptées les écritures canoniques ne soit lu en église
sous le nom d'
écritures divines.
Les écritures canoniques sont : Genèse, Exode, Lévitique,
Nombres, Deutéronome,
Josué de Noun, Juges, Ruth, 4~
livres des règnes,
2~
livres des paralipoménes,
Job, psautier, 5~
livres de Salomon,
12 livres des prophètes mineurs,
de même Isaïe, Jérémie, Ézechiel, Daniel,
Tobie, Judith, Esther,
2~
livres d'
Esdras, 2~
livres des Maccabées.
Du nouveau testament sont :
4~
évangiles, un livre des actes des apôtres,
14~
lettres de l'
apôtre Paul, 2~
de Pierre,
3~
de Jean, 1~
de Jude, 1~
de Jacques,
l'
apocalypse de Jean.
Que l'
Église d'
outre-mer soit consultée
pour la confirmation de ce canon.
De plus, qu'
il soit permis de lire les passions des martyrs,
lorsqu'
on célèbre leurs anniversaires.
\end
{quotation}
Le fond gris que vous constatez ici est propre au livre que vous avez sous les yeux. L'environnement quotation standard n'a pas de fond.
6-B-c. L'environnement verse et le package verse▲
L'environnement verse permet de citer de façon rapide et simple des poèmes, en gérant notamment le rejet en cas de vers trop long. Chaque vers, à l'exception du dernier, doit se terminer par \\. Si le vers est composé de plusieurs strophes, il suffit de sauter une ligne entre chaque strophe. Il ne faut pas mettre \\ à la fin du dernier vers de chaque strophe.
Cet environnement est très limité : il ne permet pas de numéroter ni d'indenter les vers, ni encore de rajouter un titre. Si l'on est amené à citer fréquemment des vers, il vaut mieux appeler dans le préambule le package verse(62). La citation du poème se fait de la même manière.
Avec ce package il faut indiquer \poemlines{⟨n⟩} pour numéroter les vers cités : ⟨n⟩ définit la fréquence à laquelle les vers sont numérotés.
Citons pour exemple un poème entier, dont les vers sont numérotés, de façon assez traditionnelle, une fois sur cinq. En frappant ceci(63) :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
\begin
{verse}
\poemlines
{5}
Demain, dès l'
aube, à l'
heure où blanchit la campagne,\\
Je partirai. Vois-tu, je sais que tu m'
attends.\\
J'
irai par la forêt, j'
irai par la montagne.\\
Je ne puis demeurer loin de toi plus longtemps.
Je marcherai les yeux fixés sur mes pensées,\\
Sans rien voir au dehors, sans entendre aucun bruit,\\
Seul, inconnu, le dos courbé, les mains croisées,\\
Triste, et le jour pour moi sera comme la nuit.
Je ne regarderai ni l'
or du soir qui tombe,\\
Ni les voiles au loin descendant vers Harfleur,\\
Et, quand j'
arriverai, je mettrai sur ta tombe\\
Un bouquet de houx vert et de bruyère en fleur.
\end
{verse}
on obtient cela :
Si l'on ne cite pas un poème en entier, mais simplement un passage, il faut indiquer à quel vers commence le passage cité, afin que la numérotation des vers que l'on cite soit la bonne.
On utilise la commande
\setverselinenums
{⟨premier vers⟩}{⟨premier vers numéroté⟩}
⟨premier vers⟩ indique le numéro du premier vers que l'on cite,
⟨premier vers numéroté⟩ où doit commencer la numérotation.
Ainsi, \setverselinenums{⟨12⟩}{⟨15⟩} indique que l'extrait cité commence par le douzième vers du poème, et que le premier vers numéroté sera le quinzième.
Avec \setverselinenums{⟨12⟩}{⟨12⟩}, le premier vers cité sera le premier numéroté.
Ne citant que la troisième strophe, par exemple, il faut frapper :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
\begin
{verse}
\poemlines
{5}
\setverselinenums
{9}{10}
Je ne regarderai ni l'
or du soir qui tombe,\\
Ni les voiles au loin descendant vers Harfleur,\\
Et, quand j'
arriverai, je mettrai sur ta tombe\\
Un bouquet de houx vert et de bruyère en fleur.
\end
{verse}
pour obtenir, correctement numéroté :
Dans la typographie française, il est d'usage de mettre un crochet droit [ au début d'un rejet. Ni l'environnement ni le package verse ne suivent cette règle. Pour obtenir le crochet droit, il faut charger le package gmverse en lui passant l'option squarebr :
\usepackage
}[squarebr]{gmverse}
Puis insérer, une fois commencé l'environnement verse, la commande \versehangrightsquare.
Le package verse permet aussi d'indenter de façon très souple une strophe.
On indique avec la commande \indentpattern{⟨n1n2nx⟩} l'indentation de chaque vers contenu dans la strophe encadrée à l'intérieur d'un environnement patverse : ⟨n1⟩ correspond au premier vers, ⟨n2⟩ au deuxième et ainsi de suite.
Le premier vers n'est jamais indenté, mais il suffit de le faire précéder de \vin.
Avec le code suivant :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
\begin
{verse}
\poemlines
{1}
\indentpattern
{010110}
\begin
{patverse}
\vin
There was a young lady of Ryde \\
Who ate some apples and died. \\
The apples fermented \\
Inside the lamented \\
And made cider inside her inside. \\
\end
{patverse}
\end
{verse}
on obtient donc(64) :
Si l'on a besoin de répéter une indentation tout le long d'un poème, on remplace patverse par patverse*. Donc pour citer un long extrait en hexamètres dactyliques, plutôt que d'indiquer l'indentation pour chaque vers, il suffit d'indiquer \indentpattern{01} et d'insérer le poème, en entier, dans l'environnement patverse* pour avoir un vers sur deux indenté.
Le package verse offre bien d'autres possibilités qui dépassent la simple citation de poésie dans le cours d'un texte. À l'instar d'un autre package, poemscol, c'est un véritable outil pour éditer de la poésie(65). Ni l'un ni l'autre ne permettent en revanche de faire des éditions bilingues : pour cela, il faut utiliser les packages ledmac et ledpar (☞ Chapitre 20Chapitre 20 - Édition critique et textes parallèles).
6-C. Citations tronquées et modifiées▲
Le package csquotes propose deux commandes spécifiques pour signaler une citation tronquée ou modifiée.
6-C-a. Citation tronquée▲
La commande \textelp⟨texte⟩signale un texte tronqué. L'argument ⟨texte⟩ est inséré après la troncature, entre crochets (par défaut) ; pour ne rien insérer, le laisser vide.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
\begin
{quotation}
Que rien exceptées les écritures canoniques ne soit lu
en église sous le nom d'
écritures divines.
\textelp
{Suit la liste des écritures canoniques.}
Que l'
Église d'
outre-mer soit consultée pour la confirmation
de ce canon.
De plus, qu'
il soit permis de lire les passions des martyrs,
lorsqu'
on célèbre leurs anniversaires.
\end
{quotation}
On peut décider de la manière dont la troncature et l'ajout sont signalés : consulter le manuel(66).
6-C-b. Citation modifiée▲
Pour signaler une modification dans une citation, on utilise \textins{⟨texte modifié⟩}.
2.
3.
4.
5.
\begin
{quotation}
Comme le disait très justement xxx :
\enquote
{Lorsque yyy \textins
{a déclaré}
\enquote
{zzz} il \textins
{n'
a rien déclaré} du tout}.
\end
{quotation}
La commande \textins* est une variante, servant pour déclarer les changements mineurs nécessaires au nouveau contexte d'énonciation : mise en majuscules, changement de personne, etc.
7. Chapitre 7 - Mettre en sens (3) : créer ses propres commandes▲
Nous avons parlé longuement de l'intérêt de séparer mise en sens et mise en forme (☞ Mettre en forme n'est pas mettre en sensMettre en forme n'est pas mettre en sens). Nous avons indiqué que la meilleure manière pour ce faire était de créer des commandes de mise en sens, qui elles-mêmes appelleraient des commandes de mise en forme.
Voyons maintenant comment créer ces commandes personnalisées.
7-A. Création d'une commande personnalisée▲
Nous souhaitons créer une commande personnalisée servant à indiquer que nous parlons d'un auteur : \auteur{⟨nom⟩}.
Notre commande se décompose en plusieurs parties : son nom, ici auteur, et ses arguments, ici un seul : ⟨nom⟩.
Une commande LaTeX peut prendre jusqu'à neuf arguments, ce qui est en général bien suffisant. Si nous notons ⟨N ⟩ le nombre d'arguments, la syntaxe de la déclaration d'une nouvelle commande est la suivante : \newcommand{\⟨nom de la commande⟩}[⟨N ⟩]{⟨code⟩}.
Les noms de commandes ne doivent contenir que des caractères latins non accentués.
Les noms sont sensibles à la casse : \a est différent de \A.
À l'intérieur de la partie ⟨code⟩, on peut :
- mettre du texte ;
- utiliser des commandes de mise en forme ou de mise en sens ;
- appeler les arguments passés en utilisant la syntaxe #x, où x représente le rang de l'argument.
Prenons toujours notre cas d'une commande pour indiquer les noms. Pour le début, nous souhaitons simplement que les noms d'auteur soient suivis d'un astérisque (*).
2.
3.
\newcommand
{\auteur
}[1]{#1
*}
Il est bien connu que \auteur
{Tertullien} n'
était pas montaniste
mais tertullianiste.
Ce qui nous donne :
Tertullien a été passé en premier argument. Il apparaît donc à la place du #1 de la déclaration de commande.
On pourrait souhaiter passer en second argument des informations complémentaires, comme les dates de vie.
2.
3.
\newcommand
{\auteur
}[2]{#1
* (#2
)}
Il est bien connu que \auteur
{Tertullien}{150 ? - 220 ?}
n'
était pas montaniste mais tertullianiste.
Le lecteur attentif se rappellera qu'il existe des commandes avec des arguments optionnels (☞ Titre, auteur et date : la notion de commandeTitre, auteur et date : la notion de commande). Il souhaitera sans doute en créer lui même.
Si LaTeX prévoit bien en standard un mécanisme pour permettre cela, celui-ci est peu souple.
Nous conseillons donc de se tourner vers les packages xargs et ifthenelse(67).
Mais tout ceci dépasserait le cadre de cet ouvrage.
Fort bien, mais comment faire pour mettre en forme ? Il faut utiliser une commande de mise en forme à l'intérieur de la déclaration de commande de mise en sens. Par exemple, pour mettre en petites capitales la commande est \textsc.
\newcommand
{\auteur
}[2]{\textsc
{#1
}* (#2
)}
Nous décrirons plus loin un ensemble de commandes de mise en forme (☞ Commandes de mise en formeCommandes de mise en forme).
Si la possibilité de créer ses propres commandes est une grande force de LaTeX, cela ne fait pas toujours la joie des éditeurs.
Il est donc recommandé de discuter au préalable avec son éditeur, et surtout de lui indiquer qu'un balisage sous forme de commandes doit, normalement, lui faciliter la tâche.
Nous recommandons par ailleurs de regrouper toutes ses déclarations de commandes dans un fichier unique, appelé via une commande \input (☞ Chapitre 3Chapitre 3 - Structurer son travail).
Il est également possible de créer son propre package, pour des commandes utilisées fréquemment dans plusieurs projets(68).
On peut ainsi très facilement créer une commande \commentaireservant pour indiquer des commentaires personnels au cours de la rédaction, afin de les avoir sous les yeux lors d'une relecture papier. Par exemple :
\newcommand
{\commentaire
}[1]{\marginpar
{#1
}}
Lors de l'impression finale, il suffit de changer cette commande par :
\newcommand
{\commentaire
}[1]{}
7-A-a. Code d'une commande sur plusieurs lignes▲
Jusqu'ici nos commandes étaient relativement simples. Mais il peut arriver que leur code se complexifie. On souhaiterait alors l'avoir sur plusieurs lignes.
C'est tout à fait possible, mais il faut simplement mettre un signe pourcentage (%) à la fin de chaque ligne, sous peine d'avoir des espaces intempestives.
Exemple sans % :
2.
3.
\newcommand
{\auteur
}[2]{
\textsc
{#1
}* (#2
)
}
On constate une espace en trop avant et une après la mention de l'auteur, que nous avons soulignées pour les besoins de l'explication. En revanche, si on met des % :
2.
3.
\newcommand
{\auteur
}[2]{%
\textsc
{#1
}* (#2
)%
}
Il n'y a plus d'espaces intempestives.
7-A-b. Étoiler \newcommand▲
La création des commandes sous LaTeX est une fonctionnalité très puissante, mais potentiellement dangereuse. Prenons la commande suivante :
\newcommand
{\auteur
}[1]{\textsc
{#1
}*}
Imaginons que nous l'appelions en oubliant de fermer notre accolade :
2.
Il est bien connu que \auteur
{Tertullien n'
était pas montaniste
mais tertullianiste.
Que va-t-il se passer ? LaTeX comprend que l'ensemble de la fin du texte est un argument de la commande, ce qui empêche le compilateur de bien fonctionner et nous n'obtiendrons rien, ou alors un résultat incorrect.
Pour limiter ces soucis, LaTeX propose de définir des commandes courtes, dont les arguments ne dépassent pas la longueur d'un paragraphe. En cas d'oubli de fermeture de parenthèses, LaTeX arrête automatiquement l'argument à la fin du paragraphe.
Pour définir ces commandes courtes, il suffit d'utiliser \newcommand*.
\newcommand
*{\auteur
}[1]{\textsc
{#1
}*}
7-A-c. Espace après les commandes sans argument▲
Il est possible de définir des commandes sans aucun argument. Prenons une commande personnalisée \cf, qui permet d'obtenir rapidement la forme « cf. »
\newcommand
{\cf
}[0]{\emph
{cf.}}
Comme notre commande ne prend pas d'argument, il est nécessaire, lorsque nous l'appelons, de la séparer du texte qui suit par une espace, afin que LaTeX sache où s'arrête la commande :
Ceci est très intéressant \cf
cela.
Mais l'espace disparaît lors de la compilation :
La solution consiste à utiliser dans la définition de commande la commande \xspace du package éponyme. Elle permet de gérer automatiquement les espaces qui suivent l'appel à une commande, en tenant compte de la typographie.
\newcommand
{\cf
}[0]{\emph
{cf.}\xspace
}
7-B. Commandes de mise en forme▲
Nous listons ici les principales commandes de mise en forme. Pour des besoins avancés, on trouvera aisément de la documentation sur internet. En ce qui concerne les questions d'espacement, un chapitre spécifique leur est dédié (☞ Chapitre 24Chapitre 24 - Éléments de mise en page).
7-B-a. Taille des caractères▲
Il est possible de définir de manière absolue la taille des caractères en indiquant le nombre de points. Toutefois la meilleure méthode est de le définir d'après la taille de base, et d'utiliser les commandes ci-dessous. La taille obtenue dépend de la taille de base définie lors de l'appel au préambule (☞ Le corps du documentLe corps du document).
Ces commandes ont toutefois un comportement particulier : ce sont des commandes dites « à bascule » (☞ « Commande à arguments » et « commande de bascule »« Commande à arguments » et « commande de bascule »). À la différence de la plupart des commandes, elles ne prennent pas d'argument. Elles doivent être utilisées entre accolades, le texte dont la taille change étant inséré après la commande, dans les accolades.
Ainsi :
{\large
Texte plus gros}
Et non pas :
\large
{Texte plus gros}
7-B-b. Style de caractères▲
7-B-c. Couleurs▲
Les couleurs ne sont pas gérées nativement dans LaTeX. Il faut passer par le package color ou le package xcolor qui proposent tous les deux une commande
\textcolor
{⟨nom de la couleur⟩}{⟨texte en couleur⟩}
La différence tient principalement au nombre de couleurs disponibles par défaut et à la facilité d'en définir des nouvelles, mais aussi à la possibilité d'appliquer des couleurs à d'autres éléments que le texte. Nous ne présentons ici que le package xcolor, de manière succincte. Nous renvoyons à la documentation pour des usages avancés(69).
Couleurs standards
Le package xcolor propose les couleurs de base suivantes :
Couleurs supplémentaires
On peut passer les options dvipsnames, svgnames ou x11names lors de l'appel au package xcolor, chacune fournissant un jeu de couleurs. Ne pouvant lister toutes ces couleurs dans cet ouvrage, nous renvoyons à la documentation de xcolor(70).
Définir ses propres couleurs
Il est possible de définir ses propres couleurs. Il faut utiliser \definecolor, selon la syntaxe suivante :
\definecolor
{⟨nom⟩}{⟨methode⟩}{⟨definition⟩}
Les couleurs peuvent être définies de plusieurs manières(71). Les deux principales sont(72) :
- La méthode additive en additionnant du rouge, du vert et du bleu (comme sur un écran d'ordinateur).
- La méthode soustractive en superposant du cyan, du magenta, du jaune et du noir (comme sur une imprimante couleur).
Dans les deux cas, il faut donner une valeur comprise entre 0 (inclus) et 1 (inclus) à chacun des composants(73).
Prenons par exemple la définition de la couleur rouge bourgogne(74). On peut la définir de la manière suivante en méthode additive :
\definecolor
{rougebourgogne}{rgb}{0.41,0.05,0.05}
Ou bien en méthode soustractive(75) de la manière suivante :
\definecolor
{rougebourgogne}{cmyk}{0,0.88,0.88,0.58}
Enfin, signalons la méthode HTML qui offre l'avantage d'avoir de nombreux sites Internet indiquant les codes couleur HTML(76).
La même couleur se définit ainsi :
\definecolor
{rougebourgogne}{HTML}{6B0D0D}
8. Chapitre 8 - Insérer des éléments non textuels▲
Dans ce chapitre nous allons examiner comment insérer des éléments qui ne font pas partie du flux du texte : images, graphismes, tableaux de données.
8-A. Insérer des images▲
Les images insérables avec XeLaTeX sont au format JPEG (extension .jpg), PNG (extension .png) ou PDF (extension .pdf). Il est nécessaire d'utiliser le package graphicx.
L'insertion d'une image se fait ainsi :
\includegraphics
[⟨options⟩]{⟨chemin de l'
image⟩}
Le chemin de l'image s'indique de la même manière que le chemin des fichiers inclus (☞ Comment indiquer le chemin du fichierComment indiquer le chemin du fichier). Les principales options, séparables par des virgules, sont les suivantes(77) :
Paramètres | Signification | Exemple |
angle | Angle exprimé en degrés. Un nombre positif indique une rotation antihoraire, un nombre négatif une rotation horaire. | angle=90 |
height | Hauteur | height=10cm |
scale | Redimension proportionnelle | scale=0.5 |
width | Largeur | width=10cm |
Le centimètre n'est pas la seule unité de mesure disponible en LaTeX.
Nous en parlons en annexe de ce livre (☞ Annexe EAnnexe E - Unités de mesure en LaTeX).
Le package graphicx propose de nombreux outils pour manipuler graphiquement du contenu, textuel ou non. Consultez le manuel(78).
Évidemment, il est plus correct d'insérer une légende sous une image.
Nous expliquons comment faire plus loin (☞ Où insérer les éléments non textuels ? la notion de flottantsOù insérer les éléments non textuels ? la notion de flottants).
8-B. Insérer des graphismes et des schémas▲
On peut vouloir insérer divers types de graphismes ou de schémas : graphiques statistiques, arbres généalogiques, stemma codicum, etc. Deux solutions s'offrent à nous :
- Utiliser un logiciel externe qui exporterait le graphisme dans une image, qu'on insérerait comme n'importe quelle image.
- Utiliser les possibilités de LaTeX et du package TikZ.
La première solution paraît de prime abord plus simple, puisqu'elle ne nécessite pas d'apprendre de nouveaux éléments en LaTeX. Toutefois il faut avec elle gérer plus de fichiers(79). En outre, les images exportées par ces logiciels étant bien souvent de type bitmap et non pas vectoriel(80), on perd la possibilité de sélectionner dans le PDF généré par LaTeX les textes, et on risque d'avoir des problèmes de redimensionnement.
Nous allons donc ici vous présenter une des possibilités du package TikZ : la représentation d'une famille de manuscrits.
Nous avons choisi cet exemple, car il est assez simple, tout en étant fréquent en sciences humaines. Mais TikZ permet de faire bien plus, comme produire des diagrammes statistiques : nous renvoyons à d'autres ouvrages pour en savoir plus(81). Ce package possède une syntaxe spécifique.
Bien que le package s'appelle TikZ, il faut dans le préambule l'appeler sans majuscules : \usepackage{tikz}.
Nous disposons de six familles de manuscrits d'un même texte. La famille A a engendré les familles B, C, D. Les familles E et F pour leur part sont issues de la famille D.
Le code est le suivant :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
\begin
{tikzpicture}
\node
{A}
child { node {B}}
child { node {C}}
child { node {D}
child {
node{E}
}
child {
node{F}
}
}
;
\end
{tikzpicture}
Ce qui donne le résultat de la figure 8.1. Analysons le code :
Ligne 1 | L'environnement tikzpicture est l'environnement utilisé pour insérer une figure TikZ. Il peut recevoir de nombreux arguments pour modifier certains aspects, tels que l'épaisseur par défaut des lignes, la taille du texte, l'orientation du schéma. Nous renvoyons à la documentation. |
Ligne 2 | Un nœud TikZ, matérialisé par la commande \node, est un bloc de texte. On pourrait passer des options à cette commande, afin de modifier certains aspects comme la taille du texte. |
Lignes 3 et 4 | child désigne ici une opération : associer un fils au nœud précédent. Ce fils est lui même un nœud (node). |
Lignes 5 à 12 | Même chose que précédemment, sauf que le nœud D se voit attribuer des fils (E et F). Notez le nombre d'accolades et leurs imbrications : c'est ce qui permet à TikZ de construire correctement le stemma. |
Ligne 13 | Le point-virgule est obligatoire après chaque commande TikZ (ici \node). |
Ligne 14 | Fin du graphisme TikZ. |
Évidemment un tel code est relativement complexe. C'est pourquoi nous conseillons de le commenter attentivement(82) et de prêter extrêmement attention aux accolades. Par ailleurs nous recommandons de mettre chaque graphisme TikZ dans un fichier séparé.
Notre stemma est relativement simple : il n'y a pas de « consanguinité ». Si cela avait été le cas, la construction aurait été plus complexe : on n'aurait pas pu utiliser les opérations de types child et il aurait fallu positionner précisément les éléments en utilisant un système de coordonnées(83).
8-C. Création de tableaux▲
La création de tableaux en LaTeX nécessite une extrême rigueur. C'est à nos yeux l'un des éléments les plus complexes de LaTeX. C'est pourquoi nous ne proposerons ici qu'un bref aperçu : on trouvera aisément des exemples plus détaillés dans d'autres ouvrages ou sur Internet(84).
8-C-a. Syntaxe de base▲
La création d'un tableau simple se fait grâce à l'environnement tabular, d'après la syntaxe suivante :
2.
3.
4.
\begin
{tabular}{<type de colonnes>}
Cellule & Cellule & Cellule \\
Cellule & Cellule & Cellule \\
\end
{tabular}
Le caractère & marque un changement de cellule. Le \\ marque un changement de ligne.
L'argument ⟨type de colonnes⟩ de l'environnement tabular sert à préciser :
- Le nombre de cellules.
- Le formatage du texte à l'intérieur des cellules.
- Éventuellement les séparateurs verticaux des cellules.
Il existe trois types possibles de colonnes, qui précisent l'alignement des textes :
l | Alignement à gauche. |
c | Centré. |
r | Alignement à droite. |
Supposons que nous ayons un tableau à trois colonnes. Nous souhaitons que les cellules de la première colonne soient alignées à gauche, celles de la seconde centrées et celles de la dernière alignées à droite(85). Il nous faut écrire :
2.
3.
4.
5.
6.
7.
8.
\begin
{tabular}{|l|c|r|}
Première cellule à gauche
& Première cellule au centre
& Première cellule à droite \\
Seconde cellule à gauche
& Seconde cellule au centre
& Seconde cellule à droite \\
\end
{tabular}
Par défaut, le tableau va prendre la largeur minimale nécessaire à son affichage.
On peut utiliser l'environnement tabular* qui propose un argument supplémentaire, correspondant à la largeur totale du tableau :
2.
3.
4.
\begin
{tabular*}{<largeur du tableau>}{<type de colonnes>}
Cellule & Cellule & Cellule \\
Cellule & Cellule & Cellulle \\
\end
{tabular}
Toutefois il peut être pratique d'indiquer des tailles de colonnes : en particulier lorsque nos cellules contiennent des paragraphes.
Pour ce faire trois types supplémentaires de colonnes nous sont proposés par le package array(86). Ces types, à la différence des précédents, déterminent une largeur de colonne. Il faut pour les utiliser connaître les unités de mesure (☞ Annexe EAnnexe E - Unités de mesure en LaTeX) de LaTeX.
Ces trois types de colonnes sont :
- p{⟨largeur⟩} texte justifié. La plus haute ligne du texte se trouve sur la ligne de base.
- m{⟨largeur⟩} texte justifié. La ligne du milieu du texte se trouve sur la ligne de base.
- b{⟨largeur⟩} texte justifié. La plus basse ligne du texte se trouve sur la ligne de base.
La ligne de base est une ligne spécifique, correspondant grosso modoau milieu d'une cellule. Exemple :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
\begin
{tabular}{p{0.2\textwidth
}|m{0.2\textwidth
}|b{0.2\textwidth
}|c}
Long texte dont la plus haute ligne
se trouve sur la ligne de base.
&
Long texte dont la ligne du milieu
se trouve sur la ligne de base.
&
Long texte dont la plus basse ligne
se trouve sur la ligne de base.
&
Ligne de base
\end
{tabular}
Il est possible de créer ses propres types de colonnes, afin par exemple d'en avoir avec une typographie particulière. Consultez le manuel du package array(87).
On peut utiliser le package diagbox afin d'avoir une cellule divisée en deux dans un sens diagonal, pour les tableaux à doubles entrées.
Le package tabularx propose un environnement tabularx permettant de calculer automatiquement la taille des colonnes.
Il existe également un package tabbing permettant de gérer des alignements de texte sans utiliser un tableau(88).
On peut simuler certaines fonctionnalités d'un tableur à l'aide du package spreadtab(89).
Séparation des cellules
On peut tracer des filets de séparation des cellules : pour un filet horizontal, il suffit d'utiliser la commande \hline. Pour un filet vertical, il faut mettre le caractère |(90) entre les types de cellules.
On trace des filets horizontaux plus petits grâce à \cline{<col1>-<col2>}, où ⟨col1⟩ et ⟨col2⟩ doivent être remplacés par les numéros de colonnes.
2.
3.
4.
5.
6.
7.
8.
9.
10.
\begin
{tabular}{l||c|r}
\hline
A & B & C \\
\hline
A1 & B1 & C1\\
\cline
{2-3}
A2 & B2 & C2 \\
\end
{tabular}
Fusion de cellules
Il est possible de fusionner des cellules. Pour une fusion de colonnes, il faut utiliser la commande suivante : \multicolumn{⟨nombcol⟩}{⟨type⟩}{⟨contenu⟩}.
⟨nombcol⟩ | est le nombre de colonnes à fusionner. |
⟨type⟩ | est le type de colonne qui en résulte, selon la syntaxe vue plus haut. |
⟨contenu⟩ | est le contenu de la ligne fusionnée. |
Pour une fusion de lignes, il faut charger le package multirow. Celui-ci propose une commande \multirow dont voici la syntaxe simplifiée(91) : \multirow{⟨lignes⟩}{⟨largeur⟩}{⟨contenu⟩}.
⟨lignes⟩ | est le nombre de lignes concernées par la fusion. |
⟨largeur⟩ | est la largeur du texte. On peut mettre * pour laisser LaTeX s'en charger. |
⟨contenu⟩ | est le contenu de la cellule issue de la fusion. |
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
\begin
{tabular}{|c|c|c|}
\hline
\multicolumn
{3}{|c|}{Colonnes fusionnées = ABC0} \\
\hline
A1 & B1 & C1 \\
\hline
\multirow
{2}{*}{Lignes fusionnés = A2-A3}
& B2 & C2 \\
\cline
{2-3}
& B3 & C3 \\
\hline
\end
{tabular}
On remarquera les cellules vides correspondant aux anciennes cellules A2 et A3. La commande \multirowne modifie pas la structure du tableau : elle indique simplement que le texte se situe sur plusieurs colonnes.
8-C-b. Long tableau▲
Si vous fabriquez ainsi un long tableau, vous constaterez que les cellules dépassent dans la marge inférieure, jusqu'à sortir de la page, au lieu, comme il semblerait logique, de continuer sur les pages suivantes.
Pour éviter cela, il faut utiliser l'environnement longtable du package éponyme.
2.
3.
4.
5.
\usepackage
{longtable}
...
\begin
{longtable}{types colonnes}
...
\end
{longtable}
La syntaxe d'un environnement longtable est identique à celle d'un environnement tabular. Toutefois le package propose deux commandes supplémentaires pour préciser les en-têtes et pieds de tableau, qui sont répétés sur chaque page. Ces commandes sont, respectivement, \endhead et \endfoot. Il existe aussi aussi une commande \endfirsthead pour préciser l'en-tête spécifique à la première page du tableau et une commande \endlastfoot pour préciser le pied spécifique à la dernière page du tableau.
Ces quatre commandes sont optionnelles, elles doivent s'utiliser en début de tableau : il faut placer les éléments correspondants avant chacune des commandes, de la manière suivante :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
\begin
{longtable}{types colonnes}
Cellules d'
en-tête.
\endhead
Cellules d'
en-tête pour la première page.
\endfirsthead
Cellules de pied.
\endfoot
Cellules de pied pour la dernière page.
\endlastfoot
Cellules de corps de tableau.
\end
{longtable}
Avec longtable, il faut compiler deux fois le fichier .tex. En effet, XeLaTeX - comme d'ailleurs LaTeX - n'arrive pas à déterminer la taille des colonnes à la première compilation : il procède à un calcul page par page. Cependant il stocke la taille maximale des colonnes dans un fichier temporaire, portant l'extension .aux. Lors de la seconde compilation, il se sert de ce fichier temporaire pour indiquer la taille des colonnes sur chacune des pages.
- Le package csvpie propose une fonction pour tracer un diagramme circulaire à partir d'un fichier .csv(92).
- Le package datatool propose un certain nombre de graphiques statistiques. Il faut enregistrer les données selon une forme liée au package.
Nous renvoyons à sa documentation(93).
Pour afficher un graphique statistique, nous recommandons d'utiliser le package TikZ (☞ Chapitre 2Chapitre 2 - Commencer avec XeLaTeX). Toutefois la maîtrise de cet outil peut se révéler relativement complexe. C'est pourquoi nous listons ici quelques packages utiles :
8-D. Où insérer les éléments non textuels ? la notion de flottants▲
Nous avons vu comment insérer des éléments non textuels. Cependant vous constaterez rapidement que la mise en forme n'est pas toujours des meilleures, l'élément s'insérant dans le texte à l'endroit précis où il a été appelé, ce qui peut entraîner des espaces blancs disgracieux. En outre, ces éléments non textuels disposent habituellement d'une légende, que nous ne savons pas encore mettre.
Pour résoudre ces deux problèmes - positionnement esthétique et légende - LaTeX utilise la notion de flottant. Un flottant est donc un élément non textuel que LaTeX essaie d'insérer au meilleur endroit du point de vue de l'esthétique et qui dispose (éventuellement) d'une légende.
Il existe deux types principaux de flottant :
La syntaxe pour insérer le premier type est la suivante :
2.
3.
4.
5.
\begin
{figure}[<paramètre de placement>]
Insertion de la figure ou de l'
image,
suivant les codes montrés plus haut.
\caption
{<Légende>}
\end
{figure}
Celle pour insérer le second est la suivante :
2.
3.
4.
\begin
{table}[<paramètre de placement>]
Insertion d'
un tableau suivant les codes montrés plus haut.
\caption
{<Légende>}
\end
{table}
Si la commande \caption est insérée au-dessus de la figure, de l'image ou du tableau, la légende sera située au-dessus de l'élément et non en dessous. Il est possible, mais déconseillé de ne pas mettre de légende.
Nous avons un exemple de flottant dans ce chapitre : la figure 8.1.
On pourrait vouloir changer les intitulés comme figure et tableau. Tout ceci est possible : nous en parlons plus loin, dans le passage consacré aux chaînes de langue de polyglossia (☞ Table des matières ou sommaire ? Les chaînes de langues de polyglossiaTable des matières ou sommaire ? Les chaînes de langues de polyglossia).
De même on pourrait souhaiter renvoyer automatiquement au numéro et la page d'une figure : nous en parlons dans le chapitre consacré à la navigation à l'intérieur d'un document (☞ Chapitre 16Chapitre 16 - Renvois internes).
À noter que, comme les titres de partie, la commande \caption peut recevoir un argument optionnel qui compte pour titre dans la table des figures ou la table des tableaux (☞ Table des figures et table des tableauxTable des figures et table des tableaux) : \caption[⟨Légende pour la table⟩]{⟨Légende⟩}.
Il est parfois utile de centrer le contenu du flottant. Il s'agit ici d'une exception au principe de séparation du fond de la forme. Pour procéder à ce centrage, il faut utiliser la commande \centering.
2.
3.
4.
5.
6.
\begin
{figure}[<paramètre de placement>]
\centering
Insertion de la figure ou de l'
image,
suivant les codes montrés plus haut.
\caption
{<Légende>}
\end
{figure}
Pour personnaliser les styles des légendes, la méthode la plus simple reste encore d'utiliser le package caption. Nous renvoyons à sa documentation(94).
Pour utiliser une légende en dehors d'un flottant, on peut utiliser le package ccaption(95), qui permet d'autres choses encore.
Si l'on souhaite avoir deux éléments flottants en vis-à-vis, sur la page gauche et sur la page droite, on peut se servir du package dpfloat(96).
Le package endfloat(97) permet, quant à lui, de placer systématiquement les flottants à la fin du travail.
Pour avoir des flottants orientés dans un autre sens que celui de la page, on utilisera le package rotfloat(98).
Il est possible d'insérer au sein d'une figure des sous-figures, chacune d'entre elles disposant d'une légende, en plus de la légende principale ; il faut utiliser le subcaption(99).
8-D-a. Choix de l'emplacement du flottant▲
Le ⟨paramètre de placement⟩ indique à LaTeX comment placer idéalement les flottants. Il s'agit d'un paramètre indicatif que le compilateur essaie autant que possible de suivre, sans pour autant être contraint. Les valeurs sont les suivantes :
Valeur | Signification |
h | À l'emplacement de l'appel au flottant |
t | En haut d'une page |
b | En bas d'une page |
p | Sur une page dédiée aux flottants |
Si le système des flottants permet généralement de conserver une mise en page correcte tout en n'éloignant pas trop l'élément de son emplacement, il arrive parfois que l'éloignement soit trop important.
La commande \FloatBarrier du package placeins permet de remédier à ce problème(100). Tous les flottants appelés avant la commande sont placés avant celle-ci.