Programmation LaTeX/Programmer avec LaTeX
Un livre de Wikibooks.
|
Table des matières - Généralités - Premiers pas - Structure du document - Gestion de la bibliographie - Tableaux - Images - Éléments flottants et figures - Mise en forme du texte - Choix de la police - Mise en page - Mathématiques - Gestion des gros documents - Faire des présentations - Arts et loisirs - Dessiner avec LaTeX - Créer une extension ou une classe - Programmer avec LaTeX - Annexes - Vade mecum - Conversion - 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.
Sections |
[modifier] 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, …).
[modifier] Commandes
Les commandes personnelles sont des variables de base. Par exemple, on peut définir
\usepackage{graphicx} ... \newcommand{\echelle}{0.125} \includegraphics[scale=\echelle]{image1} \includegraphics[scale=\echelle]{image2} \includegraphics[scale=\echelle]{image3}
[modifier] 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 :
\newlength{\malongueur} \setlength{\malongueur}{1.5em}
crée une longueur \malongueur et lui donne la valeur d'un cadratin et demi. Autre exemple :
\usepackage{graphicx} ... \newlength{\largeur}{0.125} \setlength{\largeur}{10cm} \includegraphics[width=\largeur]{image1} \includegraphics[width=\largeur]{image2} \includegraphics[width=\largeur]{image3}
On peut assigner la longueur d'un objet, d'un mot, avec \settolength :
\newlength{\malongueur} \settolength{\malongueur}{Bonjour}
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 :
\hspace{\malongueur}
On peut ajouter une valeur à une longueur avec \addtolength :
\addtolength{\malongueur}{1em}
augmente la longueur \malongueur d'un cadratin.
Voir aussi Programmation LaTeX/Mise en forme du texte (avancé)#Déformation du texte.
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.
[modifier] Compteurs
Un compteur est une variable entière. Elle est créée par la commande \newcoutner et prend la valeur nulle. On peut lui attribuer une valeur autre avec \setcoutner :
\newcoutner{\moncompteur} \setcounter{\moncompteur}{4}
On peut afficher cette valeur avec la commende \value :
\value{\moncompteur}
On peut l'incrémenter avec la commande \addtocoutner :
\addtocoutner{\moncompteur}{2}
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, …
[modifier] Extensions spécifiques
[modifier] 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
\usepackage{calc} ... \newcounter{\cA} \newcounter{\cB} \newcounter{\cC} ... \setcounter{\cA}{\cB + \cC}
au lieu de
\newcounter{\cA} \newcounter{\cB} \newcounter{\cC} ... \setcounter{\cA}{\cB} \addtocounter{\cA}{\cC}
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.
[modifier] Extension multido
L'extension multido permet de faire une boucle itérative incrémentale.
[modifier] Extension ifthen
L'extension ifthen fournit des structures de contrôle : exécutions conditionnelles et boucles conditionnelles.
[modifier] 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.
[modifier] Voir aussi
[modifier] 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