
Сначала я пытаюсь сохранить файл, используя \VerbatimOut
. Затем я использую этот файл в \ShellEscape
, где мне нужно знать его абсолютный путь. Все работает хорошо, пока --output-directory
не изменяется и \VerbatimOut
не сохраняет файл в местоположении, отличном от текущего каталога. Как мне получить значение --output-directory
?
ps Я думаю, это невозможно, так как это то, чтоminted
говорит:
решение1
В Linux вы можете выполнить поиск в списке запущенных в данный момент процессов с помощью команды ps aux
. Для меня запись pdflatex
with --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. Поэтому я не рекомендую это для фактического использования, просто для проверки концепции.