Réputé d'accès difficile, LaTeX est souvent considéré comme un outil réservé aux " TeXperts " maîtrisant un art qui s'apparente plus à la programmation qu'à la composition de textes. Au travers d'exemples simples, basés sur des analogies entre LaTeX et HTML, on s'aperçoit que la mise en forme de documents avec LaTeX n'est pas l'apanage d'un cercle d'initiés mais permet à tout un chacun de façonner des documents d'aspect professionnel tout en se concentrant plus sur le fond que sur la forme.
Un peu d'histoire
Vers la fin des années '70, le professeur Donald Knuth est plongé dans la rédaction d'une série d'ouvrages consacrés à l'art de la programmation lorsqu'il se rend compte qu'aucun produit existant ne lui permet de composer ses textes comme il le souhaite. Ne reculant devant aucun sacrifice, il décide alors de se forger son propre outil de composition, TeX (que l'on prononce généralement « thèque »). Cet outil lui assure une maîtrise totale de la mise en page, son objectif étant de pouvoir créer des livres « esthétiques ».
Très vite, TeX se répand dans la communauté scientifique (surtout mathématique et informatique) pour devenir l'outil de prédilection de mise en forme de documents. Sa mise en œuvre nécessite toutefois un apprentissage assez important, ce qui restreint quelque peu le cercle de ses adeptes. Un pas important pour rendre son utilisation plus simple est accompli par la diffusion d'une extension, LaTeX, mise au point par Leslie Lamport au début des années '80. Elle facilite le travail des auteurs en les déchargeant des soucis de typographie et leur laisse le loisir de se concentrer davantage sur la structure de leurs documents.
La disponibilité de LaTeX sur une variété de plates-formes matérielles et logicielles, sa distribution sous forme de packages facilement installables font que l'échange de fichiers LaTeX au travers de l'Internet ne pose plus guère de problèmes et donnent à ce format une portée universelle.
LaTeX en quelques phrases
LaTeX est essentiellement un langage de balisage de documents, comme peuvent l'être SGML, le « prototype » des langages de balisage, ou HTML rendu populaire par l'éclosion du Web. Ces langages s'attachent à décrire la structure et la sémantique des documents plutôt que leur apparence. Dans ce type de langage, les différents éléments d'un document sont définis à l'aide de commandes ou de mots clés qui détermineront par la suite l'aspect que prendront ces éléments.
Plus concrètement, lorsqu'on écrit un titre de section, on ne spécifie ni la police ni la taille des caractères, mais seulement qu'il s'agit d'un titre de section. En fonction de la nature du document (article, rapport ou livre par ex.), un choix approprié de police et de taille sera fait. Outre le fait d'assurer une homogénéité au document, ce mécanisme autorise des changements de style dont la portée s'étend à tout le document, en redéfinissant seulement quelques commandes.
Un autre atout de LaTeX est qu'il est capable de gérer correctement tous les renvois au sein d'un document (l'équivalent des liens hypertexte qui pointent sur une autre section du même document) et de construire automatiquement table des matières, liste des figures et liste des tableaux. Sans parler de l'index ou de la bibliographie, dont la génération devient une promenade de santé grâce à LaTeX et quelques utilitaires qui lui sont généralement associés.
Cerise sur le gâteau : il existe des outils transformant un document LaTeX en un ensemble de pages Web prêt à être mis en ligne.
De la saisie à la visualisation
À la base, la composition d'un fichier LaTeX commence par sa saisie à l'aide d'un éditeur de textes comme Emacs, jed, joe, vi ou autres. Ce fichier texte porte l'extension .tex et décrit, à l'aide de commandes LaTeX, la structuration du document et des éléments qui le composent : tableaux, listes, figures etc...
Pour en faire un document prêt à être visualisé (que ce soit à l'écran ou sur papier, après impression), il faut faire passer ce fichier par deux moulinettes successives, comme l'illustre la figure ci-dessus. La première, qui n'est autre que le programme latex, produit un fichier décrivant le document d'une façon totalement indépendante de tout périphérique. Ce fichier .dvi (pour device independent) contient toute l'information concernant les polices de caractères utilisées dans le document ainsi que le placement et la nature de chacun des symboles qui s'y trouvent.
En donnant ce fichier en pâture à un pilote plus spécifique, on obtient en sortie un fichier que l'on peut alors visionner à l'écran (grâce à des pilotes tels que xdvi ou kdvi) ou envoyer à l'imprimante (le plus souvent à l'aide du pilote dvips).
Mis à part le fait que le document d'origine n'est qu'un vulgaire fichier texte, faire le parallèle avec le rendu d'un document HTML serait un peu tiré par les cheveux. En effet, l'interprétation d'un document HTML, que ce soit pour son affichage ou son impression se fait par un seul et même outil : le navigateur. Il n'y a dans ce cas aucune génération de format intermédiaire comparable au dvi. Ce n'est donc que dans la section suivante que l'analogie entre la composition d'un document LaTeX et d'un document HTML prendra tout son sens.
Structure élémentaire d'un document LaTeX
Cette section se propose d'effectuer un très bref tour d'horizon des aspects fondamentaux de LaTeX en mettant l'accent sur les correspondances qui peuvent exister entre LaTeX et HTML.
Préalablement à sa lecture, plusieurs concepts de base doivent être éclaircis :
- En LaTeX, comme en HTML, le nombre d'espaces entre deux mots, ainsi que les sauts de lignes ne sont pas significatifs : mettre un ou trois espaces entre deux mots consécutifs donnera le même résultat. De même, couper les lignes de texte par <ENTREE> ne produira aucun effet visible (seul une ligne vide entre deux lignes de texte entra"nera une séparation entre deux paragraphes).
- Une commande LaTeX est un mot clé commençant par une barre de fraction inversée (" \ "). Si elle nécessite des arguments, ceux-ci sont spécifiés entre accolades (éventuellement entre crochets pour des arguments optionnels). Par exemple :
\chapter{Titre de chapitre}
est la commande indiquant à LaTeX le commencement d'un nouveau chapitre.
Squelette
En HTML, tout document proprement composé doit comporter un squelette ressemblant à :
<!doctype html public "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<link rel="stylesheet" href="style.css">
<title>Titre du document</title>
</head>
<body>
Texte du document.
</body>
</html>
Ce squelette définit ce qu'est le document (un document HTML conforme au standard émis par le W3C dans sa version 3.2), un en-tête (entre les balises head) comportant un lien vers une feuille de style ainsi qu'un titre et un corps de document (entre les balises body).
De même, en LaTeX, un document minimal pourrait ressembler à :
\documentclass{article}
\usepackage[french]{babel}
\begin{document}
\title{Titre du document}
\maketitle
Texte du document.
\end{document}
On y reconnait en premier lieu une commande identifiant la classe du document :
\documentclass{article}
Il s'agit ici de la classe article qui définit un certain nombre de paramètres (et de commandes) pour la mise en page d'articles.
D'autres classes, comme book pour les livres ou report pour les rapports, disposent de leurs propres formats. Par exemple, les classes book et report permettent de créer des chapitres, alors que la plus grande subdivision dans la classe article est la section.
Puis vient une commande chargeant des extensions spécifiques au français :
\usepackage[french]{babel}
En première approximation, il s'agit d'une feuille de style capable d'assurer la mise en forme des spécificités de la langue de Molière. C'est elle qui se chargera d'adapter les césures, ou encore de remplacer " Table of Contents " par " Table des matières " quand il le faut. La directive \usepackage a donc un rôle analogue à la balise <link rel="stylesheet"...> en demandant le chargement d'un fichier contenant des extensions à l'environnement préexistant.
Contrairement au HTML, LaTeX ne comporte pas de commande explicite pour délimiter l'en-tête : celui-ci est constitué de tout ce qui se trouve entre \documentclass et \begin{document}.
Les deux langages possèdent également des commandes pour définir le titre, bien qu'en LaTeX, celui-ci soit défini dans le corps du document et que sa composition n'ait lieu qu'après que la commande \maketitle ait été précisée. Ceci est lié au fait que la composition d'un titre en LaTeX peut impliquer beaucoup plus de choses qu'en HTML (le placement de la date, des auteurs et de leurs adresses notamment), où il ne s'agit que de définir la cha"ne de caractères qui appara"tra dans la barre de titre de la fenêtre du navigateur.
Bref, le format général d'un document LaTeX est très proche de celui d'un document HTML ; tous deux comportent une définition de ce qu'est le document, un en-tête permettant d'étendre ou de redéfinir des paramètres de l'environnement et un corps où figure le contenu au sens strict.
Subdivisions
L'un des facteurs qui facilitent la lecture d'un document est la structuration. Lire un document déversant d'un seul tenant des dizaines de lignes sans aération est considérablement plus ardu que de se pencher sur un texte où chaque paragraphe se détache clairement au sein de sections et de chapitres.
Chacun des deux langages propose ainsi ses propres commandes pour mettre en forme des divisions sur plusieurs niveaux. En HTML qui ne conna"t pas les <h1>, <h2>, <h3> et consorts ? LaTeX offre les mêmes niveaux de description, avec la valeur ajoutée que ces divisions sont numérotées par défaut et que les mots clés Partie ou Chapitre sont automatiquement ajoutés.
À titre d'exemple, voici deux extraits structurellement équivalents, le premier en HTML et le second en LaTeX:
...
<h2>Un premier chapitre</h2>
<h3>Une première section</h3>
<h4>Une première sous-section</h4>
...
<h4>Une deuxième sous-section</h4>
...
<h3>Une deuxième section</h3>
...
<h2>Un deuxième chapitre</h2>
...
Et voici son pendant LaTeX :
...
\chapter{Un premier chapitre}
\section{Une première section}
\subsection{Une première sous-section}
...
\subsection{Une deuxième sous-section}
...
\section{Une deuxième section}
...
\chapter{Un deuxième chapitre}
...
Une distinction d'ordre syntaxique est qu'en HTML les balises vont de paire (sauf exception) et qu'en LaTeX, une commande de subdivision entame une nouvelle subdivision qui se prolonge jusqu'à la prochaine commande de ce type.
Styles typographiques
Bien qu'ils soient à manier avec précaution, les styles typographiques (principalement la mise en gras, en italique, ou l'utilisation de petites majuscules) permettent de donner du relief à un document en faisant ressortir certains éléments.
En HTML, il suffit d'entourer le texte concerné par les balises ad hoc, comme dans l'extrait suivant :
Je <b>ne veux pas</b> me mettre à <i>LaTeX !</i>
<small>html</small> est bien plus facile.
En LaTeX, les mêmes effets s'obtiennent avec :
Je \textbf{ne veux pas} me mettre au \textsc{html} !
\textit{LaTeX} est bien plus puissant.
Sans commentaire !
Listes
Que ce soit pour passer commande au père Noël, énumérer les ingrédients d'une recette de cuisine ou recenser les composants d'une configuration de rêve, les listes occupent une place de choix dans la composition de documents. Il était donc normal qu'aussi bien HTML que LaTeX en proposent une large variété allant de l'alignement d'entrées à la liste numérotée ou descriptive.
En voici un échantillon en HTML :
...
Cher Papa Noël, pourrais-tu m'apporter :
<ul>
<li>Une paire de chaussures neuves.
<li>Une bo"te de sparadraps.
<li>Un VTT (avec des freins qui marchent !).
</ul>
Pour préparer un gâteau au chocolat, prenez :
<ol>
<li>Une pâte toute prête,
<li>Quelques dizaines de sachets de Smarties,
<li>Cinq utilisateurs de Windoze :-)
</ol>
Dans la configuration que j'avais commandée, je n'ai pas trouvé :
<dl>
<dt>L'écran :
<dd>J'ai du mal à brancher mon câble Péritel sur la carte vidéo.
<dt>Le clavier :
<dd>Taper des textes à la souris n'est pas très pratique !
<dt>Linux :
<dd>Ça vous viendrait à l'idée de vendre une voiture sans moteur ?!
<dl>
...
Sa transposition en LaTeX est quasi immédiate, comme on peut le constater ci dessous :
...
Cher Papa Noël, pourrais-tu m'apporter :
\begin{itemize}
\item Une paire de chaussures neuves.
\item Une bo"te de sparadraps.
\item Un VTT (avec des freins qui marchent !).
\end{itemize}
Pour préparer un gâteau au chocolat, prenez :
\begin{enumerate}
\item Une pâte toute prête,
\item Quelques dizaines de sachets de Smarties,
\item Cinq utilisateurs de Windoze :-)
\end{enumerate}
Dans la configuration que j'avais commandée, je n'ai pas trouvé :
\begin{description}
\item[L'écran :] J'ai du mal à brancher mon câble Péritel sur la carte vidéo.
\item[Le clavier :] Taper des textes à la souris n'est pas très pratique !
\item[Linux :] Ça vous viendrait à l'idée de vendre une voiture sans moteur ?!
\end{description}
...
Comme pour les subdivisions ou les styles typographiques, les analogies entre HTML et LaTeX sautent aux yeux. Il suffit presque d'opérer une simple substitution de mots clés pour passer d'un langage à l'autre.
Tableaux
Vaste sujet que les tableaux ! Les commandes pour produire des tableaux un rien évolués sont tout aussi difficiles à mettre en pratique en HTML qu'en LaTeX, bien que ce dernier puisse se montrer particulièrement rétif à tout effort de mise en forme.
Si l'on se contente de tableaux simples, il est encore possible de faire des analogies entre les deux langages, mais dès que l'on souhaite une composition un peu élaborée, la richesse de LaTeX prend le pas sur le côté élémentaire de HTML. Ceci se paye par une syntaxe qui adopte très vite un côté assez impénétrable, propre à faire fuir tout néophyte, même animé de la meilleure volonté du monde.
Voici un exemple simplissime de tableau en HTML :
<table border=1>
<tr align=center>
<th>Colonne 1</th> <th>Colonne 2</th> <th>Colonne 3</th>
</tr>
<tr align=center>
<td>case 1</td><td>case 2</td><td>case 3</td>
</tr>
<tr align=center>
<td>case 4</td><td>case 5</td><td>case 6</td>
</tr>
</table>
Le même tableau s'écrirait en LaTeX :
\begin{tabular}{|c|c|c|}
\hline
\textsf{Colonne 1} & \textsf{Colonne 2} & \textsf{Colonne 3}\\
\hline
case 1 & case 2 & case 3\\
\hline
case 4 & case 5 & case 6\\
\hline
\end{tabular}
En LaTeX, le nombre de colonnes ainsi que la disposition du texte dans celles-ci sont spécifiés dès la création du tableau. En effet, l'instruction :
\begin{tabular}{|c|c|c|}
provoque la création d'un tableau de trois colonnes dont le texte sera centré, qui seront séparées par un trait vertical et entourées par un bord vertical (c'est la signification de la suite de caractères |c|c|c|).
En HTML, il est possible de spécifier les en-têtes des colonnes à l'aide de la balise <th>. LaTeX n'a pas cette notion d'en-têtes (du moins dans sa version de base) et c'est à nous d'indiquer pour chaque case de la première ligne que nous voulons une police sans sérif grâce à la commande \textsf. Si une mise en forme plus complexe devait être utilisée pour les en-têtes de colonnes dans l'ensemble du document, nous aurions eu intérêt à définir une macro-commande qui s'en charge, mais ceci dépasse le cadre de ce document.
Enfin, le contenu des cases sur une même ligne est séparé par des perluètes (symbole &) et la fin d'une ligne est indiquée par une double barre de fraction inversée (\\). On obtient ainsi l'équivalent des balises <td> et <tr>. Pour obtenir le trait de séparation horizontale, on utilise la commande \hline.
Dans ce cas, le rapprochement entre les syntaxes LaTeX et HTML n'est pas immédiat bien que, structurellement, les constructions se ressemblent. Après tout, un tableau n'est toujours qu'un assemblage de cases disposées en lignes et en colonnes, quelque soit la manière de s'y prendre pour le décrire...
En guise de conclusion
Au travers de la série d'exemples que nous venons de parcourir, les points communs entre LaTeX et HTML ne font plus de doute. En caricaturant un peu, on pourrait affirmer que LaTeX et HTML ont un même ancêtre commun et qu'ils dérivent donc d'une même logique. Bien que ce rapprochement soit exact en termes généraux, ces deux langages ne servent toutefois pas les mêmes intérêts. Le HTML a été conçu pour être d'une utilisation aisée, faisant de tout utilisateur un potentiel " éditeur " de documents au prix d'un contrôle moins poussé du rendu final. Le souci majeur de LaTeX est d'aboutir à une mise en page en tout point esthétique et homogène pour des documents à caractère scientifique et technique. Essayez-donc de mettre en forme une équation mathématique en HTML, voire même un document multi-colonnes sans recourir à un tableau !
À l'heure actuelle, LaTeX se trouve dans toute distribution Linux qui se respecte, offrant à l'ensemble des utilisateurs la possibilité d'exploiter son potentiel pour composer des documents d'aspect professionnel. LaTeX est notamment mis à contribution pour la composition des HOWTO, ces précieux opuscules qui en ont dépanné plus d'un lors d'une installation laborieuse.
La disponibilité d'un réservoir inépuisable d'extensions, par l'intermédiaire d'un réseau de serveurs spécialisés, ainsi que les forums comp.text.tex et fr.comp.text.tex, ou encore les sites Web comme le (La)TeX Navigator (http://www.loria.fr/services.tex), qui lui sont dédiés, mettent à portée de main des Internautes qui le souhaitent les moyens de se plonger au coeur de LaTeX.
De plus, considéré jusqu'à il y a peu comme un peu lourd pour la composition de petits documents (lettres, mémos de quelques pages, etc.), LaTeX bénéficie aujourd'hui d'outils comme LyX qui offrent un véritable " clickodrome " pour la production de documents.
Si le coeur vous en dit, plongez-vous dans l'univers fascinant de LaTeX et vous deviendrez très vite un « TeXnicien », voire un « TeXpert ».
Mark Hoebeke <mh@jouy.inra.fr>
PAR Où COMMENCER
Voici une liste de pointeurs vers des ressources LaTeX en français, destinées aux utilisateurs débutants :
Apprends LaTeX ! (Marc Baudoin)
Tout ce qu'il faut savoir pour composer ses premiers documents en LaTeX, adressé plus spécifiquement (mais non exclusivement) aux stagiaires de tout poil harcelés par leur ma"tre de stage qui veut absolument un rapport en LaTeX.
http://www.loria.fr/services/tex/apprends_latex/apprends_latex.html
Introduction à TeX, manuel d'auto-formation (Michael Doob)
Vous prend par la main, de vos premiers pas en LaTeX jusqu'à la programmation de vos propres commandes.
http://www.linux-kheops.com/doc/tex/autotex.htm
La FAQ LaTeX (Marie-Paule Kluth)
Avant d'assaillir les forums de vos questions, assurez-vous que la réponse ne figure pas déjà dans cette compilation. Malheureusement, la mise à jour de cette FAQ n'est plus aussi suivie.
http://www.lri.fr/Francais/Recherche/ia/stuff/FAQ-LaTeX/
Le TeTeX-HOWTO (Robert Kiesling)
Couvre l'installation de la distribution teTeX sur Linux et les principes de base de son utilisation (ceci est une auto-promotion éhontée !).
http://www.freenix.org/unix/linux/HOWTO/TeTeX-HOWTO.html