将最终的 PDF 复制到新目录

将最终的 PDF 复制到新目录

我希望在编译最终 PDF 后自动在新目录中复制一份。

作为我的工作流程的一部分,每篇文章(我的论文)(以及相关图片)都存储在自己的目录中。然后我将每个文件导入主文件作为合并论文。

我已经对 tex 文件本身执行了此操作(每天备份)。

我在每个文章 tex 文件的开头都有以下代码(基本上将现有的 tex 文件复制到备份目录并用今天的日期重命名,这样我就有了 tex 文件的历史记录):

\immediate\write18{mkdir \currfiledir backup}
\immediate\write18{cp '\currfiledir \currfilename' '\currfiledir backup/\currfilebase\string_\the\year-\the\month-\the\day .\currfileext'}

我想要类似的代码,将最终的 PDF 文件从主目录复制到每篇文章的目录中。类似这样(但这不起作用)。

\immediate\write18{cp \jobname.pdf  \currfiledir\currfilebase.pdf}

提前致谢

答案1

相关(至少我认为):如何正确地‘制作’乳胶项目?使用 makefile 创建 tar 存档

基本上,我会创建一个 Makefile,用来latexmk处理文档构建,并tar进行定期备份(任何版本控制系统都比更好tar,但这个实际上没有学习曲线)。

生成文件:

.PHONY:MyDoc.pdf 全部干净

全部:MyDoc.pdf

MyDoc.pdf: MyDoc.tex
        latexmk -pdf -pdflatex="pdflatex -interactive=nonstopmode" -use-make MyDoc.tex

干净的:
        latexmk-CA

备份:
        tar -czf ../MyDocs-`date + %Y.%m.%d`.tar.gz 。

答案2

本质上这个问题是TeX 可以对其生成的 PDF 进行后期处理吗?

解决方案改编自https://tex.stackexchange.com/a/648388/250119,使用wrapup_run钩子。仅限 LuaLaTeX。

%! TEX program = lualatex
\documentclass{article}
\usepackage[abspath]{currfile}
\usepackage{luacode}
\begin{document}

123

\begin{luacode*}
luatexbase.add_to_callback("wrapup_run", function()
    local output_file=token.get_macro("currfiledir")..token.get_macro("currfilebase")..".pdf"
    print("======== Copying finalized PDF to "..output_file)
    local outfile=io.open(output_file, "wb")
    outfile:write(io.open(tex.jobname..".pdf", "rb"):read("a"))
    outfile:close()
end, "final callback to copy pdf file")
\end{luacode*}

\end{document}

用 编译lualatex -recorder path/to/file.tex

相关内容