如何默认将全部目录设为粗体?

如何默认将全部目录设为粗体?

有没有办法让所有内容表默认变为粗体?

答案1

标准类

标准类articlereportbook没有提供用于更改目录条目字体的接口。

以下类示例修补article了生成目录的宏以添加缺失的\bfseries

结果

评论:

  • \@dottedtocline用于\section(类reportbook) 的条目,以及\subsection(\subparagrapharticlereportbook) 。

  • 标准类使用\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}

相关内容