3

I know that it is not a good idea to use titlesec together with KOMA script, but it worked in the past. Now it does not work and since I rely on KOMA script I would like to replace the remaining titlesec code with something more generic or at least KOMA script compatible:

%--> chapter with 'chapter' + number + rule + name + rule
% --------------------------------
\titleformat{\chapter}[display]               % {command}[shape]
  {\usekomafont{chapter}\Large \color{black}} % format
  {\LARGE\MakeUppercase{\chaptertitlename}%   % label
   \Huge~\thechapter \filright}%  
  {1pt}                                          % sep (from chapternumber)
  {%
   \titlerule \vspace{0.9pc} % 
   \filright 
   \color{sectioncolor}   
  }                                           % (before chaptertitle and after)
  [\color{black} \vspace{0.9pc} \filright {\titlerule}] %
% --------------------------------

example chapter heading

%--> part with 'PART' + number at frame and name inside frame
% --------------------------------
\titleformat{\part}[frame]
  {\usekomafont{part}\Large\color{black}\centering}    % format
  % label: PART I
  {\enspace \LARGE\MakeUppercase{\partname}%           
     \centering \Huge~\thepart \enspace }%  
  % sep (from partnumber)
  {1.5\baselineskip}
  % (before chaptertitle and after)
  {\color{sectioncolor}%
  \filcenter}          
% --------------------------------

example part heading

% spacing before and after sections
\titlespacing*{\section}{0pt}{*2.0}{*0.5}
\titlespacing*{\subsection}{0pt}{*1.5}{*0.5}
\titlespacing*{\subsubsection}{0pt}{*1.5}{*0.5}

I have no code prepared simply because this is to me LateX or KOMA internal code I do not know well enough.

The code is used in my template, thus the solution is going to be used by many other people as well and public anyway.

EDIT: MWE

\documentclass{scrbook}

\usepackage{xcolor}
\usepackage{titlesec}

% --------------------------------
\titleformat{\chapter}[display]               % {command}[shape]
  {\usekomafont{chapter}\Large \color{black}} % format
  {\LARGE\MakeUppercase{\chaptertitlename}%   % label
   \Huge~\thechapter \filright}%  
  {1pt}                                          % sep (from chapternumber)
  {%
   \titlerule \vspace{0.9pc} % 
   \filright 
   \color{blue}
  }                                           % (before chaptertitle and after)
  [\color{black} \vspace{0.9pc} \filright {\titlerule}] %
% --------------------------------

%--> part with 'PART' + number at frame and name inside frame
% --------------------------------
\titleformat{\part}[frame]
  {\usekomafont{part}\Large\color{black}\centering}    % format
  % label: PART I
  {\enspace \LARGE\MakeUppercase{\partname}%           
     \centering \Huge~\thepart \enspace }%  
  % sep (from partnumber)
  {1.5\baselineskip}
  % (before chaptertitle and after)
  {\color{blue}%
  \filcenter}          

% --------------------------------

% spacing before and after sections
\titlespacing*{\section}{0pt}{*2.0}{*0.5}
\titlespacing*{\subsection}{0pt}{*1.5}{*0.5}
\titlespacing*{\subsubsection}{0pt}{*1.5}{*0.5}

\begin{document}

\part{Part Title}

\chapter{Introduction}

\subsection*{title}

\subsubsection*{title}

\end{document}
  • Please provide a minimal example rather than code fragments. When I complete your code in an obvious way, it works fine. Which isn't to say it is a good idea to use titlesec with KOMA. But it does work. – cfr May 2 '16 at 21:23
  • I added an example. it does not compile, which is expected. It should compile with old versions of titlesec and koma. – Matthias Pospiech May 3 '16 at 8:19
  • 2
    Matthias, you gotta update once in a while. Your example runs fine, except for the various warnings. – Johannes_B May 3 '16 at 8:25
  • @esdd Do you want to add an answer with the most recent and relevant information at Incompatibilities between KOMA-Script and titlesec – Johannes_B May 3 '16 at 8:28
  • I updated using texlive today. – Matthias Pospiech May 3 '16 at 12:07
6

Second Update Since version 3.25 KOMA-Script provides \partlineswithprefixformat, too:

\documentclass[chapterprefix,numbers=noenddot]{scrbook}[2018/03/30]% needs version 3.25 or newer
\usepackage{xcolor}

% part
\RedeclareSectionCommand[
  innerskip=0pt,
  font=\mdseries\Large,
  prefixfont=\LARGE,
]{part}

