带条件的 Overleaf 动态 pdf 文件名(已更新)

带条件的 Overleaf 动态 pdf 文件名(已更新)

这是对该问题的后续回答:Overleaf 动态 PDF 文件名。问题和答案似乎相关,但我不知道如何将它们应用到我的情况中。

暗示:根据所述解决方案的需要,ShellEscape 可以在 Overleaf 中工作(链接的解决方案是专门针对 Overleaf 编写的),但是当我尝试使用条件实现它时,编译会崩溃或超时,如下所示。

我使用 Overleaf 处理所有 LaTeX。创建作业时,我使用 \newif 将密钥嵌入到与作业相同的文档中。在编辑和下载 PDF 时,注释掉 \keytrue 即可在密钥和作业之间切换,这很容易。令人讨厌的是,我最终得到的文件名为 Math_Homework.pdf 和 Math_Homework (1).pdf。然后我必须找出哪一个是密钥,并在计算机的文档管理界面中手动重命名它。

我真的希望有一种方法可以让密钥和作业使用不同的文件名。一个延伸目标是同时生成密钥和作业并使用适当的名称。理想情况下,我的 PDF 会自动生成类似 Math_Homework.PDF 和 Math_Homework_KEY.PDF 的文件

最小非工作示例:main.tex、thisif.tex 和 print.tex

main.tex(可自行编译)

\documentclass{article}
\include{thisif}
\makeatletter %allows you to call \@title

\title{Math Homework \ifkey KEY \fi}
    
\begin{document}

\begin{center}
\begin{Large}
\@title
\end{Large}
\end{center}

Directions:

\ifkey Answer \else Question \fi


\end{document}

thisif.tex(只是一个标题,以便其他两个文件都看到相同的条件)

\newif\ifkey
\keytrue % comment this out to view student version

print.tex(当我尝试编译它时超时或崩溃)

\documentclass{article}
\include{thisif}
\usepackage{shellesc,pdfpages}
\ShellEscape{latexmk -pdf main}
\begin{document}

\ifkey \includepdf[pages=-]{mwe-KEY.pdf} \else \includepdf[pages=-]{mwe.PDF} \fi
\end{document}

答案1

根据@user202729 的评论,我更改了 print.tex 来解决问题。

打印.tex:

\documentclass{article}
\include{thisif}
\usepackage{shellesc,pdfpages}

\ifkey \ShellEscape{latexmk -pdf -jobname=mwe-KEY main.tex} \else \ShellEscape{latexmk -pdf -jobname=mwe main.tex} \fi


\begin{document}

\ifkey \includepdf[pages=-]{mwe-KEY.pdf} \else \includepdf[pages=-]{mwe.pdf} \fi


\end{document}

现在,如果我编译两次(一次使用 thisif.tex 中的 \keytrue,一次将其注释掉),Overleaf 会缓存两个 PDF,并且我能够以所需的名称下载每个 PDF。

感谢您的有益评论!

相关内容