1

I have a problem with long sub/section headings: \\ is not wirking.

As I'm new to Latex, I adopted this beautiful template http://www.fluortools.com/misc/LaTeXtemplate and modified it for my needs.

However, right now, I am stuck with linebreaks in sub/section headings.

Here's a MWE:

\documentclass[a4paper,12pt,oneside]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[scaled]{berasans}
\usepackage[scaled]{beramono} 
 \usepackage[english]{babel}
\usepackage[left=3cm,right=3cm,top=2.5cm,bottom=3cm,includehead,headheight=13.6pt]{geometry}
\usepackage{titlesec}
\usepackage{tikz}
\usetikzlibrary{calc,decorations,decorations.pathmorphing,arrows,matrix,positioning,patterns}
\usepackage{xcolor}
\selectcolormodel{cmyk}
 \newcommand\boxedSection[3]{{%
%
     \begin{tikzpicture}[inner sep=#3,line width=1.0pt]
         \node[anchor=east,rectangle,draw] at (0,0) (counter) {\textbf{#2}};
             \draw (counter.south west)  ++(.0pt,.5pt)-- ++($(\linewidth,0) - (2.5pt,0)$);
\node [right of=counter,anchor=west]{#1};
     \end{tikzpicture}
 }}
 \newcommand\boxedSectionB[3]{{%
%
     \begin{tikzpicture}[inner sep=#3,line width=1pt]
         \node[anchor=east,rectangle,draw,fill=black] at (0,0) (counter) {\color{white}\textbf{#2}};
             \draw (counter.south west) ++(.0pt,.5pt)-- ++($(\linewidth,0) - (2.5pt,0)$);
\node [right of=counter,anchor=west]{#1};
     \end{tikzpicture}
 }}
\newcommand\boxedsection[1]{\boxedSectionB{#1}{\thesection}{2mm}}
\newcommand\boxedsubsection[1]{\boxedSection{#1}{\thesubsection}{1.7mm}}
\newcommand\boxedsubsubsection[1]{\boxedSection{#1}{\thesubsubsection}{1.5mm}}
 \titleformat{\section}[hang]%
     {\usekomafont{section}}%
     {}%
     {.0em}%
     {\filright\boxedsection}%

 \titleformat{\subsection}[hang]%
     {\usekomafont{subsection}}%
     {}%
     {.0em}%
     {\filright\boxedsubsection}%

 \titleformat{\subsubsection}[hang]%
     {\usekomafont{subsubsection}}%
     {}%
     {.0em}%
     {\filright\boxedsubsubsection}%

\titlespacing{\section}{0pt}{1.5cm}{-1cm}
\titlespacing{\subsection}{0pt}{1.5cm}{-1cm}
\titlespacing{\subsubsection}{0pt}{6pt}{6pt}
\titlespacing{\paragraph}{}{0pt}{0pt}


\begin{document}

\subsection{This title is really really really long so I'd liked to have a \\line break but instead is just go on and on ...}

\end{document}

As soon as I remove the boxedSection part in titleformat, linebreak with \\ works again, but of course the nice layout is removed as well.

Could somebody please modify the MWE so that linebreak works again, but the nice layout is kept.

Thanks a lot!!

Mischko

EDIT So I found a solution which works well for my purpose. As touhami suggests I added text width=13cm after anchor=west and removed the line in the boxedSection while leaving the boxedSectionB unchanged. So the code looks like this:

     \newcommand\boxedSection[3]{{%
%
     \begin{tikzpicture}[inner sep=#3,line width=1.0pt]
         \node[anchor=east,rectangle,draw] at (0,0) (counter) {\textbf{#2}};   
\node [right of=counter,anchor=west,text width=13cm]{#1};
     \end{tikzpicture}
 }}

And the results looks like this: enter image description here

  • you need to change \node [right of=counter,anchor=west]{#1}; to \node [right of=counter,anchor=west,text width=SOME LENGTH]{#1}; – touhami Feb 9 '16 at 15:58
  • Thanks! Linebreak works automatically and manually, if changed as you suggested. However, the layout is really mixed up. See Edit. Do you know how to fix that? – Mischko Feb 9 '16 at 16:33
  • I am not sure this is the best way, but you can try anchor=south west if it's too above try anchor=south west,yshift=-SOME LENGTH, – touhami Feb 9 '16 at 17:44
  • what about yshift=-.5cm – touhami Feb 9 '16 at 18:01
  • You are right the shift is good, but it still doesn't look really good, does it? I am not really satifsfied with the underlining. – Mischko Feb 9 '16 at 18:13
2

Update

Here is another suggestion without package titlesec. Now there are no rules below the headings.

\documentclass[a4paper,12pt,oneside]{scrbook}[2015/10/03]

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[scaled]{berasans}
\usepackage[scaled]{beramono} 
 \usepackage[english]{babel}
\usepackage[margin=3cm,top=2.5cm,includehead,headheight=13.6pt]{geometry}
\usepackage{xcolor}

\setcounter{secnumdepth}{\subsubsectionnumdepth}% subsubsection numbered

\RedeclareSectionCommands[
  font=\normalsize,
  %indent=-1em
]{section,subsection,subsubsection}

\newcommand*\BoxedSectionNumber[2]{{%
  \setlength\fboxrule{1pt}%
  \setlength\fboxsep{#2}%
  \ifstr{#1}{section}{%
    \colorbox{darkgray}{\textcolor{white}{\csname the#1\endcsname}}%
  }{\fbox{\csname the#1\endcsname}}%
  \hspace*{2\fboxsep}%
}}

\renewcommand*\sectionformat{\BoxedSectionNumber{section}{2mm}}
\renewcommand*\subsectionformat{\BoxedSectionNumber{subsection}{1.7mm}}
\renewcommand*\subsubsectionformat{\BoxedSectionNumber{subsection}{1.5mm}}

\newsavebox\SectionNumberBox

\renewcommand*\sectionlinesformat[4]{%
  \sbox{\SectionNumberBox}{\hspace*{#2}#3}%
  \noindent\usebox\SectionNumberBox%
  \parbox{\dimexpr\textwidth-\wd\SectionNumberBox\relax}{#4}%
  \par\nobreak%
}

\usepackage{blindtext}% dummy text

\begin{document}
\section{Section title}
\blindtext

\subsection{This title is really really really long so I'd liked
      to have a line break but instead is just go on and on ...}
\blindtext
\subsubsection{Subsubsection title}
\blindtext
\end{document}

Result:

enter image description here

If you uncomment indent=-1em you will get

enter image description here


Original answer

Note that the usage of package titlesec together with a KOMA-Script class is not recommended. You will get warnings by KOMA-Script and titlesec.

Here is a suggestion without titlesec and tikz that needs at least KOMA-Script version 3.19a (current on CTAN).

\documentclass[a4paper,12pt,oneside]{scrbook}[2015/10/03]

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[bitstream-charter]{mathdesign}
\usepackage[scaled]{berasans}
\usepackage[scaled]{beramono} 
 \usepackage[english]{babel}
\usepackage[left=3cm,right=3cm,top=2.5cm,bottom=3cm,includehead,headheight=13.6pt]{geometry}
\usepackage{xcolor}

\setcounter{secnumdepth}{\subsubsectionnumdepth}% subsubsection numbered

\RedeclareSectionCommands[font=\normalfont]{section,subsection,subsubsection}
\RedeclareSectionCommands[
  beforeskip=-1.5cm,
  afterskip=1cm,
  font=\normalfont
]{section,subsection}
\RedeclareSectionCommand[
  beforeskip=-12pt,
  afterskip=6pt,
  font=\normalfont
]{subsubsection}

\newcommand*\sectionnumberfboxsep{2mm}
\newcommand*\subsectionnumberfboxsep{1.7mm}
\newcommand*\subsubsectionnumberfboxsep{1.5mm}

\renewcommand*\sectionformat{{%
  \setlength\fboxsep{\sectionnumberfboxsep}%
  \setlength\fboxrule{1pt}%
  \colorbox{black}{\bfseries\textcolor{white}{\thesection}}%
}}
\renewcommand*\subsectionformat{{%
  \setlength\fboxsep{\subsectionnumberfboxsep}%
  \setlength\fboxrule{1pt}%
  \fbox{\bfseries\thesubsection}%
}}
\renewcommand*\subsubsectionformat{{%
  \setlength\fboxsep{\subsubsectionnumberfboxsep}%
  \setlength\fboxrule{1pt}%
  \fbox{\bfseries\thesubsubsection}%
}}
\makeatletter
\renewcommand*\sectionlinesformat[4]{%
  \ifstr{#1}{section}{%
    \leavevmode\rlap{\rule[\dimexpr-\sectionnumberfboxsep-1pt\relax]{\textwidth}{1pt}}%
    \parbox[b]{3em}{#3}\parbox[b]{\dimexpr\textwidth-3em}{#4}\par\nobreak%
  }{%
  \ifstr{#1}{subsection}{%
    \leavevmode\rlap{\rule[\dimexpr-\subsectionnumberfboxsep-1pt\relax]{\textwidth}{1pt}}%
    \parbox[b]{4em}{#3}\parbox[b]{\dimexpr\textwidth-4em}{#4}\par\nobreak%
  }{%
  \ifstr{#1}{subsubsection}{%
    \leavevmode\rlap{\rule[\dimexpr-\subsubsectionnumberfboxsep-1pt\relax]{\textwidth}{1pt}}%
    \parbox[b]{4.75em}{#3}\parbox[b]{\dimexpr\textwidth-4.75em}{#4}\par\nobreak%
  }{%
    \@hangfrom{\hspace*{#2}#3}{#4}%
  }}}%
}
\makeatletter

\usepackage{blindtext}% dummy text

\begin{document}
\section{Section title}
\blindtext
\subsection{This title is really really really long so I'd liked to have a line break but instead is just go on and on ...}
\blindtext
\subsubsection{Subsubsection title}
\blindtext
\end{document}

enter image description here

  • Thanks esdd for your detailled answer. Yeah, i know, I always get these warnings, but as the result looks ok I just ignored it ;). But of course a solution without titlesec would be perfect. I am not really happy, how the multiline title looks like. I think the title should not be higher than the counter. Maybe it's possible to enlarge the counter in such a way? Or maybe you'll have a better solution in mind? Thank you so much! – Mischko Feb 9 '16 at 22:32
  • Do you really want different sizes of the numbers depending on the length of the titles? Then you may get a subsection number that is bigger than the section number ... And if the numbers are larger they are also wider. So the space for the title is smaller and may be there is an additional line needed. If you can not shorten your titles to one line then it could be better to use an other layout. Additionally note that the line below the title separates the title from the regarding contents. – esdd Feb 10 '16 at 8:07
  • Yeah, you are probably right that enlarging the counter is not a good idea. I found a solution which works well for me (see Edit). However, I continued using tikz, since I am not able to make these changes in your suggested code. So I still get warnings. So if you have time, maybe you can change your version by removing the line and adjusting the height of the title? Thanks! – Mischko Feb 10 '16 at 11:32
  • @Mischko See my updated answer. – esdd Feb 10 '16 at 20:46

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.