文件过大导致背景位置错误

文件过大导致背景位置错误

我正在处理一个 .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}

如果我更改页数,仍然需要执行几次,但至少第二次它总是在正确的位置打印背景。

相关内容