我想将目录页的默认标题从“目录”更改为“目录”。此外,我还想将标题水平居中。
我的代码的 MWE 没有对内容页的标题进行任何更改,如下所示:
\documentclass{article}
\usepackage[margin = 2.54 cm]{geometry}
\usepackage[doublespacing]{setspace}
\usepackage{parskip}
\begin{document}
\tableofcontents
\newpage
\section{Random Variables}
\subsection{Definition}
\end{document}
然后,我尝试更改我的代码,如下所示:
\documentclass{article}
\usepackage[margin = 2.54 cm]{geometry}
\usepackage[doublespacing]{setspace}
\usepackage{parskip}
\renewcommand\contentsname{\center{Table of Contents}}
\begin{document}
\tableofcontents
\newpage
\section{Random Variables}
\subsection{Definition}
\end{document}
添加这行代码\renewcommand\contentsname{\center{Table of Contents}}
确实将我的目录页标题更改为“目录”,并且也变为水平居中。但是,由于某种原因,标题现在略微向下移动(相对于原始代码)。
我有两个疑问。
首先,为什么添加该行\renewcommand\contentsname{\center{Table of Contents}}
也会将标题向下推?其次,如果我希望我的新标题像默认标题一样显示,即不向下推,我应该如何调整我的代码或正确的代码应该是什么?
PS:我对 LaTeX 还很陌生,所以任何直观的解释都将不胜感激:)
答案1
\center
是环境的内部实现center
,永远不应用作命令(并且不接受参数)。center
添加垂直空间。\centering
是命令形式,(尽管\...name
命令不打算有任何格式化命令)因此作为快速破解
\renewcommand\contentsname{\centering Table of Contents}
可以工作,尽管这实际上是在滥用系统。LaTeX 引入了\...name
专门用于保存的命令纯文本固定字符串没有格式化,以便可以通过更改固定文本(例如,更改为另一种语言)来本地化文档,而无需重新实现格式。
格式应由文档类指定,对于文章来说,格式是
\newcommand\tableofcontents{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
因此,如果您只希望这个标题居中,并且不改变其他内容\section*
,那么您可以\centering
在此处添加
\makeatletter
\renewcommand\tableofcontents{%
\section*{\centering\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
\makeatother