我维护一个我继承的类文件,该文件在继承的代码中包含以下页面样式:
\newcommand{\ps@bottom}{%
\let\@mkboth\markboth
\renewcommand{\@oddhead}{}%
\renewcommand{\@evenhead}{\@oddhead}
\renewcommand{\@oddfoot}{\hfil\thepage\hfil}
\renewcommand{\@evenfoot}{\@oddfoot}
}
最近我一直在做对类文件的一些修改与此页面样式的第一行发生冲突。当我删除该行时,我的修改起作用了,页面样式乍一看似乎仍然正常工作。不过,在我永久更改之前,我想了解删除该行的含义。换句话说,上述页面样式和此页面样式的预期行为有何不同:
\newcommand{\ps@bottom}{%
\renewcommand{\@oddhead}{}%
\renewcommand{\@evenhead}{\@oddhead}
\renewcommand{\@oddfoot}{\hfil\thepage\hfil}
\renewcommand{\@evenfoot}{\@oddfoot}
}
答案1
区别在于一个定义了\@mkboth
,另一个没有。这是否会产生任何功能差异取决于是否\@mkboth
在任何地方调用,这取决于您未显示的细节。
\@mkboth
不被 latex 格式的任何命令调用,但被标准类使用。
例如article
类定义
\newcommand\tableofcontents{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
因此目录是否设置标记取决于\@mkboth
是否\markboth
\@gobbletwo
页面headings
样式将其设置为例如\markboth
页面empty
样式将其设置为。\@gobbletwo