Comparar o nome do “job”

O token \jobname divertidamente produz uma sequência de caracteres cujo código de categoria é 12 (‘outros’), independentemente de quais sejam os caracteres. Como a comparação de uma macro com o conteúdo de outra macro (usando \ifx, em algum lugar) é inevitável, é necessário que se crie uma macro cuja expansão pareça igual à expansão de \jobname. Achamos que podemos fazer isso com \meaning, se removermos o prefixo do “comando \show command”.

O comando completo se parece com:

\def\StripPrefix#1>{}
\def\jobis#1{FF\fi
  \def\predicate{#1}%
  \edef\predicate{\expandafter\StripPrefix\meaning\predicate}%
  \edef\job{\jobname}%
  \ifx\job\predicate
}
E ele é usado como:
\if\jobis{mainfile}%
  \message{YES}%
\else
  \message{NO}%
\fi
Note que o comando \StripPrefix não precisa ser definido se você estiver usando LaTeX — já existe um comando interno \strip@prefix que pode ser usado.


Do you have any question? Ask on: latex.net.br - we love qood questions!