我正在使用 XeLaTeX 引擎上的包创建草稿标记tikz
。为了将此标记放在每一页上,我使用了包atbegshi
。请考虑以下示例:
\documentclass[a4paper]{article}
\usepackage{atbegshi}
\usepackage{tikz}
\AtBeginShipout{\AtBeginShipoutUpperLeft{
\begin{tikzpicture}[remember picture,overlay]
\node [rotate=54.85,scale=7,text opacity=0.1,black]
at (current page.center) {Draftmark};
\end{tikzpicture}
}}
\begin{document}
Page 1
\newpage
Page 2
\newpage
Page 3
\end{document}
使用 PDFLaTeX 引擎编译此示例时,生成的 PDF 会在每一页上创建一个标记(具有正确的不透明度)。在 XeLaTeX 上,此标记的不透明度在第一页上消失,但在不透明度保持不变的任何后续页面上不会消失。当使用其他软件包时,everypage
生成的 PDF 会按要求创建,但我的发布者不支持此软件包。
有人可以重现这种行为并提供解决方案吗?
答案1
注意力!在 LaTeX 2020-10-01 及更新版本中,如果第一页使用了不透明度,则可能需要一条附加规则来对钩子中的代码进行排序。请参阅https://tex.stackexchange.com/a/581404/2388
问题在于您的命令“超出”了发货框,而且太早了。因此不透明度设置未添加到第一页。atbegshi 的文档展示了如何将特殊内容添加到发货框的示例,但我认为更简单的方法是在第一页的某个地方使用不透明度:
\documentclass[a4paper]{article}
\usepackage{atbegshi}
\usepackage{tikz,lipsum}
\AtBeginShipout{\AtBeginShipoutUpperLeft
{
\begin{tikzpicture}[remember picture,overlay]
\node [rotate=54.85,scale=7,text opacity=0.1,black]
at (current page.center) {Draftmark};
\end{tikzpicture}
}}
\begin{document}
Page 1\tikz[overlay]\path[opacity=0.1](0,0);
\newpage
Page 2
\newpage
Page 3
\end{document}
使用下一个 Latex 版本(您现在可以用 xelatex-dev 进行测试),您可以使用新的shipout/foreground
钩子:
\documentclass[a4paper]{article}
\usepackage{tikz,lipsum}
\AddToHook{shipout/foreground}
{
\put(0,0)
{
\begin{tikzpicture}[remember picture,overlay]
\node [rotate=54.85,scale=7,text opacity=0.1,black]
at (current page.center) {Draftmark};
\end{tikzpicture}
}
}
\begin{document}
Page 1
\newpage
Page 2
\newpage
Page 3
\end{document}