一个 .tex 文件可输出多个 pdf 文件

一个 .tex 文件可输出多个 pdf 文件

以下 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)2019 年 11 月 28 日 12:59 进入扩展模式 \write18 已启用。%&-line 解析已启用。 **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 文件 (size 选项) ) \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)..执行。

运行系统(pdfLaTeX --jobname="output2" \gdef \conditionmacro{2}\input output)..执行。

运行系统(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 统计信息:1000 个 PDF 对象中有 0 个(最多 8388607 个)1000 个命名目标中有 0 个(最多 500000 个)10000 个 PDF 输出额外内存中有 1 个字(最多 10000000 个)

有人能帮帮我吗??

答案1

(Overleaf 支持团队的汤姆撰写。)

请注意,由于 Overleaf 的设置,虽然您可以pdflatex\immediate\write18或中运行\ShellEsc,但您必须小心文件名。也就是说,\jobname设置为output,但主文件保留其原始名称(main.tex在下面的示例中)。

因此,依赖\input\jobname确实是不可能的,我会避免使用\jobname。还请注意,pdflatex在 *nix 机器上 应该全部小写。最后但并非最不重要的是,访问运行生成的文件的唯一方法shell-escape是通过日志和输出文件(权重新编译)>其他日志和文件。您已拥有所有test?.pdftest?.auxtest?.log文件。

最小示例(在 Overleaf 中调用main.tex以使其工作):

\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}

相关内容