这两种页面样式在功能上有何区别?

这两种页面样式在功能上有何区别?

我维护一个我继承的类文件,该文件在继承的代码中包含以下页面样式:

\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

相关内容