Premiers codes

Maintenant que nous avons installé LaTeX et vu un peu mieux son fonctionnement, il est temps de voir un premier document.

Dans ce chapitre, nous étudierons la base de la base. Nous verrons la structure d’un document et comment il est organisé.

Un premier document

Reprenons notre code précédent. C’est le squelette d’un document LaTeX.

\documentclass{article}

% le préambule

\begin{document}
% le corps du document
\end{document}
% rien ne doit être écrit ici

Après tout ce que nous avons déjà raconté, nous devons déjà reconnaître des commandes. Voyons à quoi elles correspondent.

Le préambule

Le préambule correspond à un espace avant notre document à proprement parler. Il est constitué de plusieurs lignes que nous allons dès maintenant analyser. Ici, notre préambule va de la première à la quatrième ligne. Le préambule sert à spécifier des informations à propos de notre document.

La classe de document

La commande \documentclass est généralement la première utilisée dans un document LaTeX. Cette commande sert à indiquer à LaTeX quelle classe de document utiliser. Une classe est en quelque sorte un modèle, un type de document. Chaque type de document a ses spécificités, sa mise en forme… La commande \documentclass permet d’indiquer quel type de document on veut écrire pour pouvoir disposer de ses spécificités justement. Il existe donc des classes pour faire des articles, des livres, des lettres ou encore des présentations.

La commande \documentclass peut alors être vue comme une commande qui permet de choisir un modèle de fichier.

Dans notre code, nous demandons à LaTeX d’utiliser la classe article. Il existe d’autres types de classe comme book, mais nous allons tout d’abord nous concentrer sur la classe article. D’où notre première ligne.

\documentclass{article}
La zone d’affichage

Nous avons dit que le préambule précédait le document à proprement parler, c’est-à-dire la zone dirigée vers l’affichage. En LaTeX, on rédige entre deux commandes : \begin{document} et \end{document}. La première commande sert à dire qu’on commence le document et la seconde qu’on a terminé le document.

Ce que nous écrirons avant \begin{document} ou après \end{document} ne sera affiché. En fait, si nous essayons de rédiger dans le préambule par exemple, nous obtiendrons une belle erreur et tout ce que nous plaçons après la commande \end{document} ne sera pas pris en compte et sera ignoré. On voit bien que tout ça est bien compartimenté :

  • le préambule nous sert à indiquer les spécificités du document ;
  • la zone d’affichage contient ce qui sera affiché.

Bien sûr, dans la zone d’affichage, on utilise également des commandes, par exemple pour indiquer qu’un mot est important.

Dans la zone d’affichage, nous n’écrirons pas que les choses à afficher. Nous pouvons par exemple définir une commande dans cette zone. C’est possible et cela se fait fréquemment, même si la plupart des commandes seront définies dans le préambule.

Il est donc faux de croire que dans la zone d’affichage, on ne fait que rédiger. Il faut comprendre que ce qui doit être affiché doit être dans la zone d’affichage, pas que la zone d’affichage ne contient que ce qui doit être affiché.

Notre seconde compilation

Nous allons maintenant compléter un peu notre document. Écrivons ce que nous voulons dans la zone d’affichage et compilons le code ainsi obtenu. Compilons par exemple le code qui suit.

\documentclass{article}

\begin{document}
   Je suis un document.
\end{document}

Nous obtenons alors un document PDF d’une page avec juste écrit « Je suis un document ».

Maintenant, compilons ce code.

\documentclass{article}

\begin{document}
   Je suis un document créé grâce à la commande pdflatex.
\end{document}

Hé ! Les accents ne sont pas affichés !

Cela est dû à ce que l’on appelle l’encodage. Selon le tutoriel passé en lien, L’encodage est « la façon de transcrire un texte grâce aux codes des caractères qui le composent, selon un jeu de caractères donné ». Il faut donc indiquer à LaTeX dans quel encodage notre fichier est enregistré. Il existe plusieurs encodages. Les encodages par défaut diffèrent suivants les systèmes, mais certains encodages sont, bien heureusement, disponibles sous tous les systèmes. Nous conseillons d’utiliser UTF-8 partout. Il a l’avantage d’être disponible sur la majorité des systèmes et de gérer de nombreux caractères (en particulier les accents). Quasiment tous les éditeurs de texte proposent de choisir l’encodage voulu.

Les packages inputenc et fontenc

Il faut aussi que LaTeX sache dans quel encodage notre fichier est enregistré. Cela se fait grâce aux packages. Faisons un petit rappel à ce propos. Un package permet de rajouter de nouvelles fonctionnalités à notre code. Il existe des packages pour quasiment tout (pour faire des dessins par exemple). Les packages sont donc des extensions qui nous permettent de :

  • rajouter des fonctionnalités ;
  • modifier des paramètres ;
  • corriger des problèmes.

