这是对该问题的后续回答: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。
感谢您的有益评论!