Fancyhdr 和 Tikz,失控的争论?

Fancyhdr 和 Tikz,失控的争论?

我正在尝试使用 TikZ 在一个精美的自定义标题内为文档绘制一些标题,使用以下代码:

\documentclass[letter,11pt]{article}
\usepackage{tikz}
\usepackage{fancyhdr}
\usepackage{lastpage}

\fancypagestyle{aero450}
{
    \fancyhf{}
    \renewcommand{\headrulewidth}{0pt}
    \renewcommand{\footrulewidth}{0pt}

    \fancyhead[C]{

        \begin{tikzpicture}[remember picture]

            \draw (current bounding box.center) node (__head_c)
                [font=\scriptsize]
            {HEADER HEADER HEADER};

        \end{tikzpicture}

    }
}

\pagestyle{aero450}

\begin{document}
    TEST TEST TEST
\end{document}

但是,无论是使用 xelatex、pdflatex 还是writelatex.com,出现以下错误:

Runaway argument? 
{ \begin {tikzpicture}[remember picture] 
Paragraph ended before \f@ncyhf was complete. <to be read again> 
\par l.23 \pagestyle{aero450}

我做错了什么? writelatex.com 说我可能忘记了},但我很确定我没有......

答案1

此处的问题在于 定义中的空行\fancyhead。但是,这转换为\fancyfoot。此处的原因是\fancyhead( \fancyfoot)(使用 定义\newcommand)调用了内部通用宏(使用\f@ncyhf定义) \def,该宏存储页眉/页脚。前者\newcommand创建的宏接受段落分隔符(我将其称为\long-content),但后者\def创建的宏仅接受非\long内容。也就是说,您不能在其中包含段落,并且由于空行表示段落分隔符,因此它会标记错误。

解决方案:删除空行,或者%如果您希望使代码空闲,则将其用作行分隔符。

作为参考,请参阅

相关内容