Comparer "\jobname" à quelque chose

$\Reponse$ La commande \jobname, qui donne le nom du job en cours, 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 on ne peut comparer une macro qu'avec le contenu d'une autre macro (utilisant \ifx quelque part), si on veut comparer le \jobname à quelque chose, on doit créer une macro dont l'expansion ressemble à celle de \jobname. On peut le faire avec \meaning, si on retire 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_composition/macros/comparer_une_chaine_a_jobname.txt · Dernière modification: 2021/01/07 11:24 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0