我正在处理一个 .tex 文件,它基本上会生成一个完全程序化的 pdf。输出是一个 100 页的 pdf,其中每一页的背景都不同。我手工制作了所有这些背景,然后 LaTeX 会逐页调出它们。
通常,为了在处理文档时加快导出速度,我会将页面数减少到 1 页或几页。奇怪的是,当我决定查看 100 页文件的结果时,通常我必须导出两次,因为第一次导出时,我正在处理的页面之后的每个“新页面”的背景都错位了。
例如,如果我正在处理 4 页,然后决定导出 20 页的 pdf,则第 5 到第 20 页的背景如下:
左侧是正常页面,右侧是背景位置不对的页面。请注意,背景始终处于该位置,并非随机。
当我第二次导出文档时,背景通常会出现在正确的位置(因为它已经有那么多页了)。
这是一个给我带来这个问题的 MWE。当然,如果没有实际的背景文件,您将很难尝试,但您仍然可能看到我做错了什么:
\documentclass[11pt, a4paper]{article}
\usepackage{background}
\usepackage{lipsum}
\newcommand{\sfondo}[1]{
\backgroundsetup{angle=0, opacity=0.5, scale=1, contents=\includegraphics{./../../sfondi/sfondo#1.png}}
}
\begin{document}
\foreach \pagenum in {1,...,100}{
\sfondo{\pagenum}
\lipsum[1]
\newpage
}
\end{document}
导出两次不会有问题——到目前为止我一直都是这样做的。真正的问题是原始 .tex 文档开始包含大量操作,这使得导出非常繁重。在同一台机器上,在 Linux 上需要大约 1 分钟,在 Windows 10 上需要几分钟。这种繁重不知何故弄乱了背景,因为现在,如果我导出 100 页的 pdf,它会出现许多错位的背景每次。因此,双重导出技巧不再有效。事实上,使用 TeXstudio(如果生成的 pdf 需要第二次运行,它具有一些内置功能,可以导出两次)编译该 .tex 文件会导致无限循环,其中 pdf 会无限次地一次又一次地导出 - 我甚至不能让它运行,因为每次我都被问到是否要查看日志,因为它超过 2MB。
所以问题是:在进行大规模编译时,背景会以这种方式出现,是否存在任何实际原因,有没有办法防止这种情况发生?
答案1
我找到了一个临时的解决办法,就是把background
包装收起来,然后改用tikz
。
\documentclass[11pt, a4paper]{article}
\usepackage{tikz}
\usepackage{lipsum}
\newcommand{\sfondo}[1]{
\begin{tikzpicture}[remember picture,overlay,opacity=0.5]
% draw image
\node[inner sep=0] at (current page.center)
{\includegraphics[width=\paperwidth,height=\paperheight]{./sfondi/sfondo#1.png}};
\end{tikzpicture}
}
\begin{document}
\foreach \pagenum in {1,...,100}{
\sfondo{\pagenum}
\lipsum[1]
\newpage
}
\end{document}
如果我更改页数,仍然需要执行几次,但至少第二次它总是在正确的位置打印背景。