« LaTeX/Vadémécum » : différence entre les versions

Contenu supprimé Contenu ajouté
мебель для гостиной донецк
m Révocation des modifications de 151.0.22.123 (discussion) vers la dernière version de Yvand
Ligne 1 :
<noinclude>{{LaTeX/Navigation}}</noinclude>
Взаимовыгодное сотрудничество с Клиентом, которое начинается с приемлемых цен и заканчивается качественным гарантийным обслуживанием.
 
<noinclude>{{NavTitre|book={{BASEPAGENAME}}|prev=Programmer avec LaTeX|next=Conversion vers d'autres formats}}</noinclude>
 
<!-- intro modifiée dans le document LaTeX/PDF : le reste du wikilivre n'est pas dans ledit document -->
Comme précisé [[../Généralités#LaTeX, c'est compliqué ?|en introduction]], vous n'avez besoin la plupart du temps de ne connaître que peu d'instructions. Si l'on reprend la [[w:loi de Pareto|loi de Pareto]], parmi toutes les commandes que vous utiliserez, 80&nbsp;% de vos documents n'utiliseront que 20&nbsp;% de ces commandes.
 
Par exemple, si l'on se contente de faire uniquement du texte, soit 80&nbsp;% des besoins en général (si l'on excepte les ouvrages contenant beaucoup de mathématiques), on a besoin de connaître au plus une dizaine d'instruction (<code>\chapter</code>, <code>\section</code>, <code>\subsection</code>, <code>\emph</code>, <code>\footnote</code>, <code>\label</code>, <code>\ref</code>, <code>\pageref</code>) et d'environnements (<code>itemize</code>, <code>enumerate</code>, <code>quote</code>, <code>quotation</code>) — les commandes de début et de fin de document étant dans des modèles. Si l'on veut aller un peu plus loin, une vingtaine de commandes et environnements suffisent (tableaux, images). Ce sont ces 20&nbsp;% de commandes.
 
Ce document présente également les commandes supplémentaires les plus courantes, en espérant couvrir 96&nbsp;% de vos besoins… C'est donc une sorte de ''vade mecum'', un document à garder sur vous (ou sur votre disque dur) comme pense-bête.
 
Ce sont les commandes que nous avons vues précédemment, mais présentées succinctement, afin d'être utilisé comme aide-mémoire.
 
<!-- note à ne pas mettre dans a version LaTeX/PDF -->
{{note|Pensez à indiquer vos modifications dans la section « [[:commons:Image:LaTeX vademecum.pdf#À faire|À faire]] » de la page de ''commons''.}}
 
== Syntaxe de base ==
 
Les commandes, ou instructions, commencent par une contre-oblique <code>\</code>.
 
Certaines commandes s'utilisent sans paramètre. Si ces commandes sont formées de lettres, l'espace qui les suit est ignoré : il indique que c'est la fin de la commande, mais ne provoque pas d'espacement. En cas de problème, on peut ajouter un bloc vide, par exemple <code>\^\i{}</code>, <code>\fg{}</code>, <code>\copyright{}</code>, …
 
Certaines commandes admettent un ou plusieurs paramètres. Les paramètres optionnels sont entre crochets <code>[…]</code>, on peut mettre plusieurs paramètres séparés par une virgule. Les paramètres obligatoires sont entre accolades <code>{…}</code>, et on ne met qu'un paramètre par accolade.
 
Un environnement commence par <code>\begin{''nom_env''}</code> et se termine par <code>\end{''nom_env''}</code>.
 
Les dimensions (longueurs, largeurs) sont indiquées sous la forme d'un nombre et d'une unité accolée. Par exemple, <code>3cm</code> désigne trois centimètres, <code>1em</code> désigne un cadratin. Les unités sont : <code>mm</code> (millimètre), <code>cm</code> (centimètre), <code>pt</code> (point anglo-saxon), <code>dd</code> (point Didot), <code>ex</code> (hauteur d'x) et <code>em</code> (cadratin).
 
On peut également utiliser des longueurs prédéfinies : <code>\linewidth</code> (largeur du texte, justification), <code>\baselineskip</code> (distance entre la ligne de base de deux lignes consécutives d'un même paragraphe), <code>\parindent</code> (largeur du retrait de paragraphe) et <code>\parskip</code> (interligne entre deux paragraphes).
 
; Exemple
<source lang="latex">
\hspace{4em}
\vspace{0.5\baselineskip}
</source>
 
Certaines commandes, dites « fragiles », ne donnent pas le résultat attendu dans certains environnement ou arguments de commandes. Le fait de placer devant la commande <code>\protect</code> peut parfois résoudre le problème.
 
== Fichier de préambule ==
 
Le fichier de préambule est un fichier <code>.tex</code> qui contient :
* les appels aux extensions ''(packages)'' ;
* les commandes personnelles.
On l'appellera ici <code>preambule.tex</code>
 
Voici un fichier de préambule typique :
<source lang="latex">
% ************************
% * fichier de préambule *
% ************************
 
% ***** extensions *****
 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage[frenchb]{babel}
 
% ***** césures particulières *****
 
\hyphenation{anti-consti-tu-tionnel-le-ment atmo-sphère
caou-tchouc cis-alpin trans-action}
 
% ***** exemples de commandes personnelles *****
 
\newcommand{\langue}{\emph} % mots en langues étrangères
\newcommand{\citital}{\emph} % citation en italique
\newcommand{\nomprog}{\texttt} % nom de programme en police teletype
</source>
 
On peut de même créer un fichier de fin de document, par exemple pour un livre, le fichier <code>fin_livre.tex</code> :
<source lang="latex">
% ******************
% * fichier de fin *
% ******************
\listoftables
\listoffigures
\bibliographystyle{} % indiquer le style
\bibliography{} % indiquer le fichier .bib
 
\tableofcontents
</source>
 
=== Commandes personnelles ===
 
Pour une commande sans paramètre (par exemple développer une abréviation) :
\newcommand{\''nom_de_commande''}{''commandes à exécuter''}
Pour une commande avec ''n'' paramètres :
\newcommand{\''nom_de_commande''}[''n'']{''commandes à exécuter''}
les paramètres figurant sous la forme <code>#1</code>, <code>#2</code>, …
 
Pour définir un nouvel environnement :
\newenvironment{''nom_de_l_environnement''}
{''commandes de début''}
{''commandes de fin''}
 
== Squelette de fichier ==
 
Le squelette de fichier est un fichier minimal qui sert de base à tous les autres fichiers. Pour l'utiliser, on fait une copie du fichier, on lui donne le nom du document puis on le modifie.
 
Le squelette général est :
\documentclass[''options'']{''classe''}
\input{preambule}
\begin{document}
\end{document}
 
On peut créer des squelettes pour différents type de document.
Pour un livre, on aura par exemple
<source lang="latex">
\documentclass[a4paper, 11pt]{book}
 
\input{preambule}
 
\begin{document}
 
\title{}
\author{}
\date{}
 
\frontmatter % introduction
 
\maketitle
 
\mainmatter % corps du livre
 
\include{} % fichier contenant le 1er chapitre
\include{} % fichier contenant le 2e chapitre, ...
 
\appendix
 
\include{} % fichier contenant la 1re annexe
 
\backmatter % annexes
 
\input{fin_livre}
 
\end{document}
</source>
et pour un article
<source lang="latex">
\documentclass[a4paper, 11pt]{article}
 
\input{preambule}
 
\begin{document}
 
\title{}
\author{}
\date{}
 
\maketitle
 
\begin{abstract}
% résumé de l'article
 
\end{abstract}
 
% corps de l'article
 
\end{document}
</source>
 
Notons que :
* le titre dans <code>\title</code> est nécessairement un paragraphe unique ; on peut forcer un retour de ligne avec <code>\\</code> ;
* dans <code>\author</code>, le nom d'un auteur peut être suivi d'une instruction <code>\thanks{…}</code>, qui permet de lui associer une note de bas de page ;
* la fonction <code>\include</code> permet d'utiliser le texte d'un fichier <code>.tex</code>, ce qui permet de morceler un grand document en plusieurs fichiers ; la fonction introduit également une nouvelle page ;
* la fonction <code>\input</code> est similaire à <code>\include</code> mais ne commence pas une nouvelle page, ce qui est utile pour les articles par exemple ; un fichier appelé par un <code>\input</code> ou un <code>\include</code> peut lui-même contenir un <code>\input</code> mais pas un <code>\include</code>.
 
== Format du document ==
 
Le format du document dépend essentiellement de la classe de document invoquée : <code>book</code> (livre), <code>report</code> (rapport), <code>article</code> (article) pour les principales. On peut indiquer le format du papier ainsi que son orientation :
\documentclass[a4paper,11pt]{article}
pour un format A4 avec un corps de texte de 11 points. Les principales options sont (les options sur une même ligne sont exclusives) :
* <code>10pt</code>, <code>11pt</code>, <code>12pt</code> : corps de texte ;
* <code>a4paper</code>, <code>a5paper</code>, <code>b5paper</code>, <code>legalpaper</code>, <code>letterpaper</code> : format de la page ;
* <code>landscape</code> : page orientée à l'italienne (en paysage) ;
* <code>twocolumn</code> : texte sur deux colonnes.
Par défaut, la page est orientée en portrait, et le texte est sur une colonne.
 
On peut définir le format avec les extensions <code>geometry</code> et <code>multicol</code> (qui permet d'utiliser plus de deux colonnes), auquel cas on n'indique que le corps de texte avec la classe :
<source lang="latex">
\documentclass[11pt]{article}
 
\usepackage[a4paper,landscape]{geometry}
\usepackage{multicol}
 
\begin{document}
\begin{multicols}{2)
...
\end{multicols}
\end{document}
</source>
 
== Structuration du document ==
 
=== Titres de parties ===
 
{| class="wikitable"
|+ Titres de parties
! Type de partie !! Commande !! Remarque
|-
| Partie || <code>\part{''titre''}</code>
|-
| Chapitre || <code>\chapter{''titre''}</code> || n'est pas disponible pour la classe <code>article</code>
|-
| Section || <code>\section{''titre''}</code>
|-
| Sous-section || <code>\subsection{''titre''}</code>
|-
| Sous-sous-section || <code>\subsubsection{''titre''}</code>
|-
| Paragraphe || <code>\paragraph{''titre''}</code>
|-
| Sous-paragraphe || <code>\subparagraph{''titre''}</code>
|}
 
Le titre affiché dans la table des matières peut être différent de celui affiché sur la page :
\section[''titre dans la table'']{''Titre réel''}
 
On peut utiliser les commandes étoilées (par exemple <code>\chapter*{''titre''}</code>) si l'on ne veut pas que le titre soit numéroté ; il ne figure alors pas dans la table des matières.
 
Si l'on veut au contraire faire figurer une partie, on utilise <code>\addcontentsline</code>, par exemple :
<source lang="latex">
\addcontentsline{toc}{section}{\protect\numberline{}Préface}
\chapter*{Préface}
</source>
Le deuxième argument est le niveau de titre (<code>chapter</code>, <code>section</code>, <code>subsection</code>, …). La bibliographie, l'index, les listes de tableau et de figure et la table des matière elle-même peuvent être inclus automatiquement (sans utiliser <code>\addcontentsline</code>) en utilisant l'extension <code>tocbibind</code>.
 
 
Si vous utilisez l'extension <code>hyperref</code>, les entrées de la table des matières seront des liens hypertexte vers les sections.
 
=== Mise en emphase ===
 
La mise en emphase se fait avec
\emph{''texte''}
Cela se traduit par de l'italique dans le romain, ou par du romain dans l'italique.
 
On peut aussi mettre du texte hors alinéa, avec une marge plus grande. On utilise pour cela :
* l'environnement <code>quote</code> : en général pour les citations courtes, la composition est en pavé ;
* l'environnement <code>quotation</code> : en général pour les citations longues, la composition est en alinéa et il doit contenir plusieurs paragraphes.
 
=== Listes structurées ===
 
Les listes structurées sont des environnements :
\begin{''type_de_liste''}
\item ''premier objet de la liste''~;
\item ''deuxième objet de la liste''~;
\end{''type_de_liste''}
 
{| class="wikitable"
|+ Types de liste
! Type de liste !! Environnement
|-
| Liste numérotée || <code>enumerate</code>
|-
| Liste non-numérotée || <code>itemize</code>
|-
| Liste de description || <code>description</code>
|}
Les listes de description s'utilisent de la manière suivante
\begin{description}
\item[''objet 1''] ''description de l'objet 1''~;
\item[''objet 2''] ''description de l'objet 2''~;
\end{description}
 
On peut imbriquer les listes
\begin{''type_de_liste 1''}
\item ''premier objet de la liste''~;
\item ''deuxième objet de la liste''~:
\begin{''type_de_liste 2''}
\item ''premier objet de la sous-liste'',
\end{''type_de_liste 2''}
\end{''type_de_liste 1''}
 
=== Références et notes ===
 
==== Note ====
 
Une note de bas de page s'obtient avec
\footnote{''texte de la note''}
placé à l'endroit de l'appel de note.
 
Si vous utilisez l'extension <code>hyperref</code>, les appels de note sont des liens vers la note.
 
La commande <code>\marginpar{''texte de la note''}</code> permet de mettre une note de marge, mais sans appel de note (puisque la note se trouve à côté du texte auquel elle se réfère).
 
==== Référence croisée ====
 
Pour faire une référence dans le texte (à une page, à un numéro de section), il faut d'abord placer une étiquette à l'endroit cible :
\label{''étiquette''}
puis, on utilise
* <code>\pageref{''étiquette''}</code> pour mentionner le numéro de page, et
* <code>\ref{''étiquette''}</code> pour mentionner le numéro de partie, chapitre, section, sous-section, équation, objet flottant (figure, tableau).
Si vous utilisez l'extension <code>hyperref</code>, les numéros de section et de page sont des liens menant vers l'endroit pointé.
 
==== Bibliographie ====
 
Pour placer une référence bibliographique, il faut :
* introduire les références de l'ouvrage dans un fichier <code>.bib</code> dédié ; pour chaque ouvrage, on définit une étiquette ;
* à l'endroit de l'appel, écrire <code>\cite{''étiquette''}</code> ;
* à la fin de l'ouvrage, mettre<br /> <code>\bibliographystyle{''style''}</code><br /><code>\bibliography{''nom de fichier''}</code> ;
* compiler avec <code>latex</code>, puis avec <code>bibtex</code>, et à nouveau avec <code>latex</code>.
Les entrées du fichier de bibliographie sont du type
@book{''étiquette'',
author="''auteur(s) du livre''",
title="''titre de l'ouvrage",
year="''année''",
publisher="''éditeur''"
}
pour les livres, et
@article{''étiquette'',
author="''auteur(s) de l'article",
title="''titre de l'article",
journal="''nom du journal''",
number="''numéro du journal''",
year="''année de parution''"
}
Il ne faut employer que des caractères ASCII (non accentués), donc utiliser des commandes de type <code>{\'e}</code> pour « é ». Les mots contenant des capitales doivent êtres dans un bloc <code>{…}</code> pour que la casse soit respectée.
 
S'il n'y a qu'un seul auteur on écrit :
author="''Nom, Prénom''"
s'ils sont plusieurs, on écrit :
author="''Nom1, Prénom1'' and ''Nom2, Prénom2''"
Pour les styles bibliographiques, on peut utiliser des styles anglais ou francisés. Les principaux styles sont :
* <code>plain</code> (anglais) ou <code>plain-fr</code> (francisé) : style « simple », la référence est un numéro, établi selon l'ordre alphabétique des auteurs puis l'année ;
* <code>unsrt</code> (anglais) ou <code>unsrt-fr</code> (francisé) : style « non-trié » ''(unsorted)'', la référence est un numéro qui est l'ordre de citation ;
* <code>alpha</code> (anglais) ou <code>alpha-fr</code> (francisé) : style « alphanumérique », la référence est composée des initiales du ou des auteurs et de l'année.
 
Si vous utilisez l'extension <code>hyperref</code>, les appels de note bibliographique sont des liens vers la référence.
 
==== Index ====
 
Pour faire un index, il faut utiliser l'extension <code>makeidx</code>, puis :
* dans le préambule, mettre la commande <code>\makeindex</code> ;
* pour créer une entrée, mettre dans le texte <code>\index{''nom de l'entrée''}</code> ;
* mettre la commande <code>\printindex</code> à l'endroit où l'on veut mettre l'index ;
* compiler avec <code>\latex</code>, puis avec <code>makeindex</code>, puis à nouveau avec <code>latex</code>.
L'index contiendra le ''nom de l'entrée'' suivi du, ou des numéros de page.
 
On a les possibilités suivantes :
* pour avoir un classement alphabétique ne correspondant pas au nom de l'entrée : <code>\index{''nom de classement''@''nom affiché''}</code>, par exemple <code>\index{Epee@Épée}</code> ;
* pour faire référence à un autre mot : <code>\index{''mot''|see{''autre mot''}}</code>, par exemple <code>\index{Sabre|see{Épée}}</code> ;
* pour avoir un intervalle de page : on place <code>\index{''mot''|(}</code> au début de la zone et <code>\index{''mot''|)}</code> à la fin ;
* pour une « cascade », on met un point d'exclamation, par exemple <code>\index{Lame!Sabre}</code>, <code>\index{Lame!Epee@Épée}</code>.
 
Si vous utilisez l'extension <code>hyperref</code>, les numéros de page sont des liens vers les endroits concernés.
 
== Caractères particuliers ==
 
Certains caractères ne sont pas accessibles au clavier, ou bien ne font pas partie du codage utilisé (défini par l'option passée à l'extension <code>inputenc</code>). Pour les obtenir, on utilise des commandes. En particulier, les caractères suivants ont une utilisation spéciale dans LaTeX et ne peuvent être tapés tels quels : <code>{ } % # $ ^ ~ & _ \</code>.
 
Nous indiquons ci-dessous quelques caractères spéciaux. L'extension <code>textcomp</code> fournit des caractères supplémentaires.
 
{|class="wikitable"
|+ Caractères spéciaux
! Saisie !! Caractère !! Saisie !! Caractère !! Saisie !! Caractère
|-
| <code>\{</code> || {
| <code>\copyright</code> || ©
| <code>\textbar</code> || <nowiki>|</nowiki>
|-
| <code>\}</code> || }
| <code>\dag</code> || †
| <code>\textperiodcentered</code> || ·
|-
| <code>\%</code> || %
| <code>\ddag</code> || ‡
| <code>\textregistered</code> || ®
|-
| <code>\#</code> || #
| <code>\o</code> || ø
| <code>\texttrademark</code> || ™
|-
| <code>\$</code> || $
| <code>\O</code> || Ø
| <code>\textvisiblespace</code> || ?
|-
| <code>\textasciicircum</code> || ^
| <code>\P</code> || ¶
| <code>\degres</code>?<sup>2</sup> || °
|-
| <code>\textasciitilde</code> || ~
| <code>\pounds</code> || £
| <code>\ier</code>, <code>\iere</code>, <code>\iers</code>, <code>\ieres</code>?<sup>2</sup> || <sup>er</sup>, <sup>re</sup>, <sup>ers</sup>, <sup>res</sup>
|-
| <code>\&</code> || &
| <code>\S</code> || §
| <code>\ieme</code>, <code>\iemes</code>?<sup>2</sup> || <sup>e</sup>, <sup>es</sup>
|-
| <code>\_</code> || _
| <code>\ss</code> || ß
| <code>\primo</code>, <code>\secundo</code>, <code>\tertio</code>, <code>\quarto</code><sup>2</sup> || 1°, 2°, 3°, 4°
|-
| <code>\textbackslash</code> || \
| <code>\euro</code>?<sup>1</sup> || €
| <code>\no</code>, <code>\No</code><sup>2</sup> || n°, N°
|-
| colspan="6" | '''Notes'''
# avec l'extension <code>eurosym</code>
# avec l'extension <code>[frenchb]{babel}</code>
|}
 
{| class="wikitable"
|+ Ponctuation particulière
! Commande !! Caractère !! Note
|-
| <code>\dots</code> || … || points de suspension
|-
| <code>\og</code>, <code>\fg</code> || «, » || avec l'extension <code>[frenchb]{babel}</code> ; gère les espaces insécables ; selon ce qui suit le guillemet fermant, on peut devoir utiliser <code>\fg{}</code>
|-
| <code>-</code> || - || division (trait d'union)
|-
| <code>--</code> || – || tiret demi-cadratin, alternative : <code>\endash</code>
|-
| <code>---</code> || — || tiret cadratin, alternative : <code>\emdash</code>
|-
| <code>?`</code> || ¿ || alternative : <code>\textquestiondown</code>
|-
| <code>!`</code> || ¡ || alternative : <code>\textexclamdown</code>
|}
 
 
{| class="wikitable"
|+ Diacritiques et ligatures
! Commande !! Résultat !! Exemple
|-
| <code>\'</code> || accent aigu || <code>\'E</code> ? É
|-
| <code>\`</code> || accent grave || <code>\`E</code> ? È
|-
| <code>\^</code> || accent circonflexe || <code>\^E</code> ? Ê, <code>\^\i</code> ? î
|-
| <code>\"</code> || tréma || <code>\"E</code> ? Ë
|-
| <code>\c</code> || cédille || <code>\c?C</code> ou <code>\c{C}</code> ? Ç
|-
| <code>\ae</code>, <code>\AE</code>, <code>\oe</code>, <code>\OE</code> || æ, Æ, œ, Œ
|}
 
On peut utiliser différents espaces horizontaux.
Pour introduire une espace<ref>le mot espace,
lorsqu'il désigne un écart horizontal entre deux mots dans le document final,
est au féminin ;
une espace était une pièce destinée à écarter
les caractère de plomb</ref>
de dimension donnée,
on utilise la commande
\hspace{''longueur''}
 
{| class="wikitable"
|+ Espaces
! Type !! Saisie
|-
| espace justifiante || ?, retour de ligne, <code>\?</code>, <code>{}?</code> ou <code>{?}</code>
|-
| espace insécable || <code>~</code>
|-
| petite espace || <code>\,</code>
|-
| espace fine || <code>\/</code>
|}
Rappel : l'espace insécable se met entre autres devant une ponctuation double (:;?!), l'extension <code>[frenchb]{babel}</code> gère ceci automatiquement ; elle se met aussi entre une valeur et son unité, ainsi qu'entre un titre et un patronyme.
 
== Mise en forme du texte ==
 
=== Police ===
 
On peut faire varier le corps (taille du texte), par ordre de taille croissant : <code>\tiny</code>, <code>\scriptsize</code>, <code>\footnotesize</code>, <code>\small</code>, <code>\normalsize</code> (taille normale), <code>\large</code>, <code>\Large</code>, <code>\LARGE</code>, <code>\huge</code>, <code>\Huge</code>. On peut :
* soit inclure le texte avec la commande dans un bloc, par exemple <code>{\small ''texte en petit''}</code> ;
* soit utiliser un l'environnement ayant le même nom que la commande, par exemple <code>\begin{small} ''texte en petit'' \end{small}</code>.
On peut changer la police. Une police est définie par trois paramètres :
* sa famille (caractères romains, sans empattement, type machine à écrire) ;
* sa forme (caractères droits, italiques, petites capitales) ;
* sa graisse (gras, moyen).
On peut définir chacun de ces trois paramètres avec des commandes à argument, de la forme <code>\text''option''</code>, ou bien avec des commandes déclaratives ; on a trois type de commandes déclaratives selon le paramètre concerné (<code>\''option''familly</code> pour la famille, <code>\''option''shape</code> pour la forme, <code>\''option''series</code> pour la graisse).
 
{| class="wikitable"
|+ Choix de la police
! Type de police !! Commande à argument !! Commande déclarative !! Remarque
|-
| romain
| <code>\textrm{''texte''}</code>
| <code>{\rmfamily ''texte''}</code>
|-
| sans empattement
| <code>\textsf{''texte''}</code>
| <code>{\sffamily ''texte''}</code>
|-
| police type machine à écrire
| <code>\texttt{''texte''}</code>
| <code>{\ttfamily ''texte''}</code>
|-
| italique
| <code>\textit{''texte''}</code>
| <code>{\itshape ''texte''}</code>
| la plupart du temps, préférer <code>\emph{…}</code>
|-
| rowspan="2" | petites capitales
| <code>\textsc{''texte''}</code>
| <code>{\scshape ''texte''}</code>
|-
| <code>\bsc{''texte''}</code> || || avec l'extension <code>[frenchb]{babel}</code> (empêche la césure)
|-
| gras
| <code>\textbf{''texte''}</code>
| <code>{\bfseries ''texte''}</code>
|-
| supérieures (exposant) || <code>\textsuperscript{''texte''}</code>
|-
| chiffres elzéviriens (ou bas de casse) || <code>\oldstylenums{''chiffres''}</code>
|}
 
Certaines extensions permettent d'utiliser d'autres fontes :
* l'extension <code>fourier</code> permet d'utiliser la fonte <span style="font-family: Utopia">Utopia</span> ;
* l'extension <code>mathptmx</code> permet d'utiliser la fonte <span style="font-family: Times">Times</span> ;
* l'extension <code>mathpazo</code> permet d'utiliser la fonte <span style="font-family: Palatino">Palatino</span> ;
* l'extension <code>times</code> définit la fonte <span style="font-family: Times">Times</span> comme fonte romaine, <span style="font-family: Helvetica">Helvetica</span> comme fonte sans empattement et <span style="font-family: Courier">Courier</span> comme fonte à chasse fixe ;
* l'extension <code>oldgerm</code> fournit la commande <code>\textgoth{''texte en gothique''}</code> ; l'extension <code>yfonts</code> fournit les commandes <code>{\frakfamily ''texte en gothique''}</code> et <code>\textfrak{''texte en gothique''}</code> ;
* l'extension <code>frcursive</code> fournit l'environnement <code>cursive</code>, qui imite une écriture manuelle.
 
Pour une lettrine, il faut utiliser l'extension <code>lettrine</code>, on a alors la commande <code>\lettrine</code> :
<source lang="latex">
\lettrine{L}{es premiers} mots du paragraphe...
</source>
 
=== Mise en page ===
 
On peut provoquer un retour à la ligne sans changer d'alinéa avec <code>\\</code> (double contre-oblique).
 
On peut introduire un espace vertical entre deux paragraphes :
* <code>\vspace{''longueur''}</code> ;
* <code>\medskip</code> pour sauter une ligne « normale » ;
* <code>\smallskip</code> pour un « petit » saut de ligne ;
* <code>\bigskip</code> pour un « grand » saut de ligne.
 
On peut inciter à un saut de page avec <code>\pagebreak</code> et décourager un saut de page avec <code>\nopagebreak</code>.
 
On peut forcer un saut de page avec <code>\newpage</code> ou <code>\clearpage</code>, le second forçant l'affichage des flottants en suspens. Avec la commande <code>\cleardoublepage</code>, le texte qui suit est en belle page (page impaire).
 
L'environnement <code>minipage</code> permet d'organiser une partie d'un texte comme une page, par exemple à l'intérieur d'une <code>\fbox</code>, ou bien pour placer des notes au bas d'un bloc donné plutôt qu'en bas de page :
\begin{minipage}{''largeur''}
...
\end{minipage}
 
=== Composition ===
 
Par défaut, le texte est composé en alinéa en typographie française.
 
Pour composer ponctuellement en pavé, on peut mettre un espace vertical (par exemple <code>\medskip</code>) avant le paragraphe pour placer une ligne vide, et <code>\noindent</code> au début du paragraphe pour annuler l'alinéa.
 
La commande <code>\indent</code> permet de forcer un alinéa lorsqu'il n'y en a pas.
 
Pour une composition en drapeau (alignée à gauche ou à droite), on utilise les environnements <code>flushleft</code> (au fer à gauche) ou <code>flushright</code> (au fer à droite). Pour une composition centrée, on utilise l'environnement <code>center</code>.
 
Pour empêcher une césure, on utilise <code>\mbox{''mot''}</code>. Pour indiquer l'endroit où peut se trouver la césure, on utilise la commande <code>\hyphenation</code> dans le préambule. S'il s'agit d'un mot à usage unique, on peut indiquer la césure localement, en mettant <code>\-</code> dans le mot.
 
=== Tableaux ===
 
Il est fortement conseillé d'utiliser l'extension <code>array</code>.
 
Un tableau est défini par l'environnement <code>tabular</code> :
\begin{tabular}{''description''}
''élément A1'' & ''élément A2'' \\
''élément B1'' & ''élément B2'' \\
\end{tabular}
Les lignes se terminent par une double contre-oblique <code>\\</code> ou par un <code>\tabularnewline</code>, et au sein d'une ligne, les cellules sont séparées par une esperluette <code>&</code>.
 
La ''description'' est la liste des colonnes avec leur type :
* <code>l</code> : texte aligné à gauche ;
* <code>c</code> : texte centré ;
* <code>r</code> : texte aligné à droite ;
* <code>p{''largeur''}</code> : texte en pavé, la largeur de la colonne étant fixée.
Dans une colonne de type <code>p</code>, on peut revenir à la ligne au sein d'une colonne avec <code>\newline</code>, et on peut changer d'alinéa avec une ligne vide.
 
Pour avoir des filets verticaux, on place des tubes <code>|</code> dans la ''description''. Pour avoir des filets horizontaux, on place des <code>\hline</code>. On peut mettre un filet horizontal partiel (qui ne fait pas toute la largeur du tableau) avec <code>\cline{''colonne1''-''colonne2''}</code>. L'extension <code>arydshln</code> (pour ''array dashed lines'', à placer après les autres extensions relatives aux tableaux) qui permet d'avoir un filet en trait discontinu : on utilise le deux-points « : » pour les séparateurs verticaux, <code>\hdashline</code> pour les séparateurs horizontaux et <code>cdashline{''colonne1''-''colonne2''}</code> pour les séparateurs horizontaux qui ne font pas toute la largeur. Par exemple, pour un tableau avec des filets simples partout :
\begin{tabular}{|l|l|}
\hline
''élément A1'' & ''élément A2'' \\
\hline
''élément B1'' & ''élément B2'' \\
\hline
\end{tabular}
 
On peut fusionner des cellules consécutives d'une ligne avec <code>\multicolumn</code> :
\multicolumn{''nombre''}{''description''}{''contenu''}
où ''nombre'' est le nombre de cellules fusionnées, et ''description'' est la description comme ci-dessus (<code>l</code>, <code>c</code>, <code>r</code>, <code>p</code>). À moins que la première colonne ne soit incluse, on n'indique que le filet de droite (par exemple <code>{l|}</code>), le filet de gauche étant déterminé par la description générale. On peut utiliser cette commande sur une seule colonne pour en changer la mise en forme (alignement, filets).
 
On peut simuler une fusion verticale en utilisant des filets partiels. Pour faire de la vraie fusion de lignes, il faut utiliser l'extension <code>multirow</code> et la commande :
\multirow{''nombre de lignes''}{''largeur''}{''contenu''}
Pour ''largeur'', on peut indiquer une étoile <code>*</code> afin de laisser LaTeX ajuster la largeur automatiquement ; cependant, cette option ne permet pas d'avoir des retours de ligne dans la cellule.
 
L'extension <code>array</code> définit deux commandes à placer dans la description des colonnes : <code>&gt;{''commandes''}</code> qui permet d'exécuter des commande en début de cellule, et <code>&lt;{''commandes''}</code> pour la fin de cellule. Par exemple :
* mettre toute une colonne en fonte teletype : <code>&gt;{\ttfamily}l|</code> ;
* mettre toute une colonne en mode mathématiques : <code>&gt;{$}l&lt;{$}|</code> ;
* pour aligner gauche en fixant la largeur : <code>&gt;{\raggedright\arraybackslash}p{3cm}|</code><ref>''ragged right'' pour « drapeau droit » (littéralement « en lambeau à droite »)</ref> ; la commande <code>\arraybackslash</code> permet d'utiliser <code>\\</code> pour changer de ligne de tableau, sinon ceci sert pour revenir à la ligne dans la cellule (on peut toujours utiliser <code>\tabularnewline</code>) ;
* pour centrer et aligner à droite : <code>&gt;{\centering}</code> et <code>&gt;{\raggedleft}</code>, avec la même précaution que ci-dessus.
Cette extension fournit également deux types de colonne : <code>m</code> et <code>b</code>, identiques à <code>p</code>, mais verticalement, les cellules ''des autres colonnes'' seront respectivement centrées et alignées en bas par rapport aux cellules de cette colonne. Si l'on veut centrer verticalement une cellule ou l'aligner en bas, il faut avoir recours à une solution au cas par cas<ref>l'alignement vertical est défini par rapport à la ligne de base de la cellule de référence ; on peut placer un tableau dans une cellule, afin que les autres cellules les considère comme une ligne unique</ref>.
 
Enfin, si un type de colonne doit être utilisé plusieurs fois, l'extension <code>array</code> permet de définir un type de colonne, par exemple
<source lang="latex">
\newcolumntype{C}{>{\centering\arraybackslash}p{3cm}}
\begin{tabular}{|l|C|}
...
</source>
 
L'extension <code>slashbox</code> permet de scinder une cellule en deux selon la diagonale, par exemple pour la cellule en haut à gauche du tableau, on utilise :
\backslashbox{''titre de la colonne''}{''titre de la ligne''}
 
Si l'on veut faire tourner un texte (par exemple mettre un en-tête vertical), on utilise
\rotatebox{''angle''}{''texte''}
où ''angle'' est en degrés. Si l'on veut avoir un en-tête de colonne à 45°, il faut mettre le texte dans une boîte de taille nulle pour ne pas élargir la colonne :
\makebox[0cm][1]{\rotatebox{45}{''texte''}}
 
=== Couleur ===
 
On utilise l'extension <code>xcolor</code>. On dispose des fonctions suivantes :
* <code>\textcolor{''couleur''}{''texte''}</code> et <code>{\color{''couleur''} ''texte''}</code> pour la couleur des caractères ;
* <code>\colorbox{''couleur''}{''texte''}</code> pour une boîte à fond coloré ;
* <code>\fcolorbox{''couleur cadre''}{''couleur fond''}{''texte''}</code> pour une boîte à fond coloré avec un filet de couleur autour du texte ;
* <code>\pagecolor{couleur}</code> pour une page à fond coloré.
Les couleurs utilisables sont <code>red</code>, <code>green</code>, <code>blue</code>, <code>cyan</code>, <code>magenta</code>, <code>yellow</code>, <code>orange</code>, <code>violet</code>, <code>purple</code>, <code>brown</code>, <code>black</code>, <code>darkgray</code>, <code>gray</code>, <code>lightgray</code> et <code>white</code>.
 
On peut aussi utiliser des modèles, en remplaçant <code>{''couleur''}</code> par <code>[''modèle'']{''couleur''}</code>, par exemple <code>\colorbox[''modèle'']{''couleur''}{''texte''}</code>. On a notamment :
* <code>rgb</code> : les trois composantes sont un nombre entre 0 et 1, séparés par une virgule ;
* <code>HTML</code> : les trois composantes sont un nombre hexadecimal entre 00 et FF, accolés (HTML en majuscule) ;
* <code>hsb</code> : modèle teinte-saturation-luminosité (TSL), les trois composantes sont un nombre entre 0 et 1 (la teinte est donc l'angle en degrés divisé par 360), séparés par une virgule ;
* <code>gray</code> : modèle nuances de gris, avec un nombre décimal entre 0 (noir) et 1 (blanc).
On peut définir une nouvelle couleur avec <code>\definecolor</code> :
<source lang="latex">
\definecolor{vertolive}{rgb}{0.5,0.5,0}
</source>
 
Pour un tableau, on utilise le paramètre <code>table</code> en appelant l'extension <code>xcolor</code>, <code>\usepackage[table]{xcolor}</code>. On peut alors définir :
* la couleur de fond d'une ligne en mettant <code>\rowcolor{''couleur''}</code> en début de ligne ;
* la couleur de fond d'une colonne en mettant <code>&gt;{\columncolor{''couleur''}}</code> avant la désignation de la colonne dans la définition de l'environnement <code>tabular</code> ; on peut lui adjoindre la couleur des caractères <code>&gt;{\color{''couleur''} \columncolor{''couleur''}}</code> ;
* la couleur de fond d'une cellule en mettant <code>\cellcolor{''couleur''}</code> en début de cellule.
<source lang="latex">
\begin{tabular}{|l|l|>{\columncolor{yellow}}l|}
\hline
A1 & A2 & A3 \\ \hline
\rowcolor{cyan} B1 & B2 & \cellcolor{green}B3 \\ \hline
\end{tabular}
</source>
Pour une alternance de couleur sur deux lignes, on peut utiliser la commande <code>\rowcolors</code> (avec un ''s''?) : <code>\rowcolors{''début''}{''couleur impaire''}{''couleur paire''}</code>, ''début'' étant la première ligne colorée (cela permet de sauter les en-têtes).
<source lang="latex">
\rowcolors{1}{lightgray}{white}
\begin{tabular}
...
</source>
 
== Éléments autres que du texte ==
 
=== Images ===
 
L'inclusion d'une image se fait avec la commande <code>\includegraphics{''nom du fichier''}</code>. Il est conseillé d'avoir deux fichiers image, un PostScript (<code>.ps</code> ou <code>.eps</code>) et un PNG, JPEG ou PDF, et de ne pas indiquer l'extension afin de laisser LaTeX choisir le fichier.
 
L'extension <code>graphix</code> permet de définir simplement la taille de l'image : <code>\includegraphics[width=''largeur'']{''nom du fichier''}</code>, <code>\includegraphics[height=''hauteur'']{''nom du fichier''}</code>.
 
=== Adresses réticulaires ===
 
L'extension <code>hyperref</code> met en forme l'adresse réticulaire et crée en plus un lien cliquable dans le document :
<source lang="latex">
\url{http://fr.wikibooks.org/}
\url{mailto:jeveuxduspam@fai.fr}
\url{news:fr.comp.text.tex}
</source>
Comme l'extension redéfinit un certain nombre de commandes, il est recommandé de la placer en dernier dans le préambule. Si l'on veut colorer le lien, on peut appeler l'extension avec l'option <code>colorlinks=true</code>. L'option <code>breaklinks=true</code> autorise LaTeX à faire des césures dans les adresses :
<source lang="latex">
\usepackage[colorlinks=true,breaklinks=true]{hyperref}
</source>
Si vous ne voulez pas de lien mais simplement une mise en forme, vous pouvez utiliser la commande <code>\url{…}</code> de l'extension <code>url</code>.
 
=== Éléments flottants ===
 
Un élément flottant est une image ou un tableau dont le placement est laissé à l'initiative de LaTeX ; LaTeX se charge également de la numérotation. Un élément flottant est défini par un environnement : <code>figure</code> pour une image et <code>table</code> pour un tableau.
<source lang="latex">
\begin{figure}[position]
\caption{\label{étiquette} titre}
\includegraphics[…]{…}
\end{figure}
[…]
Dans la figure~\ref{étiquette} page~\pageref{étiquette}, […].
</source>
ou bien
<source lang="latex">
\begin{table}[position]
\caption{\label{étiquette} titre}
\begin{tabular}{description}
[…]
\end{tabular}
\end{table}
[…]
Dans le tableau~\ref{''étiquette''} page~\pageref{''étiquette''}, […].
</source>
Le paramètre optionnel ''position'' est une lettre indiquant l'emplacement désiré :
* <code>h</code> pour qu'il soit à côté du texte précédant dans le source ''(here)'',
* <code>t</code> : en haut d'une page ''(top)'',
* <code>b</code> : en bas d'une page ''(bottom)'',
* <code>p</code> : dans une page ne contenant que des flottants (regroupement des figures et tableaux).
Si l'on est sur deux colonnes, les environnements étoilés <code>figure*</code> et <code>table*</code> permettent de placer l'objet sur toute la largeur de la page et non plus dans une colonne.
 
Pour centrer l'objet, il faut utiliser <code>\centering</code> :
<source lang="latex">
\begin{figure}[position] \begin{table}[position]
\centering \centering
[…] […]
\end{figure} \end{table}
</source>
La commande <code>\clearpage</code> qui provoque un changement de page et l'affichage de tous les flottants en attente. L'instruction <code>\cleardoublepage</code> a le même effet, mais le texte qui suit est placé en belle page.
 
On peut afficher l'index des flottants avec <code>\listoffigures</code> et <code>\listoftables</code>.
 
L'extension <code>rotating</code> fournit deux environnements flottants appelés <code>sidewaystable</code> et <code>sidewaysfigure</code> qui permettent de placer les objet à l'italienne (en paysage), en faisant également tourner le titre.
<source lang="latex">
\begin{sidewaystable}
\caption{titre}
\begin{tabular}
[…]
\end{tabular}
\end{sidewaystable}
</source>
 
=== Formules mathématiques ===
 
L'utilisation des extensions de l'AMS (American Mathematical Society), et en particulier <code>amsmath</code> et <code>amsfonts</code>, est fortement recommandée.
\usepackage{amsmath,amssymb,amsfonts}
Le mode mathématique ne gère pas de manière correct les opérateurs Unicode (en particulier l'alignement et l'espacement), par exemple le caractère « × » n'est pas géré correctement, il faut utiliser les commandes (<code>\times</code> ici).
 
==== Mode mathématique ====
 
les formules mathématiques sont incluses dans des environnements : <code>math</code> pour une formule dans le texte, <code>displaymath</code> pour une formule hors alinéa, et <code>equation</code> pour une formule hors alinéa numérotée. On peut utiliser les abréviations suivantes :
* <code>$…$</code> pour une formule dans le texte ;
* <code>\[…\]</code> pour une formule hors alinéa non-numérotée.
; Exemple
<source lang="latex">
\begin{equation}
\label{eq_gas_pft}
PV = nRT
\end{equation}
Dans l'équation~\ref{eq_gas_pft},
dite \og équation des gaz parfaits \fg, ...
</source>
 
==== Fonctions ====
 
Par défaut, les lettres sont considérées comme des variables et sont mises en italique. Les fonctions sont en romain, et sont des commandes simples à retenir : une contre-oblique et l'abréviation de la fonction, par exemple <code>\sin</code>, <code>\cos</code>, <code>\tan</code>, <code>\cot</code>, <code>\arcsin</code>, <code>\arccos</code>, <code>\arctan</code>, <code>\coth</code>, <code>\sinh</code>, <code>\cosh</code>, <code>\tanh</code> <code>\ln</code>, <code>\log</code>, <code>\exp</code> <code>\max</code>, <code>\min</code>, <code>\sup</code>, <code>\inf</code>, <code>\lim</code> <code>\ker</code>, <code>\deg</code>, …
 
Si vous voulez définir une nouvelle fonction, il faut utiliser la commande <code>\DeclareMathOperator</code><ref name="amsmath">cette commande nécessite l'extension <code>amsmath</code></ref> :
\DeclareMathOperator{\''commande''}{''texte''}
par exemple
\DeclareMathOperator{\acos}{acos}
 
==== Polices mathématiques ====
 
Les polices mathématiques sont différentes des polices de texte. Les instructions permettant de changer de police sont donc différentes.
 
{| class="wikitable"
|+ Choix de la police mathématique
! Type de police !! Commande !! Type de police !! Commande
|-
| romain || <code>\mathrm{''texte''}</code>
| supérieures (exposant) || <code>^{''texte''}</code>
|-
| sans empattement || <code>\mathsf{''texte''}</code>
| inférieures (indice) || <code>_{''texte''}</code>
|-
| police type machine à écrire || <code>\mathtt{''texte''}</code>
| lettres ajourées || <code>\mathbb{''texte''}</code><ref name="amsfonts">cette commande nécessite l'extension <code>amsfonts</code></ref>
|-
| italique || <code>\mathit{''texte''}</code>
| écriture calligraphique || <code>\mathcal{''texte''}</code>
|-
| gras || <code>\mathbf{''texte''}</code>
| gothique || <code>\mathfrak{''texte''}</code><ref name="amsfonts" />
|}
 
Les lettres grecques sont obtenue en écrivant leur nom en anglais avec une contre-oblique :
* bas-de-casse : <code>\alpha \beta \gamma \delta \epsilon \zeta \eta \theta \iota \kappa \lambda \mu \nu \xi \pi \rho \sigma \tau \upsilon \phi \chi \psi \omega</code> ;
* capitales : <code>\Gamma \Delta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi \Omega</code>.
Certaines lettres sont identiques aux lettres latines et ne sont donc pas définies, comme le omicron, qui est en fait identique au « o », et de nombreuses capitales (l'alpha capitale est identique au A etc.).
 
Certaines lettres ont des variantes.
 
{| class="wikitable"
|+ Variantes des lettres grecques
! Première<br />variante !! Caractère !! Seconde<br />variante !! Caractère
|-
| <code>\epsilon</code> || <math>\epsilon</math>
| <code>\varepsilon</code> || <math>\varepsilon</math>
|-
| <code>\theta</code> || <math>\theta</math>
| <code>\vartheta</code> || <math>\vartheta</math>
|-
| <code>\pi</code> || <math>\pi</math>
| <code>\varpi</code> || <math>\varpi</math>
|-
| <code>\rho</code> || <math>\rho</math>
| <code>\varrho</code> || <math>\varrho</math>
|-
| <code>\sigma</code> || <math>\sigma</math>
| <code>\varsigma</code> || <math>\varsigma</math>
|-
| <code>\phi</code> || <math>\phi</math>
| <code>\varphi</code> || <math>\varphi</math>
|}
 
Le mode mathématique gère différemment les espaces et les accents. Lorsque l'on veut mettre du texte normal en mode mathématique (par exemple entre deux expressions), on utilise la commande <code>\text{…}</code><ref name="amsmath" />.
 
==== Opérateurs, quantificateurs, relations et symboles ====
 
{| class="wikitable"
|+ Opérateurs arithmétiques
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>+</code> || <math>+\,</math>
| <code>\div</code> || <math>\div\,</math>
|-
| <code>-</code> || <math>-\,</math>
| <code>:</code> || <math>:\,</math>
|-
| <code>\times</code> || <math>\times\,</math>
| <code>\Im</code>, <code>\Re</code> || <math>\Im</math>, <math>\Re</math>
|-
| <code>\cdot</code> || <math>\cdot\,</math>
| <code>\otimes</code> || <math>\otimes</math>
|-
| <code>/</code> || <math>/\,</math>
| <code>\wedge</code> || <math>\wedge</math>
|}
 
{| class="wikitable"
|+ Grands opérateurs arithmétiques
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>\frac{a}{b}</code> || <math>\frac{a}{b}</math>
| <code>\prod_{i=1}^{n} u_i</code> || <math>\prod_{i=1}^{n} u_i</math>
|-
| <code>\sqrt{a}</code> || <math>\sqrt{a}</math>
| <code>\int_{a}^{b} f(x)dx</code> || <math>\int_{a}^{b} f(x)dx</math>
|-
| <code>\sqrt[n]{a}</code> || <math>\sqrt[n]{a}</math>
| <code>\oint_{\Lambda} f(x)dx</code> || <math>\oint_{\Lambda} f(x)dx</math>
|-
| <code>\sum_{i=1}^{n} u_i</code> || <math>\sum_{i=1}^{n} u_i</math>
|}
L'extension <code>amsmath</code> fournit les commandes <code>\iint</code> et <code>\iiint</code> pour les intégrales doubles et triples.
 
{| class="wikitable"
|+ Dérivation
|-
! Instruction !! Symbole
|-
| <code>\nabla</code> || <math>\nabla</math>
|-
| <code>\partial</code> || <math>\partial</math>
|}
 
Certains quantificateurs et relations ont leur négation, par exemple <code>\exists</code> et <code>\nexists</code>. S'il n'existe pas, on peut faire précéder la commande par <code>\not</code> (par exemple <code>\not\exists</code>).
 
{| class="wikitable"
|+ Quantificateurs
|-
! Instruction !! Symbole
|-
| <code>\forall</code> || <math>\forall</math>
|-
| <code>\exists</code> || <math>\exists</math>
|-
| <code>\nexists</code> || <math>\nexists</math>
|}
 
{| class="wikitable"
|+ Relations
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>=</code> || <math>=\,</math>
| <code>\neq</code> || <math>\neq</math>
|-
| <code>\equiv</code> || <math>\equiv</math>
| <code>\ll</code>, <code>\gg</code> || <math>\ll</math>, <math>\gg</math>
|-
| <code>\approx</code> || <math>\approx</math>
| <code>\lll</code>, <code>\ggg</code><ref name="amssymb">cette commande nécessite l'extension <code>amssymb</code></ref> || <math>\lll</math>, <math>\ggg</math>
|-
| <code>\simeq</code> || <math>\simeq</math>
| <code>\Rightarrow</code>, <code>\Longrightarrow</code> || <math>\Rightarrow</math>, <math>\Longrightarrow</math>
|-
| <code>\propto</code> || <math>\propto</math>
| <code>\iff</code> || <math>\iff</math>
|-
| <code>\leq</code>, <code>\geq</code> || <math>\leq</math>, <math>\geq</math>
| <code>\leqslant</code>, <code>\geqslant</code><ref name="amssymb" /> || <math>\leqslant</math>, <math>\geqslant</math>
|-
| <code>\pm</code>, <code>\mp</code> || <math>\pm</math>, <math>\mp</math>
| <code>\to</code> || <math>\to</math>
|}
 
{| class="wikitable"
|+ Ensembles
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>\varnothing</code> || <math>\varnothing</math>
| <code>\subset</code> || <math>\subset</math>
|-
| <code>\cap</code> || <math>\cap</math>
| <code>\subseteq</code> || <math>\subseteq</math>
|-
| <code>\cup</code> || <math>\cup</math>
| <code>\in</code> || <math>\in</math>
|}
 
{| class="wikitable"
|+ Opérateurs logiques
|-
! Instruction !! Symbole
|-
| <code>\lnot</code> || <math>\lnot</math>
|-
| <code>\land</code> || <math>\land</math>
|-
| <code>\lor</code> || <math>\lor</math>
|}
 
{| class="wikitable"
|+ Géométrie
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>\wedge</code> || <math>\wedge</math>
| <code>\sphericalangle</code> || <math>\sphericalangle</math>
|-
| <code>\angle</code> || <math>\angle</math>
| <code>\perp</code> || <math>\perp</math>
|-
| <code>\measuredangle</code> || <math>\measuredangle</math>
|}
 
{| class="wikitable"
|+ Flèches
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>\leftarrow</code>, <code>\longleftarrow</code> || <math>\leftarrow</math>, <math>\longleftarrow</math>
| <code>\xrightarrow[a]{b}</code>, <code>\xleftarrow[a]{b}</code><ref name="amsmath" /> || <math>\xrightarrow[a]{b}</math>, <math>\xleftarrow[a]{b}</math>
|-
| <code>\rightarrow</code>, <code>\longrightarrow</code> || <math>\rightarrow</math>, <math>\longrightarrow</math>
| <code>\leftrightarrows</code>, <code>\leftrightharpoons</code> || <math>\leftrightarrows</math>, <math>\leftrightharpoons</math>
|-
| <code>\leftrightarrow</code>, <code>\longleftrightarrow</code> || <math>\leftrightarrow</math>, <math>\longleftrightarrow</math>
| <code>\uparrow</code>, <code>\downarrow</code>, <code>\updownarrow</code> || <math>\uparrow</math>, <math>\downarrow</math>, <math>\updownarrow</math>
|-
| <code>\nwarrow</code>, <code>\nearrow</code>, <code>\searrow</code>, <code>\swarrow</code> || <math>\nwarrow</math>, <math>\nearrow</math>, <math>\searrow</math>, <math>\swarrow</math>
| <code>\Uparrow</code>, <code>\Downarrow</code>, <code>\Updownarrow</code> || <math>\Uparrow</math>, <math>\Downarrow</math>, <math>\Updownarrow</math>
|}
 
On fera attention à la présence éventuelle d'un ''s'', ainsi qu'à l'ordre des mots ''left'' et ''right''. Si l'on met une capitale à l'instruction de la flèche, on obtient en général une flèche double.
 
{| class="wikitable"
|+ Divers
|-
! Instruction !! Symbole !! Instruction !! Symbole
|-
| <code>\infty</code> || <math>\infty</math>
| <code>\bullet</code> || <math>\bullet</math>
|-
| <code>\circ</code> || <math>\circ</math>
| <code>\cdots</code>, <code>\ldots</code> || <math>\cdots\text{, }\ldots</math>
|}
 
==== Délimiteurs ====
 
Les délimiteurs classiques sont <code>(…)</code>, <code>[…]</code>, <code>\{…\}</code>, <code>|…|</code>, <code>\|…\|</code> (pour ||…||), <code>\langle…\rangle</code> (pour &lt;…&gt;).
 
Pour avoir des délimiteurs adaptables en taille à leur contenu, on met <code>\left</code> devant le délimiteur d'ouverture et <code>\right</code> devant le délimiteur de fermeture, par exemple <code>\left ( \frac{a}{b} \right )</code>.
 
Si l'on ne veut qu'un délimiteur d'ouverture (par exemple une grande accolade), on termine l'expression par <code>\right .</code> (le point n'est pas affiché).
 
==== Accents mathématiques ====
 
{| class="wikitable"
|+ Accents mathématiques
|-
! Instruction !! Résultat !! Instruction !! Résultat
|-
| <code>\acute{a}</code> || <math>\acute{a}</math>
| <code>\tilde{a}</code> || <math>\tilde{a}</math>
|-
| <code>a'</code>, <code>a^\prime</code> || <math>a'\,</math>, <math>a^\prime</math>
| <code>\dot{a}</code>, <code>\ddot{a}</code> || <math>\dot{a}</math>, <math>\ddot{a}</math>
|-
| <code>\hat{a}</code> || <math>\hat{a}</math>
| <code>\widehat{ABC}</code> || <math>\widehat{ABC}</math>
|-
| <code>\bar{a}</code> || <math>\bar{a}</math>
| <code>\overline{AB}</code> || <math>\overline{AB}</math>
|-
| <code>\grave{a}</code> || <math>\grave{a}</math>
| <code>\underline{AB}</code> || <math>\underline{AB}</math>
|-
| <code>\overbrace{1,\ldots,n}^{a}</code> || <math>\overbrace{1,\ldots,n}^{a}</math>
| <code>\underbrace{1,\ldots,n}_{b}</code> || <math>\underbrace{1,\ldots,n}_{b}</math>
|-
| <code>\vec{a}</code> || <math>\vec{a}</math>
| <code>\overrightarrow{AB}</code> || <math>\overrightarrow{AB}</math>
|}
 
Il existe des accents spécifiques aux mathématiques et à la physique.
 
Les instructions <code>\imath</code> et <code>\jmath</code> donnent un ''i'' et un ''j'' sans point, ce qui évite la superposition d'un accent au point.
 
==== Mise en forme des formules ====
 
Le mode mathématique supprime tous les espaces. Il faut donc les forcer.
 
{| class="wikitable"
|+ Espaces typographiques en mode mathématiques
|-
! Instruction !! Espace !! Instruction !! Espace
|-
| <code>\?</code> || normale (justifiante)
| <code>\;</code> || grande
|-
| <code>\,</code> || fine
| <code>\!</code> || négative (permet le rapprochement d'objets)
|}
 
L'extension <code>amsmath</code> permet d'empiler des éléments.
 
{| class="wikitable"
|+ Placement vertical
|-
! Instruction !! Résultat
|-
| <code>\overset{a}{X}</code> || <math>\overset{a}{X}</math>
|-
| <code>\underset{b}{X}</code> || <math>\underset{b}{X}</math>
|-
| <code>\overset{a}{\underset{b}{X}<nowiki>}</nowiki></code> || <math>\overset{a}{\underset{b}{X}}</math>
|}
 
L'environnement <code>array</code> est l'équivalent de <code>tabular</code> pour le mode mathématiques.
 
==== Matrices ====
 
L'extension <code>amsmath</code> fournit les environnements suivants :
* <code>matrix</code> : matrice sans délimiteur ;
* <code>pmatrix</code> : matrice entre parenthèses (…) ;
* <code>vmatrix</code> : matrice entre barres |…| ;
* <code>Vmatrix</code> : matrice entre doubles barres ||…|| ;
* <code>bmatrix</code> : matrice entre crochets […] ;
* <code>Bmatrix</code> : matrice entre accolades {…}.
La ligne d'une matrice se termine par un <code>\\</code> (double contre-oblique) et sur une ligne, les éléments sont séparés par une esperluette <code>&amp;</code>
\begin{pmatrix}
a_1 & b_1 \\
a_2 & b_2
\end{pmatrix}
Pour les ellipses, on dispose des symboles suivants.
 
{| class="wikitable"
|+ Ellipses pour matrices
|-
! Instruction !! Symbole !! Instruction !! Symbole
|- valign="top"
| <code>\cdots</code> || ···
| <code>\ldots</code> || …
|-
| <code>\vdots</code> || <math>\vdots</math>
| <code>\ddots</code> || <math>\ddots</math>
|}
 
=== Physique ===
 
En mode mathématiques, la commande <code>\mho</code> affiche le symbole du mho, <math>\mho</math>, et <code>\hbar</code> affiche <math>\hbar</math>.
 
L'extension <code>[frenchb]{babel}</code> fournit la commande <code>\nombre{''nombre''}</code> qui met en forme les nombres longs.
 
L'extension <code>SIunits</code> permet la mise en forme les unités :
\usepackage[cdot]{SIunits}
\unit{''nombre''}{''unité''}
Les unités sont composées à partir des unités SI (<code>\meter</code>, <code>\kilogram</code>, <code>\second</code>, <code>\ampere</code>, <code> \kelvin</code>, <code>\mol</code>, <code>\candela</code>) et des suffixes (<code>\nano</code>, <code>\micro</code>, <code>\kilo</code>, <code>\mega</code>, <code>\giga</code>, …). Certaines unités non SI ou dérivées du SI sont disponibles (<code>\gram</code>, <code>\liter</code>, <code>\hertz</code>, <code>\newton</code>, <code>\pascal</code>, <code>\ohm</code>, <code>\celsius</code>, <code>\angstrom</code>, <code>\rad</code>, <code>\degree</code>, <code>\arcminute</code>, <code>\arcsecond</code>, …).
 
On peut composer les unités. Si elles sont accolées ou séparées par des espaces, les symboles sont accolés (multiplication). Si elles sont séparées par un point « <code>.</code> », le séparateur dépend de l'option d'appel de l'extension (espace par défaut, point multiplicateur avec l'option <code>cdot</code>). On utilise <code>\per</code> pour la division.
 
On peut élever à une puissance quelconque avec <code>\power{''unité''}{''puissance''}</code>. On peut aussi utiliser <code>\reciprocal</code> avant l'unité pour élever à la puissance -1, <code>\squared</code> ou <code>\cubed</code> après l'unité pour les puissances 2 et 3, <code>\rpsquared</code> ou <code>\rpcubed</code> après l'unité pour les puissances -2 et -3.
 
Certaines unités composées sont déjà définies (<code>\squaremeter</code>, <code>\kilowatthour</code>, …).
 
On peut aussi utiliser les unités hors de la commande <code>\unit</code>.
 
; Exemple
<source lang="latex">
\unit{\nombre{1000}}{\meter} = \unit{1}{\kilo\meter}
 
\unit{1}{\newton} = \unit{1}{\kilogram \meter \second\rpsquared}
= \unit{1}{\kilogram.\meter \per \second\squared}
 
$\unit{5\cdot 10^3}{\newton}$
 
La vitesse s'exprime en mètres par seconde (\meter\per\second)
</source>
 
L'extension <code>sistyle</code> est plus simple d'utilisation : elle définit une commande similaire
\SI{''nombre''}{''unité''}
mais unité est écrite comme une formule mathématique
<source lang="latex">
\SI{1}{N}=\SI{1}{kg.m/s^2}
</source>
Si l'on veut utiliser le point décimal dans l'unité, il faut employer <code>\pnt</code>. On dispose également de quelques unités et suffixes particuliers (<code>\angstrom</code>, <code>\micro</code>, <code>\degC</code>, <code>\arcdeg</code>, <code>\arcmin</code>, <code>\arcsec</code>).
 
=== Formule chimique ===
 
L'extension <code>mhchem</code> permet d'écrire simplement des formules compactes et semi-développées, ainsi que des équations de réaction.
<source lang="latex">
\usepackage[version=3]{mhchem}
...
\ce{1/2H2O}
\ce{^{227}_{90}Th+}
</source>
donnent respectivement <math>\mathrm{\frac{1}{2}H_2O}</math> et <math>\mathrm{{}^{227}_{90}Th^+}</math>. Les nombres après les symboles chimiques sont en indice, les + et - sont en exposant, et l'on peut utiliser la notation mathématique <code>^{…}</code> et <code>_{…}</code> pour forcer la position. Le <code>\ce</code> est un mode mathématiques, on peut par exemple écrire <code>\ce{\frac{n}{2}H2O}</code>. Par ailleurs :
* la liaison simple se marque avec un <code>-</code> ou <code>\sbond</code>, la double avec un <code>=</code> ou <code>\dbond</code>, et la triple avec un <code>#</code> ou <code>\tbond</code> ;
* la flèche de réaction se marque <code>-&gt;</code> ;
** on peut mettre du texte au dessus avec <code>-&gt;[''texte au dessus'']</code>,
** du texte au dessus et en dessous avec <code>-&gt;[''texte au dessus''][''texte en dessous'']</code> ;
* la double flèche d'équilibre se note <code>&lt;=&gt;</code> ;
* un chapeau <code>^</code> entouré de deux espaces indique un dégagement de gaz ? ; un <code>v</code> entouré de deux espaces indique une précipitation ? ;
* un astérisque « * » ou un point « . » est transformé en un point centré « · ».
 
L'extension ''ppchtex'' permet également d'écrire des formules et équations :
<source lang="latex">
\usepackage{etex}
\usepackage{m-pictex,m-ch-en}
...
\chemical{2H_2,+,O_2,->,2H_2O}
</source>
La syntaxe générale est <code>\chemical{''élément 1'',''élément 2'',…}</code> où ''élément n'' est :
* une molécule ou une partie de molécule : on utilise ici la notation mathématique ;
* une liaison simple <code>-</code>, double <code>--</code> ou triple <code>---</code> ;
* une flèche de réaction : <code>-&gt;</code> (réaction simple), <code>&lt;=&gt;</code> (équilibre).
 
Si la formule est dans un mode mathématique hors paragraphe (<code>\[...\]</code> ou environnement <code>equation</code>),
on peut mettre du texte au-dessus ou en dessous.
<source lang="latex">
\chemical{texte principal}{texte dessous}
\chemical{texte principal}{texte dessus}{texte dessous}
</source>
 
=== Code source ===
 
L'extension <code>listings</code> permet de mettre du code source. On ne peut pas utiliser de caractères Unicode dans le code mise en forme par les commandes de cette extension.
 
Le code source est placé dans un environnement <code>lstlisting</code> ; la mise en forme stricte (y compris les espaces et les retours de ligne) est respectée, et les commandes LaTeX ne sont pas interprétées.
 
On définit le langage ainsi qu'un caractère d'échappement juste après l'appel de l'extension :
<source lang="latex">
\usepackage{listings}
\lstset{language=TeX,
basicstyle=\ttfamily\small,
columns=flexible,
escapechar=+}
</source>
Dans l'exemple ci-dessus, on indique :
* que l'on écrit du TeX ou du LaTeX, ce qui permettra à l'extension de reconnaître les mots-clefs et d'appliquer une mise en forme spécifique ;
* que le code sera en police Teletype de corps plus petit que le texte ;
* que les colonnes sont « flexibles », c'est-à-dire que l'écriture peut être un plus compacte au détriment éventuellement de l'alignement vertical ;
* que le caractère d'échappement est « <code>+</code> ».
Le texte compris entre deux caractères d'échappement est interprété par LaTeX, par exemple dans
<source lang="latex">
\begin{lstlisting}
{\large +\emph{Texte en corps plus grand}+}
\end{lstlisting}
</source>
la séquence <code>{\large</code> et le <code>}</code> final seront imprimés tels quels, tandis que le <code>\emph{Texte en corps plus grand}</code> sera interprété (on aura donc le contenu du bloc en italique). Il faut évidemment choisir un caractère d'échappement qui ne sera pas dans le code.
 
On peut mettre du code au sein d'un texte, avec la commande <code>\lstinline''c''...''c''</code>. Le ''c'' indique un caractère qui marque le début et la fin du code ; il peut être choisi arbitrairement, mais ne doit évidemment pas faire partie du code. Par exemple
<source lang="latex">
Pour mettre du texte en emphase,
on utilise la commande \lstinline-\emph-.
</source>
 
Un grand nombre de langages sont disponibles : <code>Pascal</code>, <code>Fortran</code>, <code>Basic</code>, <code>C</code>, <code>C++</code>, <code>Ada</code>, <code>Scilab</code>, <code>HTML</code>, <code>Java</code>, … On peut indiquer des variantes, par exemple
<source lang="latex">
\lstset{language=[95]Ada}
\lstset{language=[Visual]C++}
\lstset{language=[77]Fortran}
</source>
 
On peut aussi indiquer les options lors de l'appel de l'environnement <code>lstlisting</code> :
<source lang="latex">
\begin{lstlisting}[language=XML,escapechar=?]
...
\end{lstlisting}
</source>
 
== Notes ==
 
<references />
 
== Voir aussi ==
 
* [[:Image:LaTeX vademecum.pdf|Version PDF du ''Vade mecum'']]
 
[[Catégorie:LaTeX (livre)|Vade mecum]]