[Tex/LaTex] the variable that contains the source file name

auxiliary-filesexternal filesjobname

I am writing a package that saves information to an external file. I would like to name that file according to the source one; something like
foo.tex -> foo.bar
But I cannot find any variable that contains 'foo'. I am pretty sure that there must be one because the table of contents is saved to foo.toc.

Any pointers?

Best Answer

You want the macro \jobname. This isn't quite the filename; to quote from the TeX FAQ:

TeX retains what it considers the name of the job, only, in the primitive \jobname; this is the name of the file first handed to TeX, stripped of its directory name and of any extension (such as .tex). If no file was passed (i.e., you're using TeX interactively), \jobname has the value texput (the name that's given to .log files in this case).

So if you're processing foo.tex, \jobname will be foo (which, of course, is probably what you want anyway).