Latex

LATEX permet l'édition au sens propre du terme, qui permet de dépasser les limitations d'un éditeur de fichiers et même d'un traitement de texte. Très optimisé dans l'édition des formules mathématique, c'est l'outil idéal pour l'édition d'articles de sciences naturelles ou appliquées. Cette souplesse se fait au détriment de sa simplicité de mise en œuvre (langage de balise) et de visualisation directe. Heureusement, il existe des éditeurs/compilateurs de fichiers latex, comme LaTeXila sur GNU/Linux.

LATEX, application libre écrite par Leslie Lamport (°1941), est une implémentation accessible du langage TEX mis au point par Donald Knuth (°1938). Ce dernier recommande de prononcer [tεχ], le khi se prononçant comme la jota espagnole ou le "ch" allemant dans auch. Ni l'anglais ni le français ne comprenant de consonne fricative uvulaire sourde, il n'est pas rare d'entendre [latεk]. Leslie Lamport ne recommande rien, mais rien ne justifie de prononcer [latεks].

Cette page explique le minimum à connaître sur un système GNU/Linux (ligne de commande, système de fichiers…)

Généralités

Il s'agit d'éditer au moins un fichier en format texte .tex avec quelques fonctions (en cela un éditeur spécial est intéressant). Ce fichier passe par une compilation pour réaliser un fichier .pdf, .ps ou .dvi. Un éventuel fichier également en format texte contenant des fiches bibliographique peut être associé pour générer les renvois nécessaires.

Mise en œuvre

L'installation complète du système TEX / LATEX prend un demi Giga-octet. Je conseille (sur Debian / Gnome ou Mate) l'installation de latexila, éditeur de script, qui installe le système.

Vérifiez que texlive-lang-french est installé, car il contient les extensions babel, aeguill… traditionnellement utilisés dans les exemples, les dictionnaires de césure, et le répertoire /usr/share/doc/texlive-doc/plain/impatient-fr qui contient une version française de «TEX for the Impatient», en un document pdf (2004) ou par bouts de textes en format .tex (de 2005 à 2008). Ces exemples ont néanmoins vieilli: il est par exemple possible d'utiliser maintenant les lettres accentuées sans devoir les coder.

#En mode super-utilisateur:
su + mot de passe "root"
apt install latexila texlive-lang-french
devrait installer un système francophone complet.

Unités de mesure

Les largeurs et hauteurs doivent être spécifiées dans une des unités de mesure suivantes:

mm millimètre
cm centimètre
in pouce anglais (25,4mm)
pt point anglo-saxon, 1/72e de pouce
dd point Didot
ex hauteur des lettres aceimnorsuvwx
em cadratin, équivaut à la hauteur de la fonte

Il est possible d'insérer un fichier texte à n'importe quel endroit avec \input{mon_fichier}

Structure

Voici une structure typique de document LATEX francophone

\documentclass[a4paper,12pt]{report} % type et paramètres du document
\usepackage[francais]{babel}  % choix du langage
\usepackage[utf8]{inputenc}   % encodage du document, pourrait être latin1 selon votre système
\usepackage{aeguill}          % permet la typographie latine: æ « »

\title{Mon premier document \LaTeX }  % titre global pour l'ouvrage
\author{jchr.be/linux/latex.htm}      % nom et informations sur l'auteur
\date{Version du 13 août 2016}        % date

\begin{document} % début du document généré

\maketitle  % affiche le titre global du document \title + \author + \date

\begin{abstract}
Le résumé de votre article
\end{abstract}

% ici se succèdent les titres, sous-titres, les paragraphes…

\tableofcontents  # génère la table des matières d'après ce qui précède

\end{document}

Type de document

\documentclass[param]{type} donne le type du document {article}, {book}, {report}, {letter}… Les paramètres peuvent être:

Langage et encodage

\usepackage[francais]{babel} est une manière d'avoir un environnement francophone (quelquefois [french], [frenchle]…). Cela a une influence sur beaucoup de choses, et notamment sur les césures. Néanmmoins, il est possible de suggérer un endroit de césure avec \-: inter\-action.

\usepackage[utf8]{inputenc} encodage du document, pourrait être latin1 selon votre système

\usepackage{aeguill} permet la typographie latine: æ « »

Titre de document

\title{} définit le titre \\ pour marquer les retours à la ligne à l'intérieur d'un long titre

\author{} énonce les auteurs ; \\ pour marquer d'éventuels retours à la ligne ; \thanks{} y permet une type spécial de notes de bas de page, relative à chaque auteur (remerciements…). Les caractères successifs de renvoi sont ∗ † ‡ § ¶

