我想在页眉中放置一个具有淡入淡出效果的 TikZ 图形(我在文档正文中将其作为插图重现),这是我使用包设置的titlesec
。以下 MWE 似乎表明它不起作用。有什么解决方法吗?
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\usepackage[pagestyles]{titlesec}
\newpagestyle{teststyle}{
\renewcommand{\makeheadrule}{%
\color{blue}%
\rule[-.3\baselineskip]{\linewidth}{1pt}}
%% HEADER - depends on option
\sethead{}%
{}%
{%
\FadingSection
}%
}
\newcommand{\FadingSection}{%
\begin{tikzpicture}[baseline=(mabox.base)]
\node[rectangle,baseline=current bounding box.base,anchor=south east,inner ysep =0cm,inner xsep =0cm](mabox) at (0,0) {\sectiontitle};
\fill[path fading=west,fill=white] (-5,0) rectangle (0,1em);
\end{tikzpicture}
}
\begin{document}
\pagestyle{teststyle}
\section{ ABCD EFGH IJKLM NOPQR 1111 2222 3333 4444}
\FadingSection
\end{document}
答案1
这似乎是 PGF/TikZ 中的一个错误,与 PDF 特效有关,例如在页面主体之外应用的淡入淡出、图案和透明度。当我尝试在输出例程中添加透明度时,我的一些代码也遇到了同样的问题。显然一些 PDF 字典没有更新或正确连接。我想与 Joseph Wright 讨论过这个问题,他比我更了解输出驱动程序等。
此特定问题仅发生在单页文档中。当文档包含多页时,此问题才会发生。我猜有些\end{document}
PDF 内容刷新得太早了。您可以通过\newpage
在它前面直接添加 来解决这个问题,这样在到达文档末尾之前就会刷新当前页面。因此,只要 之后没有内容,就不会出现尾随空白页。\newpage
顺便说一句,添加\AtEndDocument{\newpage}
不一样,因为它来得太晚了。
在下面的代码中,部分标题的淡入淡出可以正常工作:
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\usepackage[pagestyles]{titlesec}
\newpagestyle{teststyle}{
\renewcommand{\makeheadrule}{%
\color{blue}%
\rule[-.3\baselineskip]{\linewidth}{1pt}}%
%% HEADER - depends on option
\sethead{}%
{}%
{%
\FadingSection
}%
}
\newcommand{\FadingSection}{%
\begin{tikzpicture}[baseline=(mabox.base)]
\node[rectangle,baseline=current bounding box.base,anchor=south east,inner ysep=0cm,inner xsep=0cm,text=blue](mabox) at (0,0) {\sectiontitle};
\fill[path fading=west,fill=white] (-5,0) rectangle (0,1em);
\end{tikzpicture}%
}
\pagestyle{teststyle}
\begin{document}
\section{ABCD EFGH IJKLM NOPQR 1111 2222 3333 4444}
\FadingSection
\newpage% Required to make it work
\end{document}
答案2
我认为我已经找到了错误。第 300 行pgfsys-pdftex.def
对 a 的引用pgfsmaks
。它周围都是对pgfsmask
s 的引用。当我做出明显的改变时,我不再收到关于最后一页褪色消失的投诉。
这是差异。
--- pgfsys-pdftex.def 2010-10-25 23:00:21.000000000 +0200
+++ pgfsys-pdftex.def 2012-04-22 22:06:25.000000000 +0200
@@ -297,7 +297,7 @@
\PackageError{pgf}{Undefined fading '#1'}{}%
\else%
{%
- \expandafter\ifx\csname pgfsmaks@#1\endcsname\relax%
+ \expandafter\ifx\csname pgfsmask@#1\endcsname\relax%
\pgf@sys@pdf@install@mask{#1}%
\fi%
\pgftransformreset%
我刚刚检查了 PGF 的后续版本(刚刚注意到上面文件的日期),发现它有同样的拼写错误。