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.
This question on the Web: http://latex.net.br/faq/FAQ-compjobnam.html
Do you have any question? Ask on: latex.net.br - we love qood questions!