我正在使用classicthesis
包。我想将目录中章节标题的字体添加粗体。在文件中FrontBackMatter/Contents
,我添加了以下代码:
\renewcommand\cftchapfont{\bf}
但它并没有改变任何东西。我怎样才能简单地将目录中章节标题的当前字体添加为粗体?谢谢。
答案1
classicthesis 的文档提到:
重要提示:这种风格的某些东西乍一看可能看起来不寻常,很多人一开始都会有这种感觉。然而,所有的东西都是故意设计成这样的,尤其是这些:
• 不使用粗体字体。斜体或间隔小写字母效果很好。
[...]
因此,请不要通过改变这些东西来破坏风格的美感,除非你真的知道自己在做什么!拜托。
因此,软件包创建者强烈反对使用粗体字体,并恳求不要进行破坏风格的更改。
但是,如果你想违背作者的建议,这里有一种方法可以做到:
\documentclass{scrbook}
\usepackage[linedheaders]{classicthesis}
\usepackage{lipsum}
\makeatletter
\newcommand\listheader{%
\ifthenelse{\boolean{@linedheaders}}%
{% lines above and below, number right
\titleformat{\chapter}[display]%
{\bfseries}{\raggedleft{\color{halfgray}\chapterNumber\thechapter} \\ }{0pt}%
{\titlerule\vspace*{.9\baselineskip}\raggedright\spacedallcaps}[\normalsize\vspace*{.8\baselineskip}\titlerule]%
}{% something like Bringhurst
\titleformat{\chapter}[display]%
{\bfseries}{\mbox{}\oldmarginpar{\vspace*{-3\baselineskip}\color{halfgray}\chapterNumber\thechapter}}{0pt}%
{\raggedright\spacedallcaps}[\normalsize\vspace*{.8\baselineskip}\titlerule]%
}
}
\newcommand\normalheader{%
\ifthenelse{\boolean{@linedheaders}}%
{% lines above and below, number right
\titleformat{\chapter}[display]%
{\relax}{\raggedleft{\color{halfgray}\chapterNumber\thechapter} \\ }{0pt}%
{\titlerule\vspace*{.9\baselineskip}\raggedright\spacedallcaps}[\normalsize\vspace*{.8\baselineskip}\titlerule]%
}{% something like Bringhurst
\titleformat{\chapter}[display]%
{\relax}{\mbox{}\oldmarginpar{\vspace*{-3\baselineskip}\color{halfgray}\chapterNumber\thechapter}}{0pt}%
{\raggedright\spacedallcaps}[\normalsize\vspace*{.8\baselineskip}\titlerule]%
}
}
\makeatother
\begin{document}
\listheader
\tableofcontents
\normalheader
\chapter{Test Chapter}
\section{Test Section}
\section{Test Section}
\end{document}
该\listheader
命令只是将章节标题改为粗体;\normalheader
恢复非粗体标题。
最后要说的是,请考虑不是进行这种更改后,标题的间距小写字母就足够了,而添加粗体字体则是多余的,并且明显破坏了风格(如果考虑到更改不是一致应用的,而只是针对某些章节,则更加如此)。
最后一句话:你尝试的原因
\renewcommand\cftchapfont{\bf}
(请注意,它应该是\bfseries
而不是已弃用的\bf
)不起作用(即使classicthesis
使用tocloft
)是因为titles
选项传递给了tocloft
,所以\cft...
列表的命令系列将不起作用,并且titlesec
将应用定义的格式。