# LaTeX/Programmer avec LaTeX

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
Il est possible de mettre du code TeX dans un fichier LaTeX ; le langage TeX contient des structures de programmation (voir Programmation TeX). Mais il est aussi possible de programmer avec du LaTeX, moyennant l'utilisation d'extensions spécifiques.
Cela permet de faire des commandes personnelles (macros) à comportement « variable », par exemple en calculant la largeur et la hauteur du texte passé en paramètre.

## Variables

Il existe trois manières de créer des variables en LaTeX : avec des commandes, des longueurs ou des compteurs. Dans tous les cas, le nom de la variable suit le formalisme des commandes personnelles : il commence par une contre-oblique et ne doit contenir que des lettres.
L'avantage des longueurs et des compteurs est qu'ils ont des commandes dédiées pour les manipuler (définition, addition, utilisation, …).

### Commandes

Les commandes personnelles sont des variables de base. Par exemple, on peut définir

### Longueurs

Une longueur doit contenir un nombre, entier ou décimal (le séparateur étant le point) et une unité accolée (cf. Éléments de base > Espaces et changements de ligne). La déclaration d'une longueur se fait avec la commande \newlength, et l'assignation de la valeur se fait avec \setlength, par exemple :
crée une longueur \malongueur et lui donne la valeur d'un cadratin et demi. Autre exemple :
On peut assigner la longueur d'un objet, d'un mot, avec \settowidth :
la longueur \malongueur aura pour valeur la taille du mot « Bonjour » dans la police courante. La longueur s'utilise ensuite à la place des valeurs dans les commandes, par exemple :
On peut ajouter une valeur à une longueur avec \addtolength :
augmente la longueur \malongueur d'un cadratin.
Voir aussi LaTeX/Mise en forme du texte (avancé).
LaTeX possède des longueurs prédéfinies qui ajustent la mise en forme du texte. Pour ce qui est des marges et de l'interligne, on préfèrera faire confiance aux extensions dédiées geometry (cf. Mise en page), fancyhdr et setspace (cf. Mise en forme du texte (avancé) > Espacement interligne). On peut avoir la liste des longueurs de mise en page avec l'extension [francais]{layout}, qui définit une commande \layout affichant une page avec la définition des longueurs.
Voici quelques longueurs utiles :
* paragraphes :
** \parindent : alinéa (retrait de paragraphe),
** \parskip : espacement entre les paragraphes,
** \baselineskip : interligne ;
* tableaux :
** \tabcolsep : moitié de la longueur séparant deux colonnes,
** \arrayrulewidth : largeur des filets,
** \doublerulesep : espacement entre deux filets pour un filet double ;
* cadres :
** \fboxrule : épaisseur du filet,
** \fboxsep : espacement entre le cadre et le contenu.

### Compteurs

Un compteur est une variable entière. Elle est créée par la commande \newcounter et prend la valeur nulle. On peut lui attribuer une valeur autre avec \setcounter :
On peut afficher cette valeur avec la commande \the:
On peut l'incrémenter avec la commande \addtocounter :
ajoute 2 au compteur moncompteur. Les compteurs sont utilisés par LaTeX pour les listes ordonnées et les numérotations de chapitres, sections, sous-sections, …

## Extensions spécifiques
### Extension calc

L'extension calc permet d'effectuer des calculs arithmétiques sur les compteurs et les longueurs (par défaut, on ne peut que multiplier des valeurs dans LaTeX). Par exemple, pour ajouter deux compteurs « cA = cB + cC » on peut écrire
au lieu de
Par ailleurs, l'extension permet aussi de multiplier et de diviser avec les symboles standards * et /. Il existe toutefois quelques restrictions ; en particulier, on ne peut — évidemment — pas ajouter un compteur avec une longueur, et un compteur contient toujours un nombre entier (si le résultat est décimal, il est tronqué). Par ailleurs, si l'on veut multiplier une longueur par un nombre, il faut mettre la longueur en premier : 1em*2.

### Extension multido

L'extension multido permet de faire une boucle itérative incrémentale.

#### Exemple
### Extension ifthen

L'extension ifthen fournit des structures de contrôle : exécutions conditionnelles et boucles conditionnelles.

## Mettre du code interprété par le visualiseur

La commande \special{code} permet de mettre du code qui sera écrit tel quel dans le fichier DVI. Il sera ainsi interprété et exécuté par le visualiseur DVI.
La commande \pdfcatalog{code} a le même rôle pour les fichiers PDF.

## Voir aussi
### Bibliographie

* D. Bitouzé, J.-C. Charpentier, LaTeX — Synthèse de cours & exercices, éd. Pearson Education, (ISBN 2-7440-7187-0), p. 264–270, 273, 276–278
* C. Rolland, LaTeX par la pratique, éd. O'Reilly (1999), (ISBN 2-84177-073-7), p. 141–148, 341–342, 354–355