Tutoriel LaTeX (intermédiaire)

Dans cette section vous trouverez de nombreux tutoriels pour vous expliquer le fonctionnement des différents packages disponibles pour LaTeX. Tous les tutoriels et exemples ont été réalisés par les membres du club*nix.

Document recto et recto-verso

J'ai longtemps cherché à savoir comment faire pour que lorsque je créer un document recto-verso latex me mette la table des matières sur une page impaire et non directement après la page de titre. Je viens seulement de trouver l'astuce alors je la partage dans cette section. En fait il faut utiliser un \cleardoublepage à la place du \clearpage dans l'entête du club.
Pour avoir une page vide après la page de titre (sans numéro de page ou titre) il suffit de faire :

\begin{document}
\maketitle
\thispagestyle{empty}
\clearpage
\thispagestyle{empty}
\cleardoublepage
 
\tableofcontents
\thispagestyle{empty}
\clearpage
\thispagestyle{empty}
\cleardoublepage

Les images et les figures

Il existe plusieurs manières d'ajouter des images à un document LaTeX. Nous allons voir ensemble quelques possibilités offertes par LaTeX pour la gestion des images.

La commande la plus utile est \includegraphics{image.png}. Cette commande permet de spécifier une image de type binaire (bmp, png, jpeg, etc.), pour pdflatex ou vectoriel (ps, eps, dvi ...) pour latex. Il est possible de faire une mise à l'échelle ou de forcer une taille précise (largeur ou hauteur) avec les options suivantes :

\includegraphics[scale=0.8]{image.png}
\includegraphics[heigth=10cm]{image.png}
\includegraphics[width=0.5\textwidth]{image.png}

La première commande aura pour effet d'inclure image.png avec une mise à l'échelle de 80%,
la deuxième commande aura pour effet d'inclure image.png avec une hauteur de 10cm, la largeur sera automatiquement réduite/agrandie si nécessaire,
la dernière commande aura pour effet d'inclure image.png avec une largeur égale à 50% de la largeur du texte.

Partie 1 : Les tableaux

Réaliser un tableau avec latex peut sembler simple, pourtant il arrive souvent que le résultat obtenu n'est pas du tout ce que l'on souhaitait. Dans cet article vous allez apprendre à utiliser les différents types de tableaux en latex.

Ce tutoriel s'adresse à tous ceux qui utilisent déjà latex, la lecture du tutoriel latex du club*nix est nécessaire si vous voulez profiter pleinement du présent tutoriel. Je vous invite à copier/coller ces exemples pour bien voir ce qu'ils font, note : les exemples ont étés compilés et testés sans problèmes avec Texlive mais si vous utilisez Tetex il ne devrait pas y avoir de soucis. Si jamais vous avez un problème pensez à bien vérifier que vous utilisez les bon packages. Je mets en pièce attachée le fichier entête utilisé pour compiler les exemples.

Tabular

C'est le tableau de base le plus utilisé. Son emploi est très simple : on commence avec \begin{tabular} et \end{tabular}. De plus on doit indiquer le nombre de colonne au tableau ainsi que on alignement ; pour cela on déclare le tableau comme ce qui suit :

\begin{tablular}{lcr}
1ere cellule & 2eme cellule & 3eme cellule\\
une autre ligne : & plip & plop\\
etc & \ldots & \vdots\\ 
\end{tabular}

Bon comme vous l'avez deviné, {lcr} sert à indiquer l'alignement du texte dans la cellule du tableau. Ainsi les cellules dans la première colonne seront justifiée à gauche, celles dans la deuxième colonne seront centrées, et celles dans la dernière colonne justifiées à droite. De plus on utilise le symbole & pour séparer les colonnes du tableau.

Marquer les séparateurs

Voilà vous avez appris à construire un tableau. La question qui se pose c'est comment est-ce que je fais pour pouvoir tracer des lignes qui séparent les différentes colonnes ? C'est très simple : il faut utiliser le pipe (caractère obtenu en tapant Alt gr + 6 sur un clavier azerty : | ) pour ça. Exemple :

\begin{tablular}{|l|c|r|}
\hline
1ere cellule & 2eme cellule & 3eme cellule\\ \hline
une autre ligne : & plip & plop\\ \hline
etc & \ldots & \vdots\\ \hline
\end{tabular}

Ici on note que le pipe, |, se place dans {lcr} ; il n'est pas obligatoire de mettre qu'une seule fois ainsi {|l||c|r} est tout aussi correct. De plus on peut aussi tracer des lignes horizontales avec \hline. Essayez de tester vous même les autres possibilités.

Tracer des lignes horizontales sur une ou plusieurs colonnes

On peut utiliser \cline qui prend 1 argument obligatoire : {colonne départ - colonne arrivée}
Exemple :

\begin{tabular}{|c|c|c|}
\hline
plop & plip & plup\\
\cline{1-1}
plop & plip & plup\\
\cline{2-3}
plop & plip & plup\\
\cline{1-2}
plop & plip & plup\\
\hline
\end{tabular}