\date{…} spécifie la date, par défaut celle de compilation du document ; \date{\today} pour 13 août 2016 ou August 13, 2016. \date{} pour aucune date

\maketitle (dans le corps du document) place les informations de \title, \author, \thanks et \date

Selon le type de document, le titre apparaît seul sur la page ou permet la suite du document.

À traiter: \addcontentsline, \addtocontents, \listoffigures, \listoftables

Environnements

La structure \begin{}\end{} permet de délimiter des portions du document, des types d'environnement:

Page

\textheight=11 hauteur du texte dans la page
\textwidth=8 largeur d'une ligne de texte dans l'environnement local (par exemple, les lignes sont généralement plus étroites dans le résumé que dans le texte normal)

Ces paramètres doivent être compatibles avec les marges du document.

\newpage force un saut de page.

Sections et table des matières

La numérotation de ces différentes sections est automatique, leur compteur est remis à 1 chaque fois qu'un niveau supérieur est incrémenté. 1, 1.1, 1.2, 2.1

\part{…} pour les types {report} ou {report}, saut de page avant et après. Première ligne: «Part 1» ou «Première partie» sauf si utilisation de \part*{…}, chiffre romains en table des matières

\chapter[]{…} chapitre seulement pour les types {report} et {book} (semblent nécessaires pour la numérotation), suit un saut de page ; le titre de chapitre est reporté en haut des pages paires pour le type {book}

\section{…} titre de premier niveau, reporté en haut des pages paires pour le type {book}
\subsection{…} titre de second niveau
\subsubsection{…} titre de troisième niveau, ne produit de numérotation et n'est reporté en table de matière que pour le type {article}
\paragraph{…} permet un intertitre non indenté
\subparagraph{…} permet un intertitre indenté

\tableofcontents génère la table des matières qui reprend les titres de certains niveaux selon la nature du document, avec pour titre «Table des matières» ou «Contents». En français, la table des matières intervient en fin d'ouvrage.

À traiter: \appendix \label{}

Paragraphes

Les lignes non vides qui se succèdent forment un même paragraphe, il faut nécessairement au moins une ligne vide intercalaire pour séparer deux paragraphes.

Justification

Par défaut, les paragraphes sont justifiés à gauche et à droite. Sinon:

\raggedleft texte irrégulier à gauche (aligné à droite)
\raggedright texte irrégulier à droite (aligné à gauche)
\centering centre les lignes du textes

Il semble difficile de ne modifier la forme du paragraphe que pour un seul paragraphe:

{\raggedleft{}Du texte…} ne semble pas fonctionner.

En typographie française un paragraphe justifié comporte une indentation de la première ligne.

\parindent=2em fixe l'indentation des paragraphes justifiés seulement. En français, la première ligne d'un paragraphe accuse un retrait d'environ 1.5em. Il est possible d'annuler cette indentation avec 0em. En anglais, il semblerait que seul le premier paragraphe ne soit pas indenté, sauf avec \usepackage{indentfirst} précisé en début de fichier.

\noindent Début de paragaphe permet d'annuler l'indentation de ce paragraphe.

\hangindent=1.5em en début de paragraphe indente le paragraphe sauf la première ligne.

\leftskip=3em ajoute une marge gauche supplémentaire
\rightskip=2em ajoute une marge droite supplémentaire

\hfill indique où placer préférentiellement l'espace généré par la justification. S'il y a plusieurs fois la commande, l'espace est réparti entre les différents segments de texte. Vers la fin de paragraphe, justifie la dernière ligne.

Espacement vertical

\\ ou \linebreak retour à la ligne sans espacement vertical. \\[1em] insère une hauteur de casse d'espace (peut-être négatif)

\parskip=6px permet de fixer l'espacement vertical entre deux paragraphes

\vspace{hauteur} ajoute un espace vertical

\smallskip équivaut plus ou moins à \vspace{\smallskipamount}
\medskip équivaut plus ou moins à \vspace{\smallskipamount}
\bigskip équivaut plus ou moins à \vspace{\smallskipamount}

Ces trois espaces sont légèrement élastiques pour permettre l'ajustement de la dernière ligne sur le fond de la page, ainsi que la commande suivante:

\addvspace{hauteur}

\vfill introduit l'espace nécessaire pour repousser les paragraphes pour qu'ils occupent la page entière. Plusieurs espacements sont possibles, l'espace étant équitablement réparti entre les différents \vfill

\baselineskip distance verticale entre les lignes d'un paragraphe

Listes

Une liste non numérotée est produite avec la structure begin/end:

