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.

1
  • 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, 2012 at 22:01

1 Answer 1

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]}]
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .