1

How to break the line when using raisebox command in \section. My MWE is :

\documentclass{book}
\usepackage[explicit]{titlesec}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{xcolor,lipsum,mdframed}

\definecolor{sectcolor}{cmyk}{0,1,.75,.39}
\definecolor{sectbgcolor}{RGB}{0,106,168}
\definecolor{sectsubbgcolor}{RGB}{0,139,191}

\renewcommand{\thesection}{\thechapter\Alph{section}}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}

\makeatletter
\titleformat{\section}
  {\fontsize{18}{20}\selectfont\color{white}\bfseries}
  {\llap{\smash{\parbox[t]{2em}{\raggedleft%
      \colorbox{sectcolor}{%
        \makebox[\dimexpr2em-2\fboxsep\relax][r]{%
          \hfill\strut\thesection
        }%
      }\\[1ex]
    \includegraphics[width=1.5em]{image-1}\\[2pt]
    \includegraphics[width=1.5em]{image-1}\\[2pt]
    \includegraphics[width=1.5em]{image-1}\\[2pt]
    }}\hspace*{0.5em}}%
  }
  {0em}
  {\makebox[\linewidth][l]{\colorbox{sectbgcolor}{\parbox[t]    {\dimexpr\paperwidth-\oddsidemargin-1in-2\fboxsep-5pt\relax}{%
    \strut\fontsize{18}{20}\selectfont\raisebox{-2.5pt}[0pt][0pt]{#1}%
    \if\sectionsubtitle\empty
    \else
      \hspace{5pt}\smash{\colorbox{sectsubbgcolor}    {\strut\large\sectionsubtitle}}%
    \fi}
    }}%
  }

\makeatother

\def\sectionsubtitle{\empty}
\newcommand\Ssection[3][]{%
  \gdef\sectionsubtitle{#3}\section[#1]{#2}\gdef\sectionsubtitle{\empty}%
}

\begin{document}

\chapter{Chapter Title Here}
\section{Count systems}
\lipsum[1]
\Ssection{Number systems}{Consolidating}
\lipsum[1]
\Ssection{Highest common factor and lowest common\hfil\break     multiple}{Consolidating}
\end{document}
  • Remove the text \raisebox{0pt}[0pt][0pt] from your code. This means that the code reads: ...\selectfont{#1}... Why the \raisebox is here? What means "box" in the name \rasebox? That it is unbreakable compact element. – wipet Dec 11 '14 at 6:57
  • @wipet: Sorry. I have updated my questions. I would like to move the section head in top. How to move the section head without raisebox in this section head? – Balaji Dec 11 '14 at 7:03
  • Using \struts. Use \vrule height15pt width0pt instead \strut before \fontsize, for example. – wipet Dec 11 '14 at 7:18
1

Firstly, you should not be adding manual breaks to titles. You should rather set-up your titling macro so that it spreads it over several lines as necessary. In your case building a box to hold the background colour and putting a parbox inside to hold the text will accomplish this.

Secondly, I believe you are using a raisebox because the heights and depths are wrong. This seems to be caused by using the wrong \strut. Your coding \strut\fontszie{...}\selectfont means the strut is not adjusted to the new font size. Instead write it in this order `\fontsize{...}\selectfont\strut.

Sample output

\documentclass{book}

\usepackage[explicit]{titlesec}
\usepackage{lmodern}
\usepackage[demo]{graphicx}
\usepackage{xcolor,lipsum}

\definecolor{sectcolor}{cmyk}{0,1,.75,.39}
\definecolor{sectbgcolor}{RGB}{0,106,168}
\definecolor{sectsubbgcolor}{RGB}{0,139,191}

\renewcommand{\thesection}{\thechapter\Alph{section}}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}

\titleformat{\section}
  {\color{white}\fontsize{18}{20}\bfseries}
  {\llap{\smash{\parbox[t]{2em}{\raggedleft%
      \colorbox{sectcolor}{%
        \makebox[\dimexpr2em-2\fboxsep\relax][r]{%
          \hfill\strut\thesection
        }%
      }\\[1ex]
    \includegraphics[width=1.5em]{image-1}\\[2pt]
    \includegraphics[width=1.5em]{image-1}\\[2pt]
    \includegraphics[width=1.5em]{image-1}\\[2pt]
    }}\hspace*{0.5em}}%
  }
  {0em}
  {\colorbox{sectbgcolor}{%
  \makebox[\dimexpr\paperwidth-\oddsidemargin-1in-2\fboxsep-5pt\relax]{%
    {\parbox[t]{\linewidth}{%
      \raggedright\fontsize{18}{20}\selectfont\strut #1%
      \if\sectionsubtitle\empty
      \else
      \hspace{5pt}%
      \smash{\colorbox{sectsubbgcolor}{\large\strut\sectionsubtitle}}%
      \fi}}\hfill
      }}%
}

\def\sectionsubtitle{\empty}
\newcommand\Ssection[3][]{%
  \gdef\sectionsubtitle{#3}\section[#1]{#2}\gdef\sectionsubtitle{\empty}%
}

\begin{document}

\chapter{Chapter Title Here}
\section{Count systems}
\lipsum[1]
\Ssection{Number systems}{Consolidating}
\lipsum[1]
\Ssection{Highest common factor and lowest common multiple}{Consolidating}
\end{document}
  • How do indent the section title and linebreaking section title also? – Balaji Dec 11 '14 at 9:25
  • You can add space before the \parbox if you wish. – Andrew Swann Dec 11 '14 at 9:41

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.