# LaTeX/Premier exemple

LATEX
* Généralités
* Premiers pas
** Installer LaTeX
** Premier exemple
** Lettre
** Éléments de base
** Les classes
** Structuration du texte
** Mise en forme du texte
** Faire des tableaux
** Inclure des images
** Options de mise en forme avancées
** Écrire des mathématiques
** Écrire de la physique
** Écrire des formules chimiques
** Créer une feuille de style
** À l'aide !
* Structure du document
* Gestion de la bibliographie
* Tableaux
* Images
* Éléments flottants
* Mise en forme du texte
* Choix de la police
* Mise en page
* Mathématiques
* Gestion des gros documents
* Faire des présentations
* LaTeX pour enseignants
* Arts et loisirs
** Écrire de la musique
** Dessiner des échiquiers
* Dessiner avec LaTeX
** Dessiner en LaTeX pur
** Dessiner avec PSTricks
** Dessiner avec PGF et TikZ
** Dessiner des molécules
** Réalisation de graphiques mathématiques
* Créer une extension ou une classe
* Programmer avec LaTeX
Annexes
* Vadémécum
* Conversion vers d'autres formats
* Glossaire de typographie
* Index
* Commandes
* Liens externes
Nous allons commencer par un exemple de « programme » minimal en LaTeX :

## Fichier source

Il vous faut ouvrir l'éditeur de texte, recopier (ou utiliser le copier-coller du système d'exploitation) le texte ci-dessus, et l'enregistrer dans un fichier au format « Texte pur » avec un nom portant l'extension .tex. On pourra par exemple l'appeler bonjour.tex.
Si vous utilisez un éditeur de texte orienté LaTeX, vous devez avoir un bouton ou un menu permettant de générer le fichier de résultat (document final) et de l'afficher. Sinon, il va falloir taper une commande en ligne de commande.

## Compilation et visualisation
### Avec Texmaker

Vous pouvez appuyer sur la touche F1 du clavier pour lancer la compilation, puis sur la touche F3 pour afficher le résultat.
Vous pouvez aussi utiliser le menu Tools | LaTeX pour faire la compilation, et Tools | View Dvi pour afficher le résultat.

### Avec TeXShop

Vous pouvez utiliser le bouton Typeset (composer), ce qui lance la compilation et affiche le résultat.
Vous pouvez aussi utiliser la combinaison de touches +T, ou encore le menu Composer | Composer.

### Avec Emacs

Utilisez les touches Ctrl+C puis Ctrl+B (combinaison notée C-c C-b dans la notation habituelle Emacs). On ne peut pas visualiser directement le résultat, procéder en ligne de commande. On peut par contre lancer l'impression avec la combinaison Ctrl+C puis Ctrl+P (C-c C-p).

### En ligne de commande

