Comment comparer \jobname à quelque chose?

La commande \jobname, qui donne le nom de la tâche en cours (job en anglais) basé sur le nom du fichier, produit une séquence de caractères dont le catcode est 12 (« autre »), indépendamment de la nature réelle des caractères.

Comme une comparaison d'une commande ne peut se faire qu'avec le contenu d'une autre commande (utilisant \ifx quelque part), pour comparer le \jobname à quelque chose, il faut créer une commande dont le développement ressemble à celle de \jobname. Ceci peut s'obtenir avec \meaning, en retirant le préfixe ajouté par \show.

Voici le code complet de la commande :

\def\StripPrefix#1>{}
\def\jobis#1{FF\fi
  \def\predicate{#1}%
  \edef\predicate{\expandafter\StripPrefix\meaning\predicate}%
  \edef\job{\jobname}%
  \ifx\job\predicate
}

qui s'utilise ainsi :

\if\jobis{mainfile}%
  \message{YES}%
\else
  \message{NO}%
\fi
La commande \StripPrefix n'a pas besoin d'être définie si vous utilisez \LaTeX{} : il existe déjà une commande interne \strip@prefix que vous pouvez utiliser.

Sources:

2_programmation/macros/comparer_une_chaine_a_jobname.txt · Dernière modification : 2021/07/12 06:54 de yannick.tanguy
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0