我正在完成我的硕士论文,需要修改标题目录 (TOC)。我所在大学的指导方针要求“目录”必须全部大写,并位于页面顶部中央。
我正在使用 ucthesis.cls 模板的修改版本。原始模板将目录定义为:
[代码A]
\def\tableofcontents{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
\chapter*{\contentsname
\@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}
}%
{\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}
为了使“目录”正确显示,我的解决方法是将模板的这一部分重写为:
[代码 B]
\def\tableofcontents{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
\clearpage
\begin{center}
\MakeUppercase{\contentsname}
\end{center}
{\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}
这会按预期工作,但删除该\chapter*{}
行会产生副作用,即删除目录中章节和小节编号之前的缩进,如 ucthesis.cls 模板中包含的以下代码行所定义
\def\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\def\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
以下分别是代码片段 A 和 B 的输出。
我对 LaTeX 模板或宏没有太多经验,很难找到关于这些东西的文档\@mkboth
。如果有人能解释一下为什么目录需要作为章节包含在内,以及我如何能够更改标题的外观,我将不胜感激——谢谢!
答案1
快速解决:
重新定义\contentsname
\renewcommand{\contentsname}{TABLE OF CONTENTS}
并仅对 ToC 进行本地补丁应用\@makeschapterhead
,这意味着,当您必须发出时\tableofcontents
,请写下以下行:
{\makeatletter
\patchcmd{\@makeschapterhead}
{\raggedright}
{\centering}
{}
{}
\tableofcontents
\makeatother}
梅威瑟:
\documentclass{ucthesis}
\usepackage{etoolbox}
\renewcommand{\contentsname}{TABLE OF CONTENTS}
\begin{document}
{\makeatletter
\patchcmd{\@makeschapterhead}
{\raggedright}
{\centering}
{}
{}
\tableofcontents
\makeatother}
\listoffigures
\listoftables
\chapter{Test}
\section{A section}
\end{document}
输出:
答案2
以下重新定义对我有用:
\def\tableofcontents{\@restonecolfalse
\if@twocolumn\@restonecoltrue\onecolumn\fi
%\chapter*{\,%\contentsname
% \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}
% }%
%\clearpage
\begin{center}
\MakeUppercase{\contentsname}
\end{center} \par
%
{\ssp\@starttoc{toc}}\if@restonecol\twocolumn\fi}
我认为\par
环境末尾的这个方法\center
起了作用。我很感谢 karlkoeller 的回答,但我对这种方法的理解更深入一些,它保留了\normalsize
我需要的目录标题的字体。