我快要疯了,想找出可能相关的两个问题。
- 第一个事实是,在第一页上“似乎”调用了两次
\AtBeginShipout
from ,因为与 结合使用时绘图上会丢失不透明度。atbegshi
tikz
pdflscape
- 第二个是我使用 Adobe Acrobat 8 和有时使用 Adobe Reader X 打开 PDF 时收到的错误消息(我的最小版本的代码似乎可以与 Reader 一起使用,但我的真实版本肯定存在两者的问题。)
代码
我使用 进行编译xelatex
。正如评论中提到的,这似乎对输出产生了影响。
\documentclass{article}
\usepackage{fontspec}
\usepackage{pdflscape} % Commenting out this package results in TikZ drawing the its overlay once on the first page as it should.
\usepackage{etoolbox}
\usepackage{xstring}
\usepackage{xparse}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc,positioning}
\usepackage{atbegshi}
\newcommand\qikofficialbuild{false}
\NewDocumentCommand{\qikdraftpage}{ }{%
\tikz[overlay,remember picture]{%
\draw [red,line width=2pt,opacity=0.1,text=gray,font=\bfseries] ([xshift=-4mm]current page.south west) -- ([xshift=-4mm]current page.north east) node [pos=.75,below, sloped] {UNOFFICIAL DRAFT \quad---\quad Typeset on \today{} with XeLaTeX};
\draw [red,line width=2pt,opacity=0.1] ([xshift=4mm]current page.south west) -- ([xshift=4mm]current page.north east);
}%
}
\renewcommand{\maketitle}[2][]{%
\thispagestyle{empty}
\begin{tikzpicture}[overlay,remember picture,every node/.style={inner sep=0pt,outer sep=0pt}]%
\node [font=\Huge] at (current page.center) {#2};
\end{tikzpicture}%
\clearpage
\setcounter{page}{1}
}%
% Finalize Shipout
\IfEq{\qikofficialbuild}{false}{%
\AtBeginShipout{\AtBeginShipoutUpperLeftForeground{\qikdraftpage}}
}%
{}%
\begin{document}
\maketitle{Title of this Document}
Here is some text.
\end{document}
答案1
从上面的评论(特别是 Ulrike Fischer 的评论)可以看出,TikZ 与 兼容pdflscape
。只是包的加载顺序很重要,因为tikz
将补丁应用于everyshi
(也atbegshi
因为它是 的扩展everyshi
)。pdflscape
加载,因此在之后加载它以确保该部分已修补atbegshi
非常重要。tikz
atbegshi
概括:
everyshi
任何加载或atbegshi
应该加载的包后 tikz
。不这样做可能会导致 Adobe Acrobat错误 14当混合未修补和已修补everyshi
/时atbegshi
。