Можно ли получить значение --output-directory программным путем из кода LaTeX?

Можно ли получить значение --output-directory программным путем из кода LaTeX?

Сначала я пытаюсь сохранить файл, используя \VerbatimOut. Затем я использую этот файл в \ShellEscape, где мне нужно знать его абсолютный путь. Все работает хорошо, пока --output-directoryне изменяется и \VerbatimOutне сохраняет файл в местоположении, отличном от текущего каталога. Как мне получить значение --output-directory?

ps Я думаю, это невозможно, так как это то, чтоmintedговорит:

введите описание изображения здесь

решение1

В Linux вы можете выполнить поиск в списке запущенных в данный момент процессов с помощью команды ps aux. Для меня запись pdflatexwith --output-dirвыглядит так:

marijn     94217  0.0  0.2 119940 40784 pts/1    S+   18:22   0:00 pdflatex --shell-escape --output-dir=diffout chkoutdir.tex

Затем вы можете сопоставить шаблон для записи, содержащей latexи --output-dir, а затем записать то, что следует после знака равенства.

МВЭ:

 \documentclass{article}
\usepackage{fancyvrb}
\usepackage{shellesc}
\begin{document}
\begin{VerbatimOut}{verbfile.txt}
I write that. And that too.
\end{VerbatimOut}
\ShellEscape{bash chkdirscript.sh}
\end{document}

Сценарий:

if ps aux|pcregrep -q "latex.*[-]output-dir=[^ ]+ "; then
    OUTDIR=$(ps aux|pcregrep -o1 "latex.*[-]output-dir=([^ ]+) ")
    cat $OUTDIR/verbfile.txt
else
    cat verbfile.txt
fi

Компиляция документа LaTeX теперь будет отображать содержимое файла в терминале как в ситуациях, когда флаг --output-dirиспользуется, так и в ситуациях, когда он не используется.

Это не работает, если выходной каталог содержит пробелы. Это также может не работать, если указанный выходной каталог сам по себе является вызовом скрипта или переменной какого-либо рода. Более того, это может не работать, если запущено более одного экземпляра LaTeX. Поэтому я не рекомендую это для фактического использования, просто для проверки концепции.

Связанный контент