# Section and subsection colors using titlesec

Im trying to alter the colors on my section, subsection and subsubsection.

I do so using the titlesec page:

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


But the problem is i have to enter the font and font size also. I am using the fontenc package:

\usepackage[T1]{fontenc}


But i cant seem to find out what font and size is being used for the section, subsection and subsubsection.

These 2 values i mean: \Large\bfseries\sffamily

I tried to look in the .sty but that wasent very helpful.

-
What document class do you use? –  lockstep Feb 5 '11 at 12:10
report, and Martins answer looks like rocket sience to me. Is there no easier way? –  Toroo Feb 5 '11 at 12:18

## 2 Answers

The second argument of the \titleformat*{\<name>}{<code>} is stored in a macro called \ttlf@<name> which (default) definition can be printed to the command line with \show\ttlf@<name>, after a \makeatletter of course.

\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 }{}.


Therefore the correct settings for the requested title formats are:

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


Just for completeness here also the settings for \paragraph and \subparagraph:

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

-
I got it, guess it was too early. Thx –  Toroo Feb 5 '11 at 12:26
@Toroo: I added the final result now for more clarity for you and other people which want to do the same thing. –  Martin Scharrer Feb 7 '11 at 17:22

This is more a comment on Martin's answer, but it's too long, so I'm putting it as a community wiki answer.

For more user-friendliness, you can define a \addtotitleformat macro which allows you to only write

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


without having to repeat the other formatting information each time. Here's the code:

\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}

-
Here my \multexpafter would be handy ... –  Hendrik Vogt Feb 5 '11 at 14:54
@Hendrik: Yes, it would allow just to type \multexpafter3\def\multexpafter3\@currentsection@font\multexpafter4{\multexpaft‌​er2\@secondofsix. Are you planning on making a package out of your code? It would then be much easier to use than to have to copy the code each time. –  Philippe Goutet Feb 5 '11 at 17:02
I've never ever been close to writing a package, so if you have a package where you think it would be worth to include, please do (and just acklowledge the author in the code). –  Hendrik Vogt Feb 5 '11 at 17:07
@Hendrik: As \multexpafter is a helper macro, a standalone package would be preferable for it. Doing a package out of your code is just a matter of copying it to a .tex file, making a three-line .sty file which inputs it and then a short pdf file explaining how to use it. If you want, I can do that for you but as author of the code, you should be the package maintainer since you're the one who knows it best. –  Philippe Goutet Feb 5 '11 at 21:49
Thanks for those explanations. Now it seems, however, that Bruno should write a package that includes his \MultiExpandAfter. –  Hendrik Vogt Feb 13 '11 at 15:59