
Следующий код 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}