LaTeX/Créer une extension ou une classe
Nous avons vu précédemment que l'on pouvait placer le préambule (appels d'extensions et commandes personnelles) dans un fichier codice_1 et appeler celui-ci avec la commande codice_2, placée entre la déclaration de classe et le codice_3.
Vous avez également la possibilité de créer votre propre classe ou votre propre extension.
Dans un premier temps, on peut voir une extension ou une classe comme un fichier de préambule, mais le potentiel est beaucoup plus important.
Extension personnelle.
Une extension "(package)" est un fichier texte dont le nom se termine par codice_4. Si son contenu est similaire à un fichier codice_1, il existe quelques différences :
Si l'on veut appeler une extension au sein de cette extension, on n'utilise pas codice_10 mais codice_11.
Voici un exemple d'extension élémentaire reprenant simplement le préambule général des fichiers codice_1 :
\ProvidesPackage{monextension}[2007/09/19 Extension personnelle, V1.0]
% extensions
% 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
Le fichier codice_1 sera alors typiquement
Classe personnelle.
Une classe "(class)" est un fichier texte dont le nom se termine par codice_15. Si son contenu est similaire à un fichier codice_1, il existe quelques différences :
À moins de tout construire de zéro, on fait appel à une classe préexistante, à laquelle on va ajouter des éléments ou définir des paramètres. On utilise pour cela la commande codice_21, qui s'utilise comme codice_22 d'un fichier codice_1.
Comme pour les extensions personnelles, si l'on veut appeler une extension au sein de cette classe, on n'utilise pas codice_10 mais codice_11.
Voici un exemple de classe élémentaire reprenant simplement le préambule général des fichiers codice_1 :
\ProvidesClass{maclasse}[2007/09/19 Classe personnelle, V1.0]
% classe de base
% extensions
% 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
Le fichier codice_1 sera alors typiquement
Gestion des options.
On peut passer des options à une classe ou à une extension.
Options s'appliquant aux extensions appelées.
La classe ou l'extension personnelle peut faire appel à d'autres extensions. Dans ce cas-là, les options peuvent être définies « en dur » comme nous l'avons fait ci-dessus, mais les options peuvent aussi être transmises lors de l'appel de l'extension ou de la classe personnelle.
Par exemple, si l'on veut laisser le choix de la langue, on utilise dans le fichier codice_15 ou codice_4
le fichier codice_1 contiendra alors
ou bien
Options s'appliquant à la classe appelée.
De même, lorsque l'on appelle une classe standard dans une classe personnelle, on peut laisser le choix des options de classe dans le fichier codice_1, par exemple, pour le fichier codice_15 :
et pour le fichier codice_1 :
Options personnelles.
Vous pouvez aussi définir vos propres options. Il suffit pour cela d'utiliser, dans le fichier codice_4 ou codice_15 :
\ProcessOptions
Par exemple, dans le fichier codice_4 ou codice_15
et ensuite avoir dans le fichier codice_1
ou bien
Les commandes codice_41 et codice_42 permettent de passer des options à une extension ou à une classe :
par exemple
\DeclareOption{petitemarge}{%
\DeclareOption{grandemarge}{%
On peut placer les commandes dans un fichier à part, portant l'extension codice_43, et donc utiliser

Photographie/Fabricants/Fujifilm/Fujifilm FinePix F50fd

Photographie/Fabricants/Olympus/Olympus Zuiko Digital ED 70-300 mm f/4,0-5,6

LaTeX/Programmer avec LaTeX
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 codice_1, et l'assignation de la valeur se fait avec codice_2, par exemple :
crée une longueur codice_3 et lui donne la valeur d'un cadratin et demi. Autre exemple :
On peut assigner la longueur d'un objet, d'un mot, avec codice_4 :
la longueur codice_3 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 codice_6 :
augmente la longueur codice_3 d'un cadratin.
Voir aussi "../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 codice_8 (cf. "Mise en page"), codice_9 et codice_10 (cf. "Mise en forme du texte (avancé) > Espacement interligne"). On peut avoir la liste des longueurs de mise en page avec l'extension codice_11, qui définit une commande codice_12 affichant une page avec la définition des longueurs.
Voici quelques longueurs utiles :
Compteurs.
Un compteur est une variable entière. Elle est créée par la commande codice_21 et prend la valeur nulle. On peut lui attribuer une valeur autre avec codice_22 :
On peut afficher cette valeur avec la commande codice_23:
\themoncompteur
On peut l'incrémenter avec la commande codice_24 :
ajoute 2 au compteur codice_25. 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 codice_26.
L'extension codice_26 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 codice_28 et codice_29. 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 : codice_30.
Extension codice_31.
L'extension codice_31 permet de faire une boucle itérative incrémentale.
Exemple.
\multido{\i=1+1}{50}{%
Extension codice_33.
L'extension codice_33 fournit des structures de contrôle : exécutions conditionnelles et boucles conditionnelles.
Mettre du code interprété par le visualiseur.
La commande codice_35 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 codice_36 a le même rôle pour les fichiers PDF.

Livre de cuisine/Socca et spécialités similaires