\begin{itemize}
\item premier élément
\item second élément
\item …
\end{itemize}

Le marqueur est le tiret cadratin — en typographie française. Il est possible d'inclure une sous-liste entre deux items en y reproduisant la même structure (voir plus bas).

Pour les listes ordonnées:

\begin{enumerate}
\item oiseau
\item mammifère
\item poisson
\end{enumerate}

Il est possible d'inclure des sous-listes avec au maximum quatre niveaux de listes ordonnées: la succession du type de numérotation étant 1, (a), i et A. Quatre niveaux de listes non ordonnées sont également possible. Si l'on mélange les deux, la limite semble être de six.

\begin{enumerate}
\item oiseau

\begin{itemize} # début de liste de second niveau
\item corbeau
\item manchot
\end{itemize}

\item mammifère # retour à la liste de premier niveau
\item poisson
\end{enumerate}

Il existe encore une liste de définitions. Les mots entre parenthèses carrées seront mis en gras, l'explication suit, et est indentée dès la seconde ligne

\begin{description}
\item [oiseau] animal à plumes
\item [mammifère] animal à poils
\item [poisson] animal à écailles
\end{description}

Tableaux

Les tableaux utilisent l'environnement tabular

\begin{tabular}{ l || r | c }
Ville & Habitants & Région \\
\hline
Anvers & 515.000 & Vl. \\
Mons & 95.000 & W. \\
Bruxelles & 175.000 & RBC \\
\end{tabular}
VilleHabitantsRégion
Anvers515.000Vl.
Mons95.000W.
Bruxelles175.000RBC

Citation et bibliographie

Une bibliographie nécessite un fichier .bib séparé, contenant des données de ce type:

@book{liv546,
author="Auteur(s) du livre",
title="Titre du livre",
year="",
publisher="Maison d'édition",
address="Paris"}

@article{art345,
author="Auteur(s)",
title="Titre de l'article",
year="",
journal="Titre de la revue",
volume="3",
number="7",
pages="111-123"}

@incollection{coll698,
author="Auteur(s)",
title="Titre de l'article",
pages="144-169",
booktitle="Titre de l'ouvrage collectif",
editor="Directeur(s) de l'ouvrage",
publisher="Maison d'édition",
year=""}

Les types (author, title…) sont insensibles à la casse, les champs sont séparés par des virgules, les guillemets ne sont pas nécessaires.

Il est possible d'encoder les noms d'auteurs Prénom Nom (sans virgule) ou Nom, Prénom (avec virgule)
Nom1, Prén1 and Nom2, Prén2 and Nom3, Prén3 permet les auteurs multiples ; séparer chaque auteur par and, Latex en fera Auteur1, Auteur2 et Auteur3
{Jean H.} Alex permet de s'assurer que le second prénom est bien attaché au premier lors des éventuelles permutations prénom/nom (selon le style)
{ONU} maintient les lettres majuscules de l'acronyme ONU, contrecarrant l'interprétation du logiciel Capitale+minuscules. Entourer la première lettre de {d}e Broglie permet de garder la minuscule

Quel que soit la longueur du fichier .bib, la bibliographie d'un fichier .tex n'en reprendra que les ouvrages qui y sont cités. Un ouvrage est cité dans un paragraphe de cette façon:

Il faut importer

\bibliography{mesfiches.bib}
\bibliographystyle{plain}

\cite[p.~215]{alf999} le paramètre permet de préciser une [page indiquée], la {référence} doit bien entendu exister dans le fichier .bib (~ pour une espace insécable).

La façon dont la citation apparaît dans le texte et sa reprise en bibliographie dépend du style utilisé:

\bibliographystyle{style} (en début) précise le style utilisé pour la bibliographie: alpha, abbrv, acm, apalike, ieeetr, plain, plain-fr, siam, unsrt

L'extension \usepackage{natbib} possèdent deux commandes intéressantes:

\citet[p.~215]{alf999} ajoute le nom de l'auteur avant la référence.
\citep[p.~215]{alf999} ajoute le nom de l'auteur dans la référence.

\usepackage[options]{natbib} formate les citations, avec pour options

Les types d'ouvrage sont: article (de magazine ou journal), book (livre publié), booklet (œuvre imprimée mais non officiellement publiée), conference ou proceedings, inbook (partie d'un ouvrage collectif), incollection (partie de livre ayant son propre titre), inproceedings (partie de conférence), manual (doc technique), masterthesis, phdthesis, techreport, unpublished (non publié, mais avec champs "author" et "title"), misc (tout le reste).

