![目录和图表内部代码之间的差异](https://linux22.com/image/337332/%E7%9B%AE%E5%BD%95%E5%92%8C%E5%9B%BE%E8%A1%A8%E5%86%85%E9%83%A8%E4%BB%A3%E7%A0%81%E4%B9%8B%E9%97%B4%E7%9A%84%E5%B7%AE%E5%BC%82.png)
在标准课程中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
总是排版在单列中
更新 - 主要问题
- 为什么
\@mkboth
放在标题里面\tableofcontents
? - 为什么两个代码
\tableofcontents
不同\listoffigures
?
答案(我的理解)
\@mkboth
放置在标题内,以避免对标题后的垂直间距产生任何影响(在某些情况下)
好的,我明白这一点,但第二个问题来了:为什么我们不做同样的事情\listoffigures
?
对于其他命令,例如
\listoffigures
下面的命令,这已从 LATEX2.09 版本更改,因为如果在双列模式下使用,它将产生严重的错误(参见 pr/3285)。
这里我看不见!接下来的几行让我更加困惑。