\@mkboth 和 \markboth 起什么作用?

\@mkboth 和 \markboth 起什么作用?

toc 相关命令有什么\@mkboth作用\markboth

答案1

\markboth以下是LaTeX 内核

\def\markboth#1#2{%
  \begingroup
    \let\label\relax \let\index\relax \let\glossary\relax
    \unrestored@protected@xdef\@themark {{#1}{#2}}%
    \@temptokena \expandafter{\@themark}%
    \mark{\the\@temptokena}%
  \endgroup
  \if@nobreak\ifvmode\nobreak\fi\fi}

它需要两个参数,旨在帮助设置twoside模式下的页眉 - 第一个设置为左页眉,而第二个设置为右页眉。

相反,\@mkboth被用作内部内核工具,并可能承担多种功能。从source2e(部分65.3 标记约定,第 310 页):

像这样的命令\tableofcontents应该在某些页面样式中设置标记,使用\@mkboth命令,即\let通过 pagestyle 命令 ( \ps@...) 来\markboth设置标题或\@gobbletwo不执行任何操作。

例如,empty页面样式(在 中latex.ltx)设置

\def\ps@empty{%
  \let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@oddfoot\@empty
  \let\@evenhead\@empty\let\@evenfoot\@empty}

headings页面样式(在article.cls) 套

\if@twoside
  \def\ps@headings{%
      \let\@oddfoot\@empty\let\@evenfoot\@empty
      \def\@evenhead{\thepage\hfil\slshape\leftmark}%
      \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
      \let\@mkboth\markboth
      ...

相关内容