Fusionner des cellules avec multicolumn

Le package multicolumn permet de "fusionner" des cellules horizontales. Il prend en argument : le nombre de colonnes, le motif, le texte à afficher dans la cellule. Exemple :

\multicolumn{5}{||c||}{plop}

multicolumn s'utilise à l'intérieur de l'environnement tabular.
Exemple :

\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{\textbf{Club*nix}}\\
\hline
\multicolumn{2}{|c|}{\LaTeX{}} & \multicolumn{2}{c|}{C}\\
\hline
furet & pdflatex & gcc & -Wall\\
\hline
debian & evinces & make & gentoo\\
\hline
\end{tabular}

Note il est également possible de fusionner des cellules verticalement avec la commande \multirow qui s'utilise presque comme \multicolumn

Package array

Le package array permet d'ajouter des nouvelles manières de formater son texte dans les cellules. Il ajoute principalement trois nouveaux mots clés : p, b et m. Ces mots doivent obligatoirement être suivis de la taille de la cellule. p permet de réaliser un alignement vertical du texte vers le haut, b un alignement vertical vers le bas et m de centrer verticalement le texte.

Exemple sans utiliser m, b ou p :

\begin{tabular}{|l|c|}
\hline
gcc &  When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. The "overall options" allow you to stop this process at an intermediate stage.  For example, the -c option says not to run the linker. Then the output consists of object files output by the assembler\ldots{}\\
\hline
\end{tabular}

Vous avez remarqué ? Le texte est beaucoup trop long pour tenir sur une seule cellule et est tronqué. Pour remedier au problème on peut utiliser m{6cm}. Il faut penser à utiliser le package array :
\usepackage{array}
Exemple :

\begin{tabular}{|l|m{6cm}|}
\hline
gcc &  When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. The "overall options" allow you to stop this process at an intermediate stage.  For example, the -c option says not to run the linker. Then the output consists of object files output by the assembler\ldots{}\\
\hline
\end{tabular}

Bien entendu on peut augmenter la taille du paragraphe si l'on veut plus de place mais il faut faire attention à ne pas dépasser la largeur de la page.

tableaux dont la largeur est spécifiée en argument

Dans les exemples qui suivent, la largeur du tableau est donnée en argument de la manière suivante :
\begin{tabular[xy]}{largeur}{colonnes}
où largeur correspond à celle du tableau et [xy] à x ou y comme nous allons le voir. Pour connaitre la largeur de la page, on utilise la commande \linewidth

tabularx

Tabularx fonctionne de manière similaire à tabular, sauf que celui-ci permet l'utilisation d'un nouveau motif : X qui permet d'entre en mode paragraphe (de type p). Sachant que les cellules se partagent l'espace disponible en largeur. Il faut utiliser le package tabularx :
\usepackage{tabularx}
Exemple :

\begin{tabularx}{\linewidth}{|l|X|X|}
\hline
plop & plip plip plip pliplipliplipliplip\ldots & pluplupluplupluplupluppluplup\ldots\\
\hline
\end{tabularx}

tabulary

Tabulary s'utilise de manière similaire à tabularx sauf que nous utilisons les motifs en L, C, R et J à la place de X et permettent d'entrer en mode paragraphe aligné à gauche, centré, aligné à droite et justifié. Il faut utiliser pour ça les packages tabulary et calc :

\usepackage{tabulary}
\usepackage{calc}

Exemple :

\begin{tabulary}{\linewidth}{|L|J|J|}
\hline
plop & plip plip plip pliplipliplipliplip & pluplupluplupluplupluppluplup\\
\hline
\end{tabulary}

Il s'agit en fait de l'exemple précédent on note tout de même une petite différence entre le rendu de tabularx et celui de tabulary.

Fichier attachéTaille
Fichier entete.tex373 octets

Partie 2 : Bibliographie

Il y a 2 manières pour créer une bibliographie avec latex :

  • La manière dégeulasse avec thebibliography
  • La manière propre avec BibTeX

Je vais détailler les 2 manières de faire, la première peut vous servir si vous moins de 3 références bibliographiques, si ce n'est pas votre cas, tournez vous vers BibTeX qui est bien plus puissant.

thebibliography

Faire un bibliographie avec thebibliography est assez simple. Il suffit de d'abord de construire sa bibliographie avec l'environnement thebibliography. Chaque référence doit être insérée à l'aide de la commande \bibitem{ref} avec entre acolades ref le nom de votre référence. Pour citer vos références il faut utiliser la commande \cite{ref}ref est évidemment la référence à citer.

Voici un exemple concret :

\begin{document}
 
Un peu de blabla qui sert à rien…
 
Ce livre\cite{ol9} est un bon bouquin à mettre sur sa table de chevet.
 
