
Der folgende MWE-Code funktioniert einwandfrei in TexLive2018, aber nicht in „www.overleaf.com“ (einer Online-Latex-Plattform).
\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}
Das Rohprotokoll von „www.overleaf.com“ lautet wie folgt:
Dies ist pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (vorinstalliertes Format=pdflatex 2019.8.28) 28. Nov. 2019 12:59. Wechsel in den erweiterten Modus. \write18 aktiviert. %&-Zeilenanalyse aktiviert. **main.tex (/compile/main.tex LaTeX2e <2018-12-01> (/usr/local/texlive/2018/texmf-dist/tex/latex/base/article.cls Dokumentklasse: Artikel 2018/09/03 v1.4i Standard-LaTeX-Dokumentklasse (/usr/local/texlive/2018/texmf-dist/tex/latex/base/size10.clo Datei: size10.clo 2018/09/03 v1.4i Standard-LaTeX-Datei (Größenoption) ) \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).. .ausgeführt.
runsystem(pdfLaTeX --jobname="output2" \gdef \conditionmacro{2}\input output).. .ausgeführt.
runsystem(pdfLaTeX --jobname="output3" \gdef \conditionmacro{3}\input output).. .ausgeführt.
) Hier sehen Sie, wie viel von dem TeX-Speicher Sie verwendet haben: 198 Zeichenfolgen von 492616 2143 Zeichenfolgenzeichen von 6128979 59595 Wörter Speicher von 5000000 4200 Steuersequenzen mit mehreren Buchstaben von 15000+600000 3640 Wörter Schriftinformationen für 14 Schriftarten von 8000000 für 9000 1141 Silbentrennungsausnahmen von 8191 23i,1n,17p,112b,36s Stapelpositionen von 5000i,500n,10000p,200000b,80000s
Keine Ausgabeseiten. PDF-Statistik: 0 PDF-Objekte von 1000 (max. 8388607) 0 benannte Ziele von 1000 (max. 500000) 1 Wort zusätzlicher Speicher für PDF-Ausgabe von 10000 (max. 10000000)
KANN MIR BITTE JEMAND HELFEN??
Antwort1
(Tom vom Overleaf-Supportteam schreibt.)
Bitte beachten Sie, dass Sie aufgrund des Overleaf-Setups zwar pdflatex
innerhalb von \immediate\write18
oder ausführen können \ShellEsc
, aber bei den Dateinamen vorsichtig sein müssen. Das \jobname
ist nämlich auf eingestellt output
, aber die Hauptdatei behält ihren ursprünglichen Namen ( main.tex
im Beispiel unten).
Es ist also \input\jobname
wirklich unmöglich, sich auf zu verlassen, und ich würde jede Verwendung von vermeiden \jobname
. Beachten Sie auch, dass pdflatex
auf *nix-Maschinen alles klein geschrieben werden sollte. Und nicht zuletzt ist der einzige Weg, auf die von den Läufen generierten Dateien zuzugreifen, shell-escape
überProtokolle und Ausgabedateien(rechts vonNeu kompilieren) >Andere Protokolle und Dateien. Dort haben Sie alle test?.pdf
, test?.aux
und test?.log
Dateien.
Minimalbeispiel (muss main.tex
in Overleaf aufgerufen werden, damit dies funktioniert):
\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}