在我的文档中,我在页眉 (fancyhdr) 中使用了一个 SVG 文件,并且在标题页上独立使用了相同的 SVG。大致如下:
...
\fancyhead[C]{
\includesvg[]{images/my-svg-file}
}
\begin{document}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north)}]
\node[anchor=west]{some text before};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north)}]
\node[anchor=north]{\includesvg[]{images/my-svg-file}}; % <-- will not be rendered
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north)}]
\node[anchor=east]{some text after};
\end{tikzpicture}
\newpage
While the header is deactivated on the first page, this page has the correct header...
\newpage
... so does this page.
\end{document}
我希望能够使用批处理脚本编译该文档,这样我就可以复制/重命名输出 PDF,删除编译期间生成的所有文件(将它们称为 AUX 文件),也许还可以做一些其他的事情。
这是我的批处理文件,但我认为它不相关(因为如果我使用 MikTeX 编辑器进行编译也会发生同样的情况):
lualatex --shell-escape --enable-write18 my_document.tex
DEL *.log
DEL *.out
DEL *.aux
DEL *.table
DEL *.lua
DEL *.dat
现在,问题是,第一次出现的 SVG 图像(参见 tex 代码片段中的注释)没有被渲染,文本“之前的一些文本”和“之后的一些文本”也没有被渲染。
但仅当文档在 .tex 文件目录中不存在 AUX 文件的情况下编译时。我想了解为什么会发生这种情况... 编译不是每次都提供完全相同的结果吗? 先前编译中存在的文件如何影响后续编译?!
在我看来,这似乎是一个严重的缺陷,因为文档在两次编译之间可能会发生巨大变化。在我看来,编译完成后,AUX 文件应该被视为过时的,但我对 LaTeX 了解甚少。
我知道我有一些选择:
- 调用
luatex command twice
(测试过并且可以工作,但是很丑) - 将 PDF 从编译目录中复制出来,但这不是首选
相反,我想了解导致这个问题的原因。
答案1
正如@Ulrike 所说,您不应该删除任何生成的辅助文件,以便在多次运行后获取最终处理后的文档。事实上,包svg
使用辅助文件本身来确定使用的 Inkscape 版本。
尽管如此,如果要多次使用同一个 SVG 文件,我强烈建议您在添加后将其存储到框中,并将其用于标题。否则,SVG 文件将针对每个页面进行处理,没有任何好处,但会影响性能,尤其是在用于大型文档的标题时。
所以一个非常简单的方法就是
\documentclass{article}
\usepackage{iftex}
\iftutex
\usepackage{fontspec}
\else
\usepackage[T1]{fontenc}
\fi
\usepackage{svg}
\usepackage{tikz}
\usepackage[headings]{fancyhdr}
\pagestyle{headings}
\begin{document}
\newbox\fancyheadbox
\savebox\fancyheadbox{\rule{100pt}{5pt}}
%\savebox\fancyheadbox{\includesvg[]{images/my-svg-file}}
\fancyhead[C]{\usebox\fancyheadbox}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north)}]
\node[anchor=west]{some text before};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north)}]
\node[anchor=north]{\usebox\fancyheadbox};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north)}]
\node[anchor=east]{some text after};
\end{tikzpicture}
\newpage
While the header is deactivated on the first page, this page has the correct
header...
\newpage
... so does this page.
\end{document}