使用 titlesec 的章节和小节颜色

使用 titlesec 的章节和小节颜色

我正在尝试改变我的部分、小节和小小节的颜色。

我使用 titlesec 页面进行此操作:

\titleformat*{\section}{\Large\bfseries\sffamily\color{red}}
\titleformat*{\subsection}{\large\bfseries\sffamily\color{red}}

但问题是我还必须输入字体和字体大小。我正在使用 fontenc 包:

\usepackage[T1]{fontenc}

但我似乎无法找出该节、小节和小小节所使用的字体和大小。

我指的是这两个价值观:\Large\bfseries\sffamily

我尝试在 .sty 中查找,但没有什么帮助。

答案1

的第二个参数\titleformat*{\<name>}{<code>}存储在一个名为的宏中,\ttlf@<name>该宏(默认)定义可以在命令行中使用打印出来\show\ttlf@<name>,当然是在之后\makeatletter

\makeatletter
\show\ttlf@section

\ttlf@section:
macro:->\ttlh@hang {\normalfont \Large \bfseries }{\@seccntformat {section}}{\z
@ }{\ttl@passexplicit }{}. 

\show\ttlf@subsection

\ttlf@subsection:
macro:->\ttlh@hang {\normalfont \large \bfseries }{\@seccntformat {subsection}}
{\z@ }{\ttl@passexplicit }{}. 

\show\ttlf@subsubsection    

\ttlf@subsubsection:
macro:->\ttlh@hang {\normalfont \normalsize \bfseries }{\@seccntformat {subsubs
ection}}{\z@ }{\ttl@passexplicit }{}. 

因此,请求的标题格式的正确设置是:

\titleformat*{\section}{\normalfont\Large\bfseries\color{red}}
\titleformat*{\subsection}{\normalfont\large\bfseries\color{red}}
\titleformat*{\subsubsection}{\normalfont\normalsize\bfseries\color{red}}

为了完整性,这里还提供\paragraph和的设置\subparagraph

\titleformat*{\paragraph}{\normalfont\normalsize\bfseries\color{red}}
\titleformat*{\subparagraph}{\normalfont\normalsize\bfseries\color{red}}

答案2

这更像是对马丁的回答的评论,但它太长了,所以我把它作为社区维基答案。

为了更加用户友好,您可以定义一个\addtotitleformat宏,它允许您只写

\addtotitleformat*{\subsection}{\sffamily\color{blue}}

而不必每次都重复其他格式信息。代码如下:

\documentclass{article}

\usepackage{xcolor}
\usepackage{titlesec}

\makeatletter
\newcommand*\@secondofsix[6]{#2}
\newcommand{\addtotitleformat}{%
  \@ifstar{\addtotitleformat@star}{\addtotitleformat@nostar}}
\newcommand\addtotitleformat@nostar[2]{%
  \PackageError{titlesec}{non starred form of \string\addtotitleformat\space not supported}{}}
\newcommand\addtotitleformat@star[2]{%
  \expandafter\expandafter\expandafter\expandafter
  \expandafter\expandafter\expandafter\def
  \expandafter\expandafter\expandafter\expandafter
  \expandafter\expandafter\expandafter\@currentsection@font
  \expandafter\expandafter\expandafter\expandafter
  \expandafter\expandafter\expandafter{%
    \expandafter\expandafter\expandafter\@secondofsix
       \csname ttlf@\expandafter\@gobble\string#1\endcsname}%
  \titleformat*{#1}{\@currentsection@font#2}%
}
\makeatother

\addtotitleformat*{\section}{\Huge\color{red}}
\addtotitleformat*{\subsection}{\sffamily\color{blue}}

\begin{document}

\section{Section title}

\subsection{Section title}

\end{document}

相关内容