Page modifiée le 16/04/2019

Macros pour (La)TeX

Documentations sur la programmation en (La)TeX

 

Ajouter des macros

Les macros se trouvent en général dans des fichiers avec une extension .sty (exemple graphics.sty). Pour pouvoir utiliser ces macros, il faut que LaTeX puisse les retrouver.

Sous Linux
Il y a (au moins) quatre méthodes.

La dernière méthode est ma préférée. Elle permet de modifier simplement vos fichiers de macros sans avoir à passer en root à chaque fois.

Il ne reste plus ensuite qu'à ajouter

\usepackage{machin.sty}

dans le préambule de votre document (entre \documentclass[...]{...} et \begin{document}).
Remarque : pour ceux qui choisissent la seconde méthode, sachez que si vous vous logguez à l'aide de xdm (ou kdm, etc. : un login graphique après démarrage de Linux), le fichier .bash_profile ne sera pas lu. Placez plutôt vos instructions dans le fichier .bashrc (toujours placé dans votre dossier personnel).
Sous Dos / Windows
La procédure est analogue : placer le fichier de macros soit dans \texmf\tex\latex\macros, soit dans \localtexmf\tex\latex\macros puis exécuter

mktexlsr

Programmer en TeX et en LaTeX

Pour définir une nouvelle commande en LaTeX :

\newcommand{\macommande}[nbparam]{instructions}

Il y a vérification que la macro \macommande n'existe pas encore. Dans le doute, vous pouvez utiliser \providecommand.
Pour définir une nouvelle commande en TeX :

\def\macommande#nbparam{instructions}

Ecrire des macros grâce à Python

L'écriture de macros en (La)TeX est très complexe, une alternative est d'utiliser Python.

Ainsi, par exemple, on peut aisément définir une commande qui retourne une chaîne de caractères :

\newcommand{\retourne}[1]{\py{"#1"[::-1]}}
\retourne{'Bonjour tout le monde !'}

 

Pour en savoir plus, consultez notre page sur Pythontex.

 

Des macros pour les profs

Nous avons crée des commandes spécifiques pour les profs de maths de lycée. Pour en savoir plus.

 

Quelques macros TeX permettant de faire quelques petites choses techniques

Les macros suivantes montrent quelques possibilités du langage TeX dans la gestion des arguments. Elles ne sont sans doute pas optimales mais elles pourront peut être servir à des personnes bloqués dans un problème d'arguments.

\def\modif #1{\edef #1{#1+un}}

\def\X{bidule}
X vaut "\X"
\modif\X
X vaut "\X"

\def\increm#1{%
\edef\machin{#1.0 }% pour gérer le cas où #1 est entier
\toque={#1} % contient la "variable paramètre"
\def\sousincrem ##1.##2 {%
\def\soussousincrem ####1.####2.####3 {% le ####3 est forcément zéro
                       \setcounter{nb}{####1+1}
                       \expandafter\def\the\toque{\thenb.####2}}
\def\truc{##2}
       \ifx\truc\zero \setcounter{nb}{##1+1}
                      \expandafter\def\the\toque{\thenb}
          \else \expandafter\soussousincrem\machin
        \fi
}
\expandafter\sousincrem\machin %
}

\def\X{-5.33}
\increm{\X}
X=\X
\def\Y{-7}
\increm{\Y}
Y=\Y

\def\tronk#1{%
\edef\machin{#1.0 }% pour gérer le cas où X est entier
\toque={#1}
\def\soustronk ##1.##2 {%
\def\soussoustronk ####1.####2.####3 {% le ####3 est forcément zéro
                       \expandafter\def\the\toque{####1}}
\def\truc{##2}
       \ifx\truc\zero \expandafter\def\the\toque{##1}
          \else \expandafter\soussoustronk\machin
        \fi
}
\expandafter\soustronk\machin
}