Groupe d'Utilisateurs de Logiciels Libres
de Nancy et ses environs

MirabellugWiki

astucesLaTeX

PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 38.107.191.94
- Les commandes internes comportent souvent des @ dans leur nom, mais en temps normal le @ ne peut pas être utilisé dans un nom de commande, deux commandes contrôlent la possibilité ou non de mettre des @ dans les noms de commandes. \makeatletter l'autorise, \makeatother l'interdit. Souvent les astuces ont besoin de ces commandes.

- Un \input qui n'envoie pas une erreur si le fichier n'existe pas:

\makeatletter
\newcommand{\inputifexists}[1]
{
\@input{#1}
}
\makeatother

- Un label customisé:

\makeatletter
\newcommand{\setlabel}[2]
{
\def\@currentlabel{#2}
\label{#1}
}
\makeatother

- Construire dynamiquement un nom de commande avec \csname et \endcsname:

\newcommand{\call}[1]
{
\csname#1\endcsname
}

- Définir une nouvelle commande au nom improbable:

  • On définit d'abord \mynewcommand:

\newcommand{\mynewcommand}[1]
{
\expandafter\newcommand\expandafter{\csname#1\endcsname}
}

  • Vous remarquez peut-être que le corps de la commande n'est pas passé en paramètre. En fait \mynewcommand{toto}{ blabla } se réécrit en \newcommand{\toto}{ blabla }, qui est interprété normalement.

  • On peut utiliser \mynewcommand avec un nom de commande totalement impossible avec \newcommand:

\mynewcommand{1nom_p@s_possible}{ blabla }

  • Techniquement, l'astuce est que le "\1nom_p@s_possible" généré est considéré comme une seule entité, et n'est pas reparsé.

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]