Несколько выходных файлов PDF из одного файла .tex

Несколько выходных файлов PDF из одного файла .tex

Следующий код MWE отлично работает в TexLive2018, но не работает в «www.overleaf.com» (онлайн-платформа Latex).

\documentclass{article}

\ifx\conditionmacro\undefined
\immediate\write18{%
    pdfLaTeX --jobname="\jobname1"
    \gdef\string\conditionmacro{1}\string\input\space\jobname
}%
\immediate\write18{%
    pdfLaTeX --jobname="\jobname2"
    \gdef\string\conditionmacro{2}\string\input\space\jobname
}%
\immediate\write18{%
    pdfLaTeX --jobname="\jobname3"
    \gdef\string\conditionmacro{3}\string\input\space\jobname
}%
\expandafter\stop
\fi

\begin{document}
    \ifnum\conditionmacro=1 
    Condition is 1
    \fi
    \ifnum\conditionmacro=2 
    Condition is 2
    \fi
    \ifnum\conditionmacro=3 
    Condition is 3
    \fi
    \verb|\conditionmacro| is \texttt{\meaning\conditionmacro}.
\end{document}

Необработанный журнал с сайта «www.overleaf.com» выглядит следующим образом:

Это pdfTeX, версия 3.14159265-2.6-1.40.19 (TeX Live 2018) (предварительно загруженный формат=pdflatex 2019.8.28) 28 НОЯБРЯ 2019 12:59 вход в расширенный режим \write18 включен. Включен анализ %&-строки. **main.tex (/compile/main.tex LaTeX2e <2018-12-01> (/usr/local/texlive/2018/texmf-dist/tex/latex/base/article.cls Класс документа: article 2018/09/03 v1.4i Стандартный класс документа LaTeX (/usr/local/texlive/2018/texmf-dist/tex/latex/base/size10.clo Файл: size10.clo 2018/09/03 v1.4i Стандартный файл LaTeX (опция размера)) \c@part=\count80 \c@section=\count81 \c@subsection=\count82 \c@subsubsection=\count83 \c@paragraph=\count84 \c@subparagraph=\count85 \c@figure=\count86 \c@table=\count87 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) runsystem(pdfLaTeX --jobname="output1" \gdef \conditionmacro{1}\input output).. .выполнено.

runsystem(pdfLaTeX --jobname="output2" \gdef \conditionmacro{2}\input output).. .выполнено.

runsystem(pdfLaTeX --jobname="output3" \gdef \conditionmacro{3}\input output).. .выполнено.

) Вот сколько памяти TeX вы использовали: 198 строк из 492616 2143 строковых символов из 6128979 59595 слов памяти из 5000000 4200 многобуквенных управляющих последовательностей из 15000+600000 3640 слов информации о шрифтах для 14 шрифтов из 8000000 для 9000 1141 исключение переносов из 8191 23i,1n,17p,112b,36s позиции стека из 5000i,500n,10000p,200000b,80000s

Нет страниц вывода. Статистика PDF: 0 объектов PDF из 1000 (макс. 8388607) 0 именованных назначений из 1000 (макс. 500000) 1 слово дополнительной памяти для вывода PDF из 10000 (макс. 10000000)

МОЖЕТ КТО-НИБУДЬ МНЕ ПОМОЧЬ?

решение1

(Автор: Том из команды поддержки Overleaf.)

Обратите внимание, что из-за настройки Overleaf, хотя вы можете работать pdflatexв \immediate\write18или \ShellEsc, вам следует быть осторожными с именами файлов. А именно, \jobnameустановлено значение output, но основной файл сохраняет свое оригинальное имя ( main.texв примере ниже).

Так что полагаться на \input\jobnameдействительно невозможно, и я бы избегал любого использования \jobname. Также обратите внимание, что pdflatexэто должно быть все в нижнем регистре на машинах *nix. И последнее, но не менее важное: единственный способ получить доступ к файлам, созданным запусками, shell-escape— черезЖурналы и выходные файлы(право наПерекомпилировать) >Другие журналы и файлы. Вот вам все файлы test?.pdf, test?.auxи test?.log.

Минимальный пример (который нужно вызвать main.texв Overleaf, чтобы это заработало):

\documentclass{article}

\usepackage[margin=5pt]{geometry}

\ifx\conditionmacro\undefined
\gdef\conditionmacro{0}
\immediate\write18{
    pdflatex --jobname="test1" "\gdef\string\conditionmacro{1}\string\input\space main"
}
\immediate\write18{
    pdflatex --jobname="test2" "\gdef\string\conditionmacro{2}\string\input\space main"
}
\immediate\write18{
    pdflatex --jobname="test3" "\gdef\string\conditionmacro{3}\string\input\space main"
}
\fi

\usepackage{pdfpages}

\begin{document}
    \centering\fontsize{40}{45}\bfseries
    JOBNAME = \jobname\par
    \ifcase\conditionmacro\relax
        % = 0
        \fbox{\includegraphics[width=9cm]{test1.pdf}}
        \fbox{\includegraphics[width=9cm]{test2.pdf}}
        \fbox{\includegraphics[width=9cm]{test3.pdf}}
    \or
        % = 1
        Condition is 1
    \or
        % = 2
        Condition is 2
    \or
        % = 3
        Condition is 3
    \fi
%    \verb|\conditionmacro| is \texttt{\meaning\conditionmacro}.
\end{document}

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