直接在填充命令中定义淡入淡出样式

直接在填充命令中定义淡入淡出样式

在下面的 MWE 中,我monfading使用命令定义了衰落\tikzfading,然后在命令中使用该衰落\fill

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns,fadings}
\begin{document}
  \tikzfading[name=monfading,left color=transparent!100,right color=transparent!0]
  \begin{tikzpicture}
    \node[anchor=south west] at (0,0) {HALLO} ;   
    \fill[draw=black,path fading=monfading,fill=white] (0,0) rectangle (1.5,1);
  \end{tikzpicture}  
\end{document}

现在,我遇到了一些困难,因为我的 tikz 图片实际上位于页面的标题中(我使用\RequirePackage[pagestyles]{titlesec}),并且在那里,似乎不记得的定义\tikzfading。因此,我想将的定义monfading直接放在\fill命令中。因此,类似于:

%Pseudocode : 
 \begin{tikzpicture}
    \node[anchor=south west] at (0,0) {HALLO} ;   
    \fill[draw=black,path fading={left color=transparent!100,right
    color=transparent!0},fill=white] (0,0) rectangle (1.5,1);
  \end{tikzpicture} 

我怎样才能使这个伪代码成为真正的代码?

答案1

这里的问题是,当 TikZ/PGF 使用淡入淡出时,它必须将淡入淡出所需的代码放入 PDF 的开头附近。因此,它将所有这些都存储在一个令牌寄存器中,该寄存器在文档末尾使用进行处理\AtEndDocument。但这个钩子被执行最后一个\clearpage。如果淡入淡出在页眉或页脚中,则会出现问题,因为这些仅在 时处理\clearpage。因此,进行淡入淡出所需的代码处理得太晚,无法将其放入 PDF 中。解决方案是确保在最后一页完成后完成淡入淡出操作充分处理(即发货)。有多种方法可以实现此目的:

  1. 提交错误报告并更改 TikZ/PGF。
  2. 编辑pgfutil-latex.def并更改\AtEndDocument{\the\pgfutil@everybye}\AtEndDocument{\clearpage\the\pgfutil@everybye}
  3. \clearpage在文档结束前发出,手动或自动均可。如果是自动发出,即通过\AtEndDocument,则将此加载中tikz
  4. 使用包atveryend并输入:

    \usepackage{atveryend}
    \let\OrigAtEndDocument=\AtEndDocument
    \let\AtEndDocument=\AfterLastShipout
    \usepackage{tikz}
    \let\AtEndDocument=\OrigAtEndDocument
    

    在文档的开头。请注意,在主要的TikZ/PGF 代码,那么这是 的唯一用途\AtEndDocument。几个库也使用它,特别是external库,我还没有试验它们是否可以在 之后\clearpage。试验一下。

  5. 使用该atveryend包并编辑pgfutil-latex.def并更改\AtEndDocument\AfterLastShipout(最好\RequirePackage{atveryend}也添加到此文件中)。
  6. 使用其他解决方案之一我可以挂接到文档末尾但在`\clearpage`*之后吗?

以下是一些无需修改任何 TikZ 代码即可运行的代码:

\documentclass[12pt]{article}
\usepackage{atveryend}
\let\OrigAtEndDocument=\AtEndDocument
\let\AtEndDocument=\AfterLastShipout
\usepackage{tikz}
\let\AtEndDocument=\OrigAtEndDocument
\usepackage{lipsum}
\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

\newpage

\lipsum

\end{document}

相关内容