9

With the following MWE, i get the Section title underlined in black :

\documentclass[12pt]{article}
\usepackage[explicit]{titlesec}
\usepackage[dvipsnames]{xcolor}

\titleformat{\section}%
{\large\sffamily\bfseries}%
{Section \arabic{section}}%
{0.5em}%
{#1}%
[{\titlerule[2.5pt]}]

\begin{document}
\section{mon titre}
\end{document}

My first problem : if i remove the { } enclosing \titlerule, i get a compilation error

! LaTeX Error: Missing \begin{document}

Which is strange, since the content of the [ ] is a text to typeset after the section title. For example

[some-after-text]

works. My second problem : if i colorize the rule with

[\textcolor{blue}{\titlerule[2.5pt]}]

I obtain a blue underline, but with an additional vertical space (app 0.5 cm) between the title and the underline. If i use

[{\color{blue}\titlerule[2.5pt]}]

instead, the vertical space disappears... I have to admit, i do not understand that.

  • To see why \textcolor starts a new paragraph (mentioned in @egreg's answer), add \makeatletter\show\@textcolor\makeatother after \titleformat, then inspect your .log file and see that it executes \leavevmode (\@textcolor is just a subsidiary function called by \textcolor). Then read Function and usage of \leavevmode. – Werner Jan 4 '12 at 22:01
11

It's not strange: without the braces, in the first case, the first closing ] is matched with the opening [ that announces the optional argument to \titleformat. An optional argument always goes from the [ to the first ] (at the same brace level).

The second problem is due to the fact that \textcolor starts a paragraph, while \color doesn't. But, as you already discovered, using \color inserts a break point and the rule may go on the following page.

Solution:

\titleformat{\section}
  {\large\sffamily\bfseries}
  {Section \arabic{section}}
  {0.5em}
  {#1}
  [\titleline{\color{blue}\titlerule[2.5pt]}]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.