Si votre éditeur de texte ne gère pas la compilation, il faudra ouvrir un interpréteur de commande (shell) :
* sous Windows :
** cliquez sur le bouton Démarrer en bas à gauche, et choisissez Exécuter ;
** dans le champ de texte, taper cmd puis appuyez sur Entrée ;
* alternative sous Windows : vous pouvez aussi taper les instructions directement dans le champ de texte de la boîte Exécuter ;
* sous MacOS :
** ouvrez le Finder et allez dans le répertoire Applications > Utilitaires ;
** double-cliquez sur Terminal.app (vous pouvez aussi fare glisser l'icône dans le Dock pour l'avoir sous la main).
Dans la fenêtre de l'interpréteur, taper
(on peut omettre l'extension .tex du nom du fichier). Cela crée un fichier bonjour.dvi. Le bon déroulement de la compilation est signalé par le message
Vous pouvez alors tenter un double-clic sur l'icône du fichier DVI dans votre gestionnaire graphique (Explorateur Windows ou Poste de travail sous Windows, Finder sous MacOS). Sinon, il faut savoir quel programme est disponible pour visualiser les DVI (yap, xdvi, dvipreview, texshop…), et taper nom-du-programme bonjour (par exemple xdvi bonjour).
En désespoir de cause, vous pouvez utiliser dvips et taper
soit cela lancera l'impression, soit cela génèrera un fichier PostScript bonjour.ps que vous pourrez lire — normalement — assez facilement. Si cela lance l'impression, vous pouvez taper
ou
pour générer le fichier PostScript.

## Résultat

Le résultat exact que vous devriez obtenir est :
Le rendu exact nécessite d'utiliser des images. Pour des raisons pratiques, nous afficherons souvent des rendus approximatifs, sous la forme
Bonjour, j'édite en LATEX !

## Explications

On commence par définir la classe de document, avec l'instruction \documentclass. En effet, un livre n'a pas la même mise en page qu'un article de journal. Nous choisissons ici la classe article.
Puis, nous indiquons que c'est le début du document avec l'instruction \begin{document}.
Nous tapons ensuite le texte, avec les spécificités suivantes :
* pour avoir le « é », nous utilisons \'e ; nous verrons comment éviter ceci juste après ;
* pour avoir le logo LATEX, nous utilisons l'instruction \LaTeX ;
* l'espace insécable entre LATEX et le point d'exclamation est obtenu avec un tilde « ~ ».
L'instruction \end{document} marque la fin du document.

## Génération d'un fichier PDF

Le format PDF est de plus en plus utilisé pour échanger des fichiers.
Les distributions de LaTeX sont en général livrées avec un programme appelé pdflatex qui génère directement un fichier PDF au lieu d'un DVI.

### Avec Texmaker

    Il suffit de compiler en utilisant la touche F6. La visualisation se fait avec F7. Vous pouvez aussi utiliser le menu Tools | PDFLaTeX et Tools | View PDF.
    Dans certains cas, si vous compilez avec tex (et non pdf(la)tex), vous pouvez aussi faire générer le fichier PDF en sélectionnant l'option LaTeX + dvips + View PS dans la boîte de dialogue des Préférences | Quick build.
    Si vous avez déjà généré le fichier DVI, vous pouvez le transformer avec la touche F9, ou avec le menu Tools | DVI → PDF, et le visualiser comme ci-dessus.
    Notez que le touche F9 peut ne pas fonctionner sous macOS X : par défaut, cette touche sert à afficher toutes les fenêtres ouvertes à la fois (« exposé »).

### Avec TeXShop

    Par défaut, TeXShop utilise pdftex ; il génère donc un fichier PDF, et c'est ce fichier qui est affiché.

### En ligne de commande

    Il suffit de taper
    Si vous avez déjà généré le fichier DVI, vous pouvez taper
    La commande dvipdf est en fait une macro qui exécute dvips pour transformer le fichier DVI en PostScript, puis ps2pdf pour transformer le fichier PostScript en PDF. Il existe aussi dvipdfm, qui transforme directement le fichier DVI en PDF :
    Mentionnons enfin les programmes basés sur Ghostscript (GhostView, GSView ou MacGSView par exemple) qui transforment un PS en PDF, ainsi que sur MacOS X Aperçu.app (Preview.app).

### Remarque

    Toutes les solutions ne sont pas équivalentes. En particulier :
   * le passage par un fichier PostScript permet d'utiliser certaines extensions qui génèrent directement du code PostScript (comme PSTricks), ce que ne permet pas de faire pdf(la)tex ;
   * les tailles des fichiers PDF peuvent être différentes ; en général, un fichier obtenu par pdf(la)tex est plus gros qu'un fichier obtenue par dvips puis ps2pdf ;
   * mais pdf(la)tex est plus simple d'utilisation (une seule opération, mais certains éditeurs de texte génèrent aussi un fichier PDF par dvips puis ps2pdf en une seule opération), et il permet d'utiliser certaines extensions dédiées (PFG/TikZ) ;
   * le format des images que l'on peut intégrer n'est pas le même selon le mode de compilation (PS et EPS pour dvips puis ps2pdf, PNG et JPEG pour pdf(la)tex).
    Ces points seront détaillés le moment venu.

## Améliorations
### Améliorations du jeu de caractères

Vous avez vu que pour faire le e accent aigu « é », nous avons dû taper l'instruction \' devant la lettre e. En effet, par défaut, LaTeX ne reconnaît que les caractères latins non accentués des années 1960 (dits « ASCII purs »). Nous pouvons indiquer à LaTeX qu'il doit prendre en compte les caractères accentués de la langue française, afin de pouvoir les saisir directement avec le clavier.
Avant tout, il faut savoir l'encodage de caractères à utiliser. Les systèmes récents ont tendance à travailler avec l'encodage Unicode. Mais des systèmes plus anciens sont plus axées sur des jeux de caractère limités propres à des langues régionales.
Pour pouvoir indiquer l'encodage utilisé, il faut :
* utiliser un éditeur de texte qui permet d'enregistrer autre chose que de l'ASCII pur, ce qui est le cas de tous les éditeurs récents ; on peut en général choisir le codage du fichier lors de l'enregistrement, ou bien dans la boîte de dialogue de configuration de l'éditeur ;
* faire appel à une extension, ou module, ou package, appelé inputenc (input encoding, codage de l'entrée).
Lors de l'appel de l'extension inputenc, il faut indiquer un paramètre qui dépend de l'encodage des caractères utilisé pour sauvegarder le fichier. L'encodage normalisé le plus courant en Europe de l'ouest est :
    l'encodage UTF-8, qui gère l'Unicode (plus d'un million de caractères pour plus de 650 langues) : on utilise le paramètre utf8, on écrit donc la commande \usepackage[utf8]{inputenc}.
Avec les systèmes modernes, l'option utf8 donne normalement des résultats attendus (mais il peut être nécessaire de modifier une option de l'éditeur de texte). On peut aussi choisir un encodage particulier au moment de l'enregistrement) ; chaque éditeur de texte gère son encodage. Voire, si c'est un éditeur de texte orienté LaTeX, celui-ci reconnaître l'encodage spécifié et le respecter.
Cependant, tous les caractères Unicode n'ont pas de représentation dans une police donnée ; par exemple, si vous mettez un caractère grec dans votre code source, il n'apparaîtra dans le document final que si la police possède les caractères grecs .
Par ailleurs, certains modes ou extensions (mode mathématique et extension listings par exemple) gèrent mal les caractères « exotiques ».
On place donc une instruction \usepackage[paramètre]{inputenc} entre les instructions \documentclass{article} et \begin{document}. Cette zone est appelée zone d'en-tête ou préambule.

### Autres améliorations du code source

Par ailleurs, LaTeX applique par défaut les règles de typographie anglaise. Cela ne se voit pas sur cet exemple, mais vous voudrez sans doute utiliser la typographie française. Pour cela, il faudra ajouter, dans le préambule, une instruction pour inclure une extension française. Il en existe plusieurs, nous proposons ici l'extension babel avec le paramètre french : \usepackage[french]{babel}. Il existe d'autres extensions mais qui ne sont pas incluses d'office dans les distributions standard.
On notera que l'on ne place plus de tilde ~ devant le point d’exclamation. Il n'en faut pas si l’on veut que french puisse travailler correctement.
On prévoit aussi d'inclure des images (photos, dessins, graphiques). Nous allons donc utiliser l'extension graphicx. Nous utiliserons les fontes extended computer modern (EC), en ayant recours à l'extension fontenc avec l'option T1 (codage des caractères dit « de Cork »), et pour permettre l'affichage correct des caractères diacritiqués français, nous ajoutons les fontes latin modern (LM) avec l'extension lmodern.
On va aussi indiquer à LaTeX que l'on utilise du papier au format A4 et que l'on utilise une police de corps 11 points. La déclaration de classe devient alors \documentclass[a4paper, 11pt]{article}.

### Exemple

Ainsi, on aura, avec les précautions énoncées ci-dessus (possibilité d'enregistrer avec un encodage différent selon l'éditeur de texte) :
Ce squelette peut servir de base pour tous vos fichiers.

## Déroulement de la compilation

Si, ce qui est probable, vous utilisez l'outil de compilation de votre éditeur de texte, cette opération sera quasiment transparente. Voici toutefois quelques détails qui pourront vous être utiles.
Le but d'une compilation est de générer un fichier DVI. DVI signifie device independent, c'est-à-dire « indépendant du périphérique » (affichage à l'écran, impression, projection). C'est ce fichier DVI qui est affiché par le programme adéquat (en général Yap ou Xdvi), et transformé par la suite en fichier PDF, puisque c'est probablement le format final que vous voudrez.
Durant la compilation, le programme latex va analyser le contenu du fichier et éventuellement afficher des messages d'avertissement ou d'erreur. Certains sont bénins, comme « Underfull box » ou « Overfull box », qui indiquent simplement qu'il y a trop ou pas assez de texte dans une zone pour respecter les canons de la mise en page.
Certaines erreurs correspondent à des fautes dans l'orthographe des instructions — d'où l'utilité d'utiliser, lorsque c'est possible, les outils fournis par l'éditeur de texte — ou dans la syntaxe, par exemple l'oubli de \end{document} en fin de document. Certaines de ces erreurs vont donner un résultat étrange, non conforme à ce que vous désirez. Mais d'autres empêcheront la compilation de se terminer, vous n'aurez alors pas de résultat.
Ces erreurs et avertissements sont affichés à l'écran, et sont mis dans un fichier portant le même nom que votre fichier source, mais avec l'extension .log.
Par ailleurs, latex foliote (numérote) automatiquement les pages, les figures, tableaux, appelés de manière générale « objets », et il est possible de faire des références croisées (de type « cf. figure 18 p. 50 »). Il peut donc être nécessaire de faire deux compilations successives :
* lors de la première compilation, il va numéroter les pages et trouver les pages correspondant aux objets pointés, qu'il place dans un fichier auxiliaire ; il ne pourra par contre pas créer les références, puisqu'il ne sait pas encore où se trouvent les objets ni quels sont leurs numéros, il va donc mettre des erreurs « Reference undefined » ;
* lors de la deuxième compilation, il lit le fichier auxiliaire et place les références.
Le fichier auxiliaire porte le même nom que votre fichier source, mais avec l'extension .aux.
Certains éditeurs de texte font exécuter automatiquement les deux compilations lorsque c'est nécessaire.
Voir aussi À l'aide !.

## Notes

* ↑ L'utilisation de l'espace insécable permet de garder le point d'exclamation sur la même ligne que le mot qui précède, si jamais le mot se trouvait en fin de ligne. On utilise une espace insécable avant les ponctuations doubles (;:?!), à l'intérieur des guillemets français « », pour garder un nombre à côté de son unité…
* ↑ Pour se faire une idée des limites de l'ASCII on peut lire le wikilivre Les ASCII de 0 à 127
* ↑ Pour se faire une idée des possibilités offertes par l'Unicode on peut lire le wikilivre À la découverte d'Unicode
* ↑ Auparavant, les systèmes d'exploitation avaient un codage par défaut ; c'est le format utilisé par l'éditeur fourni avec le système, si l'on ne change aucun paramètre. Dans un tel cas, on peut tenter : latin1 pour Linux, FreeBSD, et la plupart des Unix anciens; utf-8 pour Linux, FreeBSD, et la plupart des Unix récents; cp1252 ou ansinew pour Microsoft Windows (les deux sont synonymes) ; applemac pour un Apple Macintosh & Mac OS X ; jusqu'à MacOS 9, le codage applemac était le codage par défaut ; avec MacOS X, le codage par défaut de TextEdit est utf8, et il peut être changé dans le menu TextEdit | Préférences | Ouverture et enregistrement. Notez que cette distinction provient de l'encodage par défaut pour les systèmes d'exploitation.
* ↑ On peut encore utiliser les paramètres frenchb et francais qui ont exactement le même effet. On les trouve dans les exemples de sources.
* ↑ c'est-à-dire que la hauteur entre le bas d'un jambage, comme la lettre « p », et le haut d'une hampe, comme la lettre « t », vaut 11 points anglo-saxons soit environ 3,9 mm, cf. Wikipédia : Point (unité)