Lorsque nous compilons avec la commande pdflatex, nous pouvons préciser un encodage grâce au package inputenc auquel on passe en option l’encodage voulu.

Nous devons faire attention au fait que si nous utilisons inputenc avec l’option utf8, notre fichier source doit effectivement être encodé en UTF-8 pour ne pas avoir de mauvaise surprise.

Nous complétons encore cela avec le package fontenc qui lui se charge de la manière dont les fontes sont encodées et donc de la sortie obtenue. Nous allons l’utiliser avec l’option T1 car elle contient l’essentiel des caractères des langues d’Europe de l’Ouest et permet la gestion des coupures de la majorité de ces langues. Nous complétons alors notre code.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
   Je suis un document créé grâce à la commande pdflatex.
\end{document}

Recompilons alors notre code précédent, nous remarquons que les accents sont maintenant présents.

Les erreurs

Si nous écrivons quelque chose qui ne plaît pas à latex, il nous retournera une belle erreur. Pour le moment, nous n’avons pas encore de quoi faire d’erreur, mais voyons déjà comment il réagit en cas d’erreur et que faire lorsque cela arrive.

Certaines erreurs bloquent la compilation, d’autres non. Une erreur non bloquante (aussi appelé avertissement) aura généralement un effet, même si elle n’empêche pas la création du document. Il vaut alors mieux essayer de faire un document sans avertissement qu’on ne comprend pas. Si on sait pourquoi on a un avertissement et qu’on connaît ses conséquences, on peut le négliger.

Il faut distinguer plusieurs erreurs. Les erreurs dues au moteur (la compilation du code pose un problème) et celles dues à LaTeX (le code n’est pas conforme au langage).

Une première erreur

