页眉中的 \savebox 具有可重新定义的命令

页眉中的 \savebox 具有可重新定义的命令

我正在制作一个文档类,其中包含一些可重新定义的页眉命令。但是,我遇到了以下问题:

\documentclass{article}
\usepackage{fancyhdr}

% In custom document class
\newcommand{\foo}{old header}

\fancypagestyle{mystyle}{
    \fancyhf{}
    \newsavebox\mybox
    \sbox\mybox{\foo}
    \chead{\usebox\mybox}
}
\pagestyle{mystyle}

% In user tex file
\renewcommand{\foo}{new header}

\begin{document}
    Page 1
    \newpage
    Page 2
\end{document}

这产生了 第 1 页 第2页

我怎样才能允许用户重新定义这些命令,但仍使用\sbox,以便我可以\wd在页眉内使用它来定位目的?

答案1

你可以照此进行。

  • 首先,在命令外面声明新的框\fancypagestyle
  • 当你想更改标题时,请同时发出这两个命令

    \renewcommand{\foo}{new header}
    \pagestyle{mystyle}
    

    在您的文档内。

梅威瑟:

\documentclass{article}
\usepackage{fancyhdr}

% In custom document class
\newcommand{\foo}{old header}

\newsavebox\mybox % declare it outside

\fancypagestyle{mystyle}{
    \fancyhf{}
    \sbox\mybox{\foo}
    \chead{\usebox\mybox}
}
\pagestyle{mystyle}

\begin{document}
    Page 1
    \newpage
    \renewcommand{\foo}{new header}
    \pagestyle{mystyle}
    Page 2
\end{document} 

输出:

在此处输入图片描述

因为它应该进入文档类,所以我建议您定义一个新命令\newheader并以这种方式使用它:

\documentclass{article}
\usepackage{fancyhdr}

% In custom document class
\newcommand{\foo}{}
\newcommand{\newheader}[1]{%
  \renewcommand{\foo}{#1}%
  \pagestyle{mystyle}%
}

\newsavebox\mybox % declare it outside

\fancypagestyle{mystyle}{
    \fancyhf{}
    \sbox\mybox{\foo}
    \chead{\usebox\mybox}
}
\newheader{old header}

\begin{document}
    Page 1
    \newpage
    \newheader{new header}
    Page 2
\end{document} 

相关内容