我正在使用该类amsbook
并使用命令更改目录 (toc) 标题的字体样式
\renewcommand{\contentsname}{\textbf{\textsf{Contents}}}
所以我希望它采用\sf
样式和粗体字体。目录有两页,第二页上出现一个标题行,其中的 CONTENTS 用小写字母书写,也是\sf
粗体字体。但是我不希望在这里采用粗体字体。有没有简单的解决方案来改变这种情况?如果很复杂,我想我只能使用默认设置了amsbook style
。无论如何,感谢您的任何建议!
答案1
直接更改格式\contentsname
并不是一个好主意,因为更改也会影响标题和(最终)目录中的条目。鉴于\@starttoc
在中定义了方式amsbook
,您需要重新定义\@starttoc
;以下示例显示了产生所需效果的必要重新定义(它还会将格式应用于 LoF 和 LoT 的标题):
\documentclass{amsbook}
\makeatletter
\def\@starttoc#1#2{%
\begingroup
\let\secdef\@gobbletwo \chapter
\let\@secnumber\@empty % for \@tocwrite and \chaptermark
\ifx\contentsname#2%
\else \@tocwrite{chapter}{#2}\fi
\typeout{#2}\@xp\chaptermark\@xp{#2}%
\@makeschapterhead{\sffamily#2}\@afterheading
\makeatletter
\@input{\jobname.#1}%
\if@filesw
\@xp\newwrite\csname tf@#1\endcsname
\immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
\fi
\global\@nobreakfalse \endgroup
\newpage
}
\makeatother
\begin{document}
\tableofcontents
\listoftables
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\chapter{Test}\section{test}\section{test}
\end{document}
目录第一页和第二页的上部:
答案2
您不应破坏目录\contentsname
以更改格式,它仅用于保存目录的实际名称,并且您会发现它不止用在一处。您在第二页看到的是页眉。
目录标题和其他类似列表的格式由名为 的内部命令控制\@makeschapterhead
。您可以按如下方式重新定义,以使所有这些列表的标题都使用粗体无衬线字体:
\documentclass{amsbook}
\makeatletter
\def\@makeschapterhead#1{\global\topskip 7.5pc\relax
\begingroup
\fontsize{\@xivpt}{18}\bfseries\sffamily\centering
#1\par \endgroup
\skip@34\p@ \advance\skip@-\normalbaselineskip
\vskip\skip@ }
\makeatother
\begin{document}
\tableofcontents
\chapter{Test}
\end{document}
如果您只是希望更改目录的格式,那么您可以使用以下命令将\tableofcontents
命令切换到自定义样式:
\documentclass{amsbook}
\makeatletter
\def\@maketochead#1{\global\topskip 7.5pc\relax
\begingroup
\fontsize{\@xivpt}{18}\bfseries\sffamily\centering
#1\par \endgroup
\skip@34\p@ \advance\skip@-\normalbaselineskip
\vskip\skip@ }
\def\tableofcontents{{\let\@makeschapterhead\@maketochead\@starttoc{toc}\contentsname}}
\makeatother
\begin{document}
\tableofcontents
\listoffigures
\chapter{Test}
\end{document}