代码

代码

我快要疯了,想找出可能相关的两个问题。

  • 第一个事实是,在第一页上“似乎”调用了两次\AtBeginShipoutfrom ,因为与 结合使用时绘图上会丢失不透明度。atbegshitikzpdflscape
  • 第二个是我使用 Adob​​e Acrobat 8​​ 和有时使用 Adob​​e 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非常重要。tikzatbegshi

概括:

everyshi任何加载或atbegshi应该加载的包 tikz。不这样做可能会导致 Adob​​e Acrobat错误 14当混合未修补和已修补everyshi/时atbegshi

相关内容