我正在制作一个文档类,其中包含一些可重新定义的页眉命令。但是,我遇到了以下问题:
\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}
这产生了
我怎样才能允许用户重新定义这些命令,但仍使用\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}