[latexrefman] jobname

Karl Berry karl at freefriends.org
Wed Aug 18 23:36:23 CEST 2021

As far as I can see, it's impossible to reasonably specify the exact way
in which \jobname gets defined.  As I said before, you have to read
tex.web. I do not know all the rules myself.

The first \input (or use of \jobname) is not relevant. What counts is
when the log file is opened:

    tex.web line 10236:
    @ Initially |job_name=0|; it becomes nonzero as soon as the true name is known.
    We have |job_name=0| if and only if the `\.{log}' file has not been opened,
    except of course for a short time just after |job_name| has become nonzero.

There are quite a variety of possible scenarios involving code on the
command line, none of which have anything to do with LaTeX, as such.

This is why I suggested what I did: describe the normal case and point
to other, more deeply TeXnical (not LaTeXnical) manuals for the rest. If
you insist on doing something different, well, good luck. -k

P.S. If you use \tracingall instead of \loggingall, the expansion of
\documentclass appears on the terminal, but not in the .log file.
I ran this command, redirecting the (voluminous) terminal output:
$ pdflatex '\tracingall\documentclass{article}\input' body </dev/null >&/tmp/l

I believe this is precisely the issue at hand: TeX delays defining the
log file name, exactly so that \jobname does not have to get defined
"prematurely" (in Knuth's view).

More information about the latexrefman mailing list.