Les champs les plus courants sont: abstract, address, annote, author, booktitle, chapter, contents copyright, crossref, edition, editor, institution, isbn, issn, journal, key, keywords, language, lccn, month, note, number, organization, pages, price, publisher, school, series, title, type, url, volume, year.

\bibliography{style} avec pour style abbr_long ou pubext

Notes de bas de page

\footnote{Votre explication} permet de prévoir une note en bas de page

Rappel: \thanks est un type de note en bas de page spécifique aux auteurs mentionnée dans le titre général du titre du document.

Index

Plusieurs indications sont nécessaires pour la réalisation d'un index:

\usepackage{makeidx} pour spécifier l'utilisation de la bibliothèque makeidx
\makeindex en début de document pour lancer la récolte des mots

Dans le document, chaque mot à indexer doit être accompagné de son renvoi \index{}, éventuellement plusieurs:

\index{Président US} \index{Obama, Barack} Barack Obama a été élu en 2008.

\printindex génère l'index à l'endroit où il se trouve dans le document. Chaque mot y indique les pages où il apparaît.

Caractères

Codage ASCII

TEX a vu le jour avant la mise au point du système de codage universel UTF-8, dont l'implémentation ne semble pas y avoir été rapide. Il existe en tout cas encore beaucoup d'exemples sur Internet où les caractères accentués ou spéciaux existant sur un clavier francophone sont notés à l'ancienne: \'e pour «é», \¨o pour «ö», \oe pour «œ»… Il est possible d'éviter ce codage si \usepackage[latin1]{inputenc} ou mieux encore \usepackage[utf8]{inputenc} se trouve dans l'entête de votre fichier et que votre système fonctionne dans l'environnement spécifié.

Ce codage rétro permet néanmoins de saisir certains caractères difficilement disponibles, tels que \AA pour «Å», \AE pour «Æ»… Attention cependant: il est nécessaire de laisser une espace en fin de séquence, qui ne sera pas affichée:

Encyclop\ae dia affiche «encyclopædia»
43\AA d'épaisseur. affiche «43Åd'épaisseur»

Une barre inverse ou les accolades en fin de séquence préserve l'espace:

43\AA\ d'épaisseur. affiche «43Å d'épaisseur»
43\AA{} d'épaisseur. affiche «43Å d'épaisseur»

Certains caractères sont réservés au codage:

% introduit un commentaire
{} servent de parenthèses dans le codage
~ représente l'espace insécable, insensible à la césure
& séparateur de champs pour les tableaux
# utilisé dans les macros
$ utilisé pour les formules
^ exposant (formules)
_ indice (formules)

Pour pouvoir les afficher tels quels, il est nécessaire d'en «échapper» certains avec la barre inverse:

\%   \{   \}   \$   \&   \_

Pour les accents ^ et ~, qui peuvent intervenir dans un codage de lettre accentué, il faut indiquer un «stop» avec {}: \^{} ou \textasciicircum et \~{} ou \textasciitilde

La seule façon de d'afficher la barre inverse elle-même semble d'écrire \textbackslash (\\ est utilisé pour un saut à la ligne suivante).

\- pour suggérer une césure: inter\-action

\hspace{} force une espace horizontale à préciser ; \hspace{0.5em} représente une espace d'un demi-cadratin ;
\quad équivaut à hspace{1em}
\hspace[*]{length} empêche l'élimination de l'espace en fin de ligne

\dag
\ddag
\dots
ø \o
Ø \O
\P
£ \pounds
§ \S
ß \ss
| \textbar
· \textperiodcentered
˽ \textvisiblespace
© \copyright
® \textregistered
\texttrademark

- - trait d'union
-- ou \endash tiret demi-cadratin
--- ou \emdash tiret cadratin
¿ ?` ou \textquestiondown
¡ !` ou \textexclamdown
« << guillemet français ouvrant avec espace insécable
» >> guillemet français fermant avec espace insécable

Commandes permises avec \usepackage[francais]{babel}

\og : « suivi d'une espace insécable ;
\fg : » précédé d'une espace insécable

Commandes de babel option french

\degres pour ° ;
\me pour me (M\me pour Mme)
\ier pour er ;
\iere pour re ;
\iers pour ers ;
\ieres pour res ;
\ieme pour e ;
\iemes pour es ;
\bsc{…} pour les petites capitales, le mot n'étant pas césuré.

\euro pour € à condition que \usepackage{eurosym} ait été spécifié, le caractère issu de [alt-E] n'est pas reconnu par l'application

Rappelons que les séquences \… annulent les espaces situées à leur droite.

Formules

Les formules utilise la balise $ exposant: ^ ; indice: _ ; les deux peuvent coexister: C_n^i