\renewcommand*{\partformat}{%
  \raisebox{-.5\dp\strutbox}{%
    \makebox[0pt]{%
      \setlength\fboxsep{.5em}%
      \colorbox{white}{%
        \partname\nobreakspace{\Huge\thepart\autodot}%
}}}}

\renewcommand*\partlineswithprefixformat[3]{% needs KOMA-Script version 3.25 or newer
  \ifstr{#1}{part}{%
    \raggedpart
    \fbox{%
      \parbox[t][\dimexpr\height+3\normalbaselineskip][c]
        {\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}
        {\centering \color{blue}#3}%
    }\nolinebreak%
    \ifnumbered{part}{\hspace*{-.5\textwidth}#2}{\linebreak}%
  }{%
    #2#3
  }%
}
\renewcommand*\raggedpart{\raggedright}

% chapter
\RedeclareSectionCommand[
  innerskip=1pt,
  font=\mdseries\Large,
  prefixfont=\LARGE,
]{chapter}

\renewcommand*{\chapterformat}{%
  \mbox{\MakeUppercase{%
    \chapappifchapterprefix{\nobreakspace}}{\Huge\thechapter\autodot}%
    \IfUsePrefixLine{}{\enskip}}%
}

\renewcommand\chapterlineswithprefixformat[3]{%
  \ifstr{#1}{chapter}{%
    #2\nobreak%
    \vspace*{\dimexpr-\ht\strutbox}%
    \rule[-\dp\strutbox]{\textwidth}{.4pt}\\*[.9pc]%
    {\color{blue}#3}%
    \vspace*{\dimexpr-\ht\strutbox-\dp\strutbox+.9pc}\nobreak%
    \rule[-\dp\strutbox]{\textwidth}{.4pt}%
    \par\nobreak%
  }{%
    #2#3%
  }%
}

% other section levels
\RedeclareSectionCommand[
  beforeskip=-2ex plus -.6ex minus -0.12ex,
  afterskip=.5ex plus .05ex
]{section}

\RedeclareSectionCommands[
  beforeskip=-1.5ex plus -.45ex minus -0.09ex,
  afterskip=.5ex plus .05ex
]{subsection,subsubsection}

\begin{document}
\addpart{Part without number}
\tableofcontents
\part{Part Title}
\chapter{Introduction}
\subsection*{title}
\subsubsection*{title}
\part{Second title}
\end{document}

Update

It is also possible to use style=chapter for parts. Then \chapterlineswithprefixformat can also be used to set the layout for the part titles.

\documentclass[chapterprefix,numbers=noenddot]{scrbook}
\usepackage{xcolor}

% part and chapter
\RedeclareSectionCommand[
  style=chapter,
  beforeskip=-1sp,
  afterskip=1sp,
  innerskip=0pt,
  font=\mdseries\Large,
  prefixfont=\LARGE,
]{part}

\RedeclareSectionCommand[
  innerskip=1pt,
  font=\mdseries\Large,
  prefixfont=\LARGE,
]{chapter}

\renewcommand*{\partformat}{%
  \raisebox{-.5\dp\strutbox}{%
    \makebox[0pt]{%
      \setlength\fboxsep{.5em}%
      \colorbox{white}{%
        \partname\nobreakspace{\Huge\thepart\autodot}%
}}}}

\renewcommand*{\chapterformat}{%
  \mbox{\MakeUppercase{%
    \chapappifchapterprefix{\nobreakspace}}{\Huge\thechapter\autodot}%
    \IfUsePrefixLine{}{\enskip}}%
}

\renewcommand\chapterlineswithprefixformat[3]{%
  \ifstr{#1}{chapter}{%
    #2\nobreak%
    \vspace*{\dimexpr-\ht\strutbox}%
    \rule[-\dp\strutbox]{\textwidth}{.4pt}\\*[.9pc]%
    {\color{blue}#3}%
    \vspace*{\dimexpr-\ht\strutbox-\dp\strutbox+.9pc}\nobreak%
    \rule[-\dp\strutbox]{\textwidth}{.4pt}%
    \par\nobreak%
  }{%
    \ifstr{#1}{part}{%
      \null\vfil
      \fbox{%
        \parbox[t][\dimexpr\height+3\normalbaselineskip][c]
          {\dimexpr\textwidth-2\fboxsep-2\fboxrule\relax}
          {\centering \color{blue}#3}%
      }\nolinebreak%
      \ifnumbered{part}{\hspace*{-.5\textwidth}#2}{}%
      \vfil\newpage\partheademptypage
    }{%
      #2#3%
    }%
  }%
}

% other section levels
\RedeclareSectionCommand[
  beforeskip=-2ex plus -.6ex minus -0.12ex,
  afterskip=.5ex plus .05ex
]{section}

\RedeclareSectionCommands[
  beforeskip=-1.5ex plus -.45ex minus -0.09ex,
  afterskip=.5ex plus .05ex
]{subsection,subsubsection}

\begin{document}
\addpart{Part without number}
\tableofcontents
\part{Part Title}
\chapter{Introduction}
\subsection*{title}
\subsubsection*{title}
\part{Second title}
\end{document}

Original answer

Your code will work with titlesec version 2016/03/21 v2.10.2 and the prerelease of KOMA-Script 3.20. See Fehler bei Verwendung von titlesec (German).

But here is also a suggestion without titlesec.

  • You can use \RedeclareSectionCommand and \RedeclareSectionCommands to set the vertical skips before and after section headings.
  • To change the layout of the chapter titles redefine the commands \chapterformat and \chapterlineswithprefix. Note that I use option chapterprefix.
  • Unfortunaly there is no \partlineswithprefixformat yet. So I use TikZ to draw the frame around the part titles. Therefore the example needs two runs.

Code:

\documentclass[chapterprefix,numbers=noenddot]{scrbook}
\usepackage{xpatch}
\usepackage{tikz}

% part
\RedeclareSectionCommand[
  font=\mdseries\Large\color{blue},
  prefixfont=\usekomafont{part}\LARGE\color{black},
  expandtopt,
  innerskip=1\baselineskip
]{part}
\renewcommand*{\partformat}{%
  \tikz[remember picture]\node[inner ysep=0pt,inner xsep=.5em](partnumber)
    {{\MakeUppercase{\partname}\nobreakspace{\Huge\thepart\autodot}}};%
}

\xapptocmd{\partheadstartvskip}{%
  \ifunnumbered{part}
    {\tikz[remember picture]\coordinate(partstart);\\*[1.5\baselineskip]}
    {}%
}{}{}
\xpretocmd{\partheadendvskip}{%
  \vspace*{.5\baselineskip}%
  \noindent\ifnumbered{part}
    {\tikz[remember picture,overlay]\draw(partnumber)-|(0,0)--+(\textwidth,0)|-(partnumber);}
    {\tikz[remember picture,overlay]\draw(partstart)-|(0,0)--+(\textwidth,0)|-(partstart);}%
}{}{}

% chapter
\RedeclareSectionCommand[
  innerskip=1pt,
  font=\mdseries\Large,
  prefixfont=\LARGE,
]{chapter}

\renewcommand*{\chapterformat}{%
  \mbox{\MakeUppercase{%
    \chapappifchapterprefix{\nobreakspace}}{\Huge\thechapter\autodot}%
    \IfUsePrefixLine{}{\enskip}}%
}

\renewcommand\chapterlineswithprefixformat[3]{%
  #2\nobreak%
  \vspace*{\dimexpr-\ht\strutbox}%
  \rule[-\dp\strutbox]{\textwidth}{.4pt}\\*[.9pc]%
  {\color{blue}#3}%
  \vspace*{\dimexpr-\ht\strutbox-\dp\strutbox+.9pc}\nobreak%
  \rule[-\dp\strutbox]{\textwidth}{.4pt}%
  \par\nobreak%
}

% other section levels

\RedeclareSectionCommand[
  beforeskip=-2ex plus -.6ex minus -0.12ex,
  afterskip=.5ex plus .05ex
]{section}

\RedeclareSectionCommands[
  beforeskip=-1.5ex plus -.45ex minus -0.09ex,
  afterskip=.5ex plus .05ex
]{subsection,subsubsection}

\begin{document}
\addpart{Part without number}
\tableofcontents
\part{Part Title}
\chapter{Introduction}
\subsection*{title}
\subsubsection*{title}
\part{Second title}
\end{document}

enter image description here enter image description here enter image description here enter image description here

  • Wonderful. However, I would rather not want to depend on tikz. This package is great, but it takes a huge time to load and I recommend to not load it if not needed. Since this is a template I want to rely only on very basic packages. For example I load etoolbox. xpatch is ok too. I assume that it is possible to draw the lines using basic LaTeX commands. – Matthias Pospiech May 3 '16 at 20:03
  • See my updated answer. – esdd May 4 '16 at 8:23
  • I inserted the code in my template and it works. I also added a link to this site and give credit to the author of the code. The code will go online in a few days – Matthias Pospiech May 4 '16 at 21:09

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.