Spec-Zone.ru › LaTeX

Имя задания

Запуск LaTeX создает множество файлов, включая основной вывод PDF (или DVI), а также другие. Эти файлы имеют имя так называемого имени задания. Наиболее распространённый случай также и самый простой, когда, например, команда pdflatex thesis создает thesis.pdf и также thesis.log и thesis.aux. В этом случае имя задания равно thesis.

В общем случае, LaTeX вызывается как latex-engine options argument, где latex-engine — это pdflatex, lualatex и т. д. (см. TeX движки). Если argument не начинается с обратной косой черты, как в случае с thesis, то TeX рассматривает его как имя файла, который необходимо считать в качестве основного документа. Этот файл называется корневым файлом (см. Разбиение входных данных и \input). Имя этого корневого файла без расширения .tex, если оно есть, является именем задания. Если argument начинается с обратной косой черты или TeX находится в интерактивном режиме, то он ожидает первую команду \input, а имя задания — это аргумент для \input.

Существуют ещё две возможности для имени задания. Его можно указать напрямую с помощью опции -jobname, как в pdflatex -jobname=myname (см. Входные данные командной строки для реального примера).

Последняя возможность — texput, который является конечной резервной опцией по умолчанию, если TeX не может определить другое имя. То есть, если не была указана опция -jobname, и компиляция завершается до того, как встречен любой входной файл, тогда файл журнала будет называться texput.log.

Особый случай этого заключается в том, что в версиях LaTeX (приблизительно) 2020 года и новее, имя задания также равно texput, если первая \input встречается в результате вызова либо \documentclass либо \RequirePackage. Так будет создан файл с именем texput.pdf:

pdflatex "\documentclass{minimal}\begin{document}Hello!\end{document}"

Однако этот специальный случай относится только к этим двум командам. Таким образом, с

pdflatex "\documentclass{article}\usepackage{lipsum}\input{thesis}"

файл вывода будет lipsum.pdf, так как \usepackage вызывает \input.

Внутри документа макрос \jobname расширяется до имени задания. (Если вы запускаете LaTeX на файле, имя которого содержит пробелы, строка, возвращаемая \jobname, содержит соответствующие начальные и конечные кавычки.) В расширении этого макроса все символы имеют категорию кода 12 (другие), за исключением пробелов, которые имеют категорию 10, включая буквы, которые обычно имеют категорию кода 11.

Из-за этой ситуации с категориями кода использование имени задания в условном операторе может стать сложным. Одним из решений является использование макроса \IfBeginWith из пакета xstring в его варианте со звёздочкой, который нечувствителен к категории кода. Например, в приведенном ниже тексте сноска «Including Respublica Bananensis Francorum.» присутствует только в том случае, если имя задания начинается с my-doc.

If a democracy is just a regime where citizens vote then
all banana republics \IfBeginWith*{\jobname}{my-doc}%
{\footnote{Including Respublica Bananensis Francorum.}}{} are
democracies.

Изменение значения \jobname внутри документа не изменяет имени файла вывода или файла журнала.

© 2007–2018 Karl Berry
Public Domain Software
http://latexref.xyz/Jobname.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API