目录和图表内部代码之间的差异

目录和图表内部代码之间的差异

在标准课程中book.cls我们report.cls发现

\newcommand\tableofcontents{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    \if@restonecol\twocolumn\fi
    }

\newcommand\listoffigures{%
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \chapter*{\listfigurename}%
      \@mkboth{\MakeUppercase\listfigurename}%
              {\MakeUppercase\listfigurename}%
    \@starttoc{lof}%
    \if@restonecol\twocolumn\fi
    }

在 article.cls 中

\newcommand\tableofcontents{%
    \section*{\contentsname
        \@mkboth{%
           \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
    \@starttoc{toc}%
    }

\newcommand\listoffigures{%
    \section*{\listfigurename}%
      \@mkboth{\MakeUppercase\listfigurename}%
              {\MakeUppercase\listfigurename}%
    \@starttoc{lof}%
    }

在文档中我们读到

的代码\@mkboth放置在标题内,以避免对标题后的垂直间距产生任何影响(在某些情况下)。对于其他命令,例如\listoffigures下面的命令,这已从 LATEX2.09 版本更改,因为如果在双列模式下使用,它将产生严重的错误(请参阅 pr/3285)。但是,\tableofcontents在这些类中始终以单列模式排版,因此出于兼容性原因保留了略显不一致的设置。

问题 有人能解释一下这一段吗,特别是在某些情况下(如果有例子的话)

但是 \tableofcontents总是排版在单列中


更新 - 主要问题

  1. 为什么\@mkboth放在标题里面\tableofcontents
  2. 为什么两个代码\tableofcontents不同\listoffigures

答案(我的理解)

\@mkboth放置在标题内,以避免对标题后的垂直间距产生任何影响(在某些情况下)

好的,我明白这一点,但第二个问题来了:为什么我们不做同样的事情\listoffigures

对于其他命令,例如\listoffigures下面的命令,这已从 LATEX2.09 版本更改,因为如果在双列模式下使用,它将产生严重的错误(参见 pr/3285)。

这里我看不见!接下来的几行让我更加困惑。

相关内容