Créons un fichier avec une erreur. Essayons par exemple de compiler le code précédent, mais en écrivant \begin{document. Compilons donc le code suivant.

\documentclass{article}

\begin{document

\end{document}

Ici l’erreur est évidente. Il manque une accolade fermante après \begin{document. La question est comment LaTeX nous le fera-t-il remarquer. Nous voudrions bien un beau message d’erreur qui dit explicitement qu’il manque l’accolade fermante après \begin{document.

Les informations affichées lors de la compilation

Lorsque nous compilons le code précédent, nous obtenons dans la console ceci à quelques mots près.

This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/W32TeX (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./premier_latex.tex 
LaTeX2e <2016/03/31>
Babel <3.9r> and hyphenation patterns for 83 languages loaded.
(c:/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/19 v1.4h Standard LaTeX document class
(c:/texlive/texmf-dist/tex/latex/base/size10.clo))
Runaway argument?
{document
! paragraph ended before \begin was complete.
<to be read again> 
                  \par
l.4

?        

Une erreur est toujours présentée de la manière suivante.

! erreur
l. numéro de la ligne
Que faire en cas d’erreur

Lorsque nous obtenons une erreur, la première chose à faire est d’essayer de la comprendre. Avec notre code précédent, nous obtenons l’erreur paragraph ended before \begin was complete. détecté à la ligne 4 de notre document. Cela signifie que la primitive \par (qui correspond à deux retours à la ligne consécutifs) a été rencontrée dans l’argument de la commande \begin. On en déduit qu’on n’a pas fermé la commande \begin avant de sauter deux lignes.

Une primitive est une commande directement codée dans le moteur tex. Nous verrons plus tard pourquoi elle ne peut pas être présente dans la commande \begin.

Tout au long de notre apprentissage, nous verrons plusieurs messages d’erreurs classiques. Par exemple, nous obtenons l’erreur Too many }'s s’il y a trop d’accolades fermantes.

Une fois que nous avons compris l’erreur, il faut maintenant agir. Lorsqu’une erreur bloquante a lieu, le compilateur nous demande ce qu’on veut faire en utilisant un point d’interrogation. Nous pouvons faire plusieurs choix en indiquant une lettre. Il nous faut ensuite valider en appuyant sur Entrée.

  • q ou x arrête la compilation (nous pouvons également appuyer sur Ctrl + D pour cela). C’est sans doute la meilleure solution. Il nous suffit ensuite de corriger notre code avant de recompiler.
  • h affiche de l’aide à propos de l’erreur rencontrée.

Nous pouvons également appuyer sur Entrée, auquel cas la compilation continuera. Notons cependant qu’une erreur en entraîne souvent d’autres et qu’il vaut mieux ne pas continuer à compiler un code qui contient des erreurs. De plus, la compilation s’arrête dans tous les cas au bout de cent erreurs.

La rédaction en LaTeX

Les paragraphes et l’écriture

La rédaction en LaTeX n’est pas compliquée. Si on fait abstraction des commandes, le bloc principal que nous allons utiliser est le paragraphe. Et il s’agit bien d’un bloc aussi bien dans notre code que dans le document pdf. Pour le rédacteur, un changement de paragraphe correspond à un changement d’idée (la plupart du temps).

Suivant ce que nous venons de raconter, écrivons un texte composé de plusieurs paragraphes.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
   Je suis un document composé de plusieurs paragraphes. Voici un premier paragraphe.
   Je suis allé à la ligne pour commencer un autre paragraphe.
   Et maintenant un troisième paragraphe dans lequel il y a pleins d’espaces   ici   et    là. 
\end{document}

Compilons ce code et observons le résultat.

Quoi ! Nous n’obtenons pas de paragraphes ! Et nos espaces supplémentaires non plus ne sont pas là !

C’est dû aux règles de rédaction de Tex. Elles sont très simples, mais il faut les connaître. Voici les deux règles essentielles qui concernent les paragraphes.

  • Un retour à la ligne n’est pas interprété comme un changement de paragraphe, mais comme une espace. Pour changer de paragraphe, il faut sauter une ligne.
  • Sauter plusieurs lignes revient à sauter une ligne, donc à changer de paragraphes.

En fait, deux retours à la ligne consécutifs sont équivalents à la primitive \par (que nous avons déjà rencontrée). Elle permet d’indiquer explicitement à Tex la fin d’un paragraphe.

Dans certains arguments de commandes, la primitive \par est interdite. La commande \begin est de ce type. On dit que c’est une commande « courte ». Avoir une commande courte permet d’être sûr que l’argument de la commande ne comporte pas plus d’un paragraphe (dans le cas contraire, on obtient une erreur, du même type que celle vue avec \begin).

Notons que de même, plusieurs espaces sont interprétées comme une seule espace.

Le comportement des paragraphes peut être changé, mais ce n’est pas l’objet de ce chapitre.

Il faut juste retenir ces deux règles qui sont vraiment essentielles. Ces règles peuvent paraître absurdes, mais il est logique si l’on pense en termes de séparation du fond et de la forme. Ce comportement nous permet de présenter notre code en laissant des espaces où l’on veut.

Des caractères réservés

Bon, essayons maintenant d’écrire un document avec quelques symboles.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
   Dans mon document, je peux écrire de smileys :), ^^, :\ et même devenir riche $. 
\end{document}

Et là, catastrophe, on obtient une erreur. Notre code ne compile pas.

Cela est dû au fait que certains caractères sont réservés. Cela veut dire que nous ne pouvons pas les taper tels quels dans le code pour les afficher dans le document final.

Pourquoi sont-ils réservés ? Et si on veut les utiliser alors ? Comment fait-on ?

Ces caractères sont réservés pour une bonne raison : ils signifient quelque chose. Ils permettent de coder une action. \ par exemple permet de commencer une commande. Nous ne pouvons dès lors pas les écrire directement sans quoi le compilateur tentera de faire l’action que cette commande désigne. En écrivant \ceci, le compilateur tentera d’exécuter la commande \ceci et nous obtiendrons une erreur.

Pour obtenir ces caractères dans le texte, il nous faut utiliser des commandes. Voici un tableau des commandes à utiliser pour obtenir chaque caractère :

Caractère

Commande associée

{

\{

}

\}

%

\%

$

\$

&

\&

#

\#

~

\~

_

\_

^

\^

\

\textbackslash

Comme nous pouvons le voir, il y a très peu de caractères réservés, et les commandes à utiliser pour les avoir dans le texte ne sont pas compliqués. Il y a des caractères dont nous ne connaissons pas encore l’utilité, mais nous allons les voir pendant le reste du cours.

Les ligatures et l’espace insécable
L’espace insécable

Nous ne sommes pas là pour des leçons de typographie, mais sachez que l’espace insécable est une espace particulière qu’on place entre deux mots (ou signe de ponctuation) qui ne doivent pas être séparés par une fin de ligne. Il permet de les avoir tous les deux sur la même ligne. L’espace insécable s’emploie en français devant les signes de ponctuation doubles (points d’exclamation, deux-points, etc.) et en d’autres occasions.

En LaTeX, une espace insécable se fait avec le symbole ~.

Les ligatures

En français, les ligatures sont assez courantes (par exemple la ligature « œ » dans le mot œuf). LaTex propose un certains nombres de ligatures et nous permet d’écrire ces mots.

Les ligatures comme « œ » et « æ » sont accessibles à l’aide des commandes \oe et \ae (les commandes à utiliser en majuscule sont \OE et \AE).

Ces ligatures donnent l’occasion de parler d’une spécificité des commandes sans argument : si une commande sans argument est suivie d’un espace, celui-ci n’est pas pris en compte. Ainsi, en écrivant \oe uf, on obtient « œuf » et non « œ uf ». Pour prendre en compte l’espace, il y a trois solutions :

  • mettre une paire d’accolades vide après la commande : \oe{} uf ;
  • mettre un antislash après la commande : \oe\ uf ;
  • entourer la commande d’accolades : {\oe} uf.

La solution que nous croiserons le plus est celle de l’antislash.

D’autres ligatures sont automatiques. Par exemple, --- et -- permettent d’obtenir respectivement des tirets cadratins et des tirets demi-cadratins. Toutes ces petites choses nous facilitent grandement l’écriture.

Les commentaires

LaTeX possède une syntaxe pour les commentaires. Un commentaire commence par le signe % (nous comprenons pourquoi il est réservé) et se termine à la fin de la ligne. Les commentaires ne sont pas compilés et donc ne sont pas dans le document. Ils ne sont utiles que pour le lecteur du code.

Ils peuvent être utiles pour se rappeler l’utilité ou de la syntaxe de telle ou telle commande, ou encore pour ne pas compiler une partie du texte que nous ne sommes pas sûrs de vouloir dans notre document final. Nous pouvons par exemple commenter de cette manière.

\documentclass{article} % Utilisation de la classe article

% On charge des paquets pour l’encodage
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
   Je suis un document créé grâce à la commande pdflatex.
\end{document}

Commenter est très utile, mais il ne faut pas non plus tomber dans l’excès et commenter chaque ligne. Il est conseillé de ne commenter que les lignes compliquées à comprendre.

Le documentclass en profondeur

La commande documentclass nous permet de définir le type de document que nous voulons. Pour cela, elle charge un package, le package classe. Tout comme usepackage, la commande documentclass peut prendre des options qui nous permettent de définir notre document encore plus finement. Un appel à documentclass ressemblera plus à cela.

\documentclass[option1, option2]{nom_de_la_classe}

Bien entendu, chaque classe a ses options. Il faut aller voir la documentation de la classe pour connaître les options qu’elle prend en charge. Pour voir la documentation des classes de bases, il nous faudra taper texdoc classes. Nous pouvons également regarder ce site (que nous verrons en détail plus tard dans le tutoriel). Vu que nous utilisons la classe article, voyons quelques-unes de ses options pour finir ce chapitre.

Taille de la police

La taille de la police dans le texte courant est la première option que nous verrons. Par défaut, cette taille est de 10 pt. La classe article nous laisse le choix entre trois tailles.

Taille (pt)

Option

10

10pt

11

11pt

12

12pt

Ainsi, pour avoir une taille de 12 pt, nous utiliserons cette commande.

\documentclass[12pt]{article}
Format de papier

Le format de papier est une option qui peut s’avérer intéressante dans le cas où nous voulons un document spécifique. Le papier par défaut est soit au format A4, soit au format letter (le format par défaut dépend de notre installation). Nous disposons néanmoins de plusieurs autres formats.

Format

Option

A4

a4paper

A5

a5paper

B5

b5paper

Letter

letterpaper

Legal

legalpaper

Executive

executivepaper

On a un joli paquet de format.

Le format par défaut est le format portrait. Pour utiliser le format paysage, il faut utiliser l’option landscape.

Recto verso

Nous pouvons aussi choisir entre un document recto verso et un document recto. La différence est qu’un document recto verso a des marges plus longues sur les côtés qui seront contre la reliure, ceci afin d’avoir des marges à peu près identique lorsque le livre sera relié justement. LaTeX prend cela en charge grâce à deux options :

  • l’option oneside permet d’obtenir un document en recto ;
  • l’option twoside permet d’obtenir un document en recto verso.

La classe article est par défaut en recto simple. Si le document n’est pas destiné à être imprimé, l’option oneside est plus avantageuse.

Texte sur deux colonnes

Nous pouvons choisir de disposer le texte du document sur deux colonnes grâce à l’option twocolumn. L’option onecolumn permet au contraire d’avoir le texte sur une seule colonne (c’est l’option par défaut de la classe article).

Notons que l’option twocolumn peut être avantageusement remplacée par un package. Certains proposent même un plus grand choix de nombres de colonnes.

Document brouillon ou final

Nous pouvons choisir de compiler votre document en mode brouillon grâce à l’option draft. Le mode brouillon permet d’avoir une compilation un peu plus rapide. Pour cela, elle remplace par exemple les images par un cadre de la même taille. De plus, le mode brouillon permet de mettre en évidence des défauts tels que les dépassements de marge.

L’option par défaut n’est pas draft mais final qui permet d’obtenir le document final.

Bien sûr, nous n’avons pas besoin de retenir toutes ces options (la documentation est là pour ça). Généralement, nous utiliserons juste 12pt et a4paper et laisseront le reste par défaut.


Avec ce chapitre, nous avons vu comment créer notre premier document, comment écrire et nous avons vu un début de personnalisation de notre document.