\begin{thebibliography}{99}
\bibitem{ol1} "OpenLDAP, Main Page" . Internet : http://www.openldap.org . Mar. 28, 2008 [May. 1, 2008]
\bibitem{ol2} "OpenLDAP Software 2.4 Administrator's Guide: Introduction to OpenLDAP Directory Services" . Internet: http://www.openldap.org/doc/admin24/intro.html#Wha\
t\%20is\%20LDAP . [May. 1, 2008]
\bibitem{ol3}  "OpenLDAP Software 2.4 Administrator's Guide: A Quick-Start guide" . Internet: http://www.openldap.org/doc/admin24/quickstart.html. [May. 1, 2008]
\bibitem{ol4} "OpenLDAP Software 2.4 Administrator's Guide: The slapd Configuration File". Internet: http://www.openldap.org/doc/admin24/slapdconfig.html. [May. 1, 200\
8]
\bibitem{ol5} "OpenLDAP, Software, Man Pages: ldif" . Internet: http://www.openldap.org/software/man.cgi . [May. 12, 2008]
\bibitem{ol6} J.H.M. Dassen (Ray), Chuck Stickelman, Susan G. Kleinmann, Sven Rudolph, Santiago Vila, Josip Rodin, Javier Fernandez-Sanguino . (2006, June 17). The Deb\
ian GNU/Linux FAQ. version CVS . [On-line]. Available: http://www.debian.org/doc/FAQ/index.en.html. [May. 1, 2006]
\bibitem{ol7} Gustavo Noronha Silva . (2005, March). APT HOWTO. version 1.8.10.4. [On-line]. Available: http://www.debian.org/doc/manuals/apt-howto . [May 1, 2008]
\bibitem{ol8} "The Horde Project" . Internet: http://www.horde.org/ . [May. 12, 2008]
\bibitem{ol9}  G. Carter. "OpenLDAP: Building a Company white Pages" in LDAP System Administration, 2nd ed. O'Reilly Editions.
\end{thebibliography}
 
\end{document}

BibTeX

Avec BibTex, c'est un peu moins simple, il vous faut procéder en 3 étapes.

Étape 1 : créer le fichier bibli.bib

Ce fichier possède une syntaxe propre. Pour créer une nouvelle entrée, il faut commencer par décrire le type de référence dont il s'agit. Cela peut être un livre (book), un passage de livre (in-book), un manuel (manual), …
Chaque type d'entrée, commençant par un @. Ainsi si je veux insérer un livre, avec ast_tfot comme référence, je commencerai mon fichier par :

@book={ast_tfot,
 
}

Ensuite il faut indiquer l'auteur du livre, manuel, etc. Ceci étant fait grâce à la séquence author = {auteur}. On peut aussi renseigner le titre, title = {titre}. Il existe plein d'autres arguments, mais je ne vais pas tout détailler ici, ça serait trop long. Sachez juste qu'il existe des champs obligatoires, en général author, et que les champs qu'il est possible de renseigner changent en fonction du type d'entrée (book, manual, …). Donc je vous laisse chercher pour les autres types d'entrées.

Voici ce que donne une entrée complète de bibliographie, notez la virgule pour séparer chaque champs :

@book{ast_tfot,
author = {Van Meggelen, Jim \and Madsen,  Leif \and Smith,  Jared},
title = {Asterisk ; The Future of Telephony},
publisher = {O'Reilly},
isbn = {0-596-51048-9, 978-0-596-51048-0},
year = {2007},
edition = {second}
}

Étape 2 : Insérer la bibligraphie dans votre fichier .tex

Construire la bibliographie ne suffit pas ; il faut maintenant dire à LaTeX d'utiliser vos références.
Ceci est fait grâce à la commande \bibliography{blibli.bib}. Mais il faut aussi dire quel style nous allons utiliser pour construire notre bibliographie. On utilise la commande \bibliographystyle{plain} avant \bibliography{blibli.bib}, pour indiquer que l'on utilise le style plain pour construire la bibliographie.
Il existe de nombreux styles pour constuire une bibliographie, on retiendra en particulier : plain, abbrv, alpha. Je vous laisse découvrir l'effet de chaque style sur la bibliographie et les citations, qui se font aussi avec la commande \cite{ref} ; par exemple pour citer mon bouquin sur Asterisk, je vais procéder de la manière suivante : \cite{ast_tfot}.

Étape 3 : compiler le tout

La compilation d'un document comportant une bibliographie externe se fait en 3 passes latex et 1 passe bibtex :

pdflatex rapport.tex
bibtex rapport
pdflatex rapport.tex
pdflatex rapport.tex

Petite explication : lors du premier passage de pdflatex, le fichier rapport.aux va être généré, c'est de ce fichier dont bibtex a besoin pour fonctionner. Ensuite l'appel à bibtex va générer les fichiers, rapport.bbl et rapport.blg dont pdflatex va se servir pour insérer la bibliographie. Le dernier passage sert en fait à construire correctement les références croisées (comme dans le cas de la table des matières et les footnotes).

Le prochain chapitre portera sur la création d'un index/glossaire, qui arrivera quand j'aurais le courage de le rédiger.
Au passage, je vous conseille d'aller voir sur ce site pour appendre à gérer les compilations LaTeX avec GNU Make.