LaTeX : pour générer de jolis documents

Anne LaTeX texte documentation

Je n’utilise plus beaucoup LaTeX directement, car je le génère la plupart du temps à partir de txt2tags Voilà néanmoins quelques astuces collectées au fil du temps, et d’autres qui restent utiles pour configurer les styles afin de produire de jolis documents.

Référence sur des énumérations hiérarchiques

\newcommand{\labelenumo}{\thesection.}

\renewcommand\theenumi{\arabic{enumi}}
\renewcommand\labelenumi{\labelenumo\theenumi.}
\renewcommand\p@enumi{\labelenumo}

même chose avec enumii, enumiii, enumiv.

On peut aussi mettre ça dans la définition d’un nouvel environnement si on souhaite garder la possibilité de faire appel à la version par défaut de enumerate.

Définir une macro avec l’argument d’une autre macro

L’objectif est de pourvoir faire \motcle{toto}, qui écrit toto, met toto dans l’indexe et définit la commande \toto

Solution 1

Une première solution :

\makeatletter
\newcommand{\motcle}[1]
      {\index{#1}{\textbf #1}\@namedef{#1}{\textit #1}}
\makeatother

Mais c’est du TeX, et donc pas très robuste. On pourra par exemple définir plusieurs fois le même mot clé, et \motcle{def} fait planter la compilation… En fait, la définition de \@namedef est :

\expandafter \def \csname #1\endcsname

Solution 2

Une autre solution :

\newcommand{\motcle}[1]{%
    \index{#1} \textbf{#1}%
    \expandafter \newcommand \expandafter *\csname #1\endcsname
      {\textit{#1}}%
  }

mais attention, elle définit la commande localement. Une amélioration est donc :

\newcommand*{\motcle}[1]{%
    \index{#1} \textbf{#1}%
    \expandafter \@ifdefinable \csname #1\endcsname {%
      \global \@namedef{#1}{\textit{#1}}%
    }%
  }

Pour commencer une énumération à un certain numéro

\begin{enumerate}[C1. ]
\setcounter{enumi}{10}
\item onzième élément ie. C11.
\end{enumerate}

Pour que le texte fasse le tour des images

Il faut utiliser le package picins.

Recherche récursive avec TEXINPUTS

Pour que LaTeX recherche les fichiers de style récursivement dans un répertoire, il faut juste terminer son nom par // dans la variable TEXINPUTS.

Par exemple :

export TEXINPUTS=.:$HOME/latex/inputs//:/usr/local/lib/hevea:

permet de chercher dans $HOME/latex/inputs et ses sous-répertoires.

Pour décrire des touches et des menus

Lors de la rédaction d’un manuel utilisateur pour un outil ayant une interface graphique, il est souvent utile de décrire des menus ou des raccourcis clavier. Le package menukeys propose plusieurs commandes pour faire ce genre de choses.

Voir aussi :