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 :

% !TEX noedit
\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 :

% !TEX noedit
\if\jobis{mainfile}%
  \message{YES}%
\else
  \message{NO}%
\fi

Note

La commande \StripPrefix n’a pas besoin d’être définie si vous utilisez  : il existe déjà une commande interne \strip@prefix que vous pouvez utiliser.


Sources :