Le 13/05/2011 09:15, Manuel Pégourié-Gonnard a écrit :
Le 13/05/2011 02:08, Philipp Stephani a écrit :
or at
least rewritten so that \jobname is never expanded at every job:

I don't see any way to achieve that at the moment.

The following observation might help: \everyjob is put into the stream before whatever comes next. So it can know what's coming, either \input or anything else. If it is \input, then it just has to use one \expandafter before doing what it is supposed to do, and \jobname is correctly fixed.

For instance, try "lualatex \input test" with the following in the format (e.g. replaced lualatexquotejobname with that code):

\makeatletter
\long\def\getalook{%
  \immediate\write0{\jobname}%
  }
\everyjob{%
  \let\input\@@input
  \expandafter\getalook
  }
\makeatother

Then "test" is printed to the terminal, because the expansion of \jobname happens after \input. Remove \expandafter and you'll get "texput" instead. Here I've restored the primitive meaning of \input to make life simpler, but that'd work with LaTeX's \input and a subtler code.

Best,
Paul

Reply via email to