有没有办法让所有内容表默认变为粗体?
答案1
标准类
标准类article
、report
、book
没有提供用于更改目录条目字体的接口。
以下类示例修补article
了生成目录的宏以添加缺失的\bfseries
。
评论:
\@dottedtocline
用于\section
(类report
和book
) 的条目,以及\subsection
(\subparagraph
类article
,report
和book
) 。标准类使用
\normalfont
来表示页码\@dottedtocline
。因此karlkoller 的绝招\textbf{\tableofcontents
对于某些页码将会失败。
数学
标题中的数学元素也可以在目录中以粗体显示,请参阅布莱克本的评论。 评论:
但一般来说,这不是一个好主意,因为有些数学家使用粗体来表示向量或张量。因此添加粗体会改变数学表达式的含义。
另一方面,在标题中混合不同的字体系列看起来也不错。
无论如何,应该避免在标题中使用过多的数学知识。
\boldmath
不过这里是一个为文档分区标题设置的扩展示例:
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@dottedtocline}{\leavevmode}{\leavevmode\bfseries\boldmath}{}{}
\patchcmd{\@dottedtocline}{\normalfont}{\normalfont\bfseries\boldmath}{}{}
\patchcmd{\l@part}{\bfseries}{\bfseries\boldmath}{}{}
% \patchcmd{\l@chapter}{\bfseries}{\bfseries\boldmath}{}{}% report/book
\patchcmd{\l@section}{\bfseries}{\bfseries\boldmath}{}{}% article
\patchcmd{\@part}{\bfseries}{\bfseries\boldmath}{}{}
\patchcmd{\@spart}{\bfseries}{\bfseries\boldmath}{}{}
% \patchcmd{\@makechapterhead}{\bfseries}{\bfseries\boldmath}{}{}% report/book
% \patchcmd{\@makeschapterhead}{\bfseries}{\bfseries\boldmath}{}{}% % report/book
\patchcmd{\section}{\bfseries}{\bfseries\boldmath}{}{}
\patchcmd{\subsection}{\bfseries}{\bfseries\boldmath}{}{}
\patchcmd{\subsubsection}{\bfseries}{\bfseries\boldmath}{}{}
\patchcmd{\paragraph}{\bfseries}{\bfseries\boldmath}{}{}
\patchcmd{\subparagraph}{\bfseries}{\bfseries\boldmath}{}{}
\makeatother
\begin{document}
\tableofcontents
\part{Einstein: $E=mc^2$}
\section{Hello world $\alpha+1=\infty$}
\subsection{Foo bar $\beta*3=\emptyset$}
\subsubsection{Sub sub}
\end{document}
班级memoir
其他类或包(例如titletoc
)可以提供更复杂的界面来格式化目录。
带有类的示例memoir
(为简单起见,没有\boldmath
):
\documentclass{memoir}
\addtodef*{\cftsectionfont}{}{\bfseries}
\addtodef*{\cftsubsectionfont}{}{\bfseries}
\addtodef*{\cftparagraphfont}{}{\bfseries}
\addtodef*{\cftsubparagraphfont}{}{\bfseries}
\addtodef*{\cftfigurefont}{}{\bfseries}
\addtodef*{\cfttablefont}{}{\bfseries}
\addtodef*{\cftsectionpagefont}{}{\bfseries}
\addtodef*{\cftsubsectionpagefont}{}{\bfseries}
\addtodef*{\cftparagraphpagefont}{}{\bfseries}
\addtodef*{\cftsubparagraphpagefont}{}{\bfseries}
\addtodef*{\cftfigurepagefont}{}{\bfseries}
\addtodef*{\cfttablepagefont}{}{\bfseries}
\renewcommand*{\cftdot}{\bfseries.}
\settocdepth{subsection}
\begin{document}
\tableofcontents
\part{Part title}
\chapter{Introduction}
\section{Hello world}
\subsection{Foo bar}
\subsubsection{Sub sub}
\end{document}
包裹tocloft
软件包tocloft
提供了与类类似的命令memoir
(均由同一作者 Peter Wilson 编写)。缺失部分\addtodef
由 LaTeX 替换\g@addto@macro
,文档分区名称更短(例如,sec
而不是section
):
\usepackage{tocloft}
\makeatletter
\g@addto@macro\cftsecfont{\bfseries}
\g@addto@macro\cftsubsecfont{\bfseries}
\g@addto@macro\cftparafont{\bfseries}
\g@addto@macro\cftsubparafont{\bfseries}
\g@addto@macro\cftfigfont{\bfseries}
\g@addto@macro\cfttabfont{\bfseries}
\g@addto@macro\cftsecpagefont{\bfseries}
\g@addto@macro\cftsubsecpagefont{\bfseries}
\g@addto@macro\cftparapagefont{\bfseries}
\g@addto@macro\cftsubparapagefont{\bfseries}
\g@addto@macro\cftfigpagefont{\bfseries}
\g@addto@macro\cfttabpagefont{\bfseries}
\makeatother
答案2
以一种非常规的、非常简单的方式?
\textbf{\tableofcontents}