Как разорвать строку при использовании raisebox
команды в \section
. Мой MWE:
\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}
решение1
Во-первых, вам не следует добавлять ручные разрывы в заголовки. Вместо этого вам следует настроить макрос для заголовков так, чтобы он распределял их по нескольким строкам по мере необходимости. В вашем случае создание блока для хранения фонового цвета и размещение parbox
внутри него текста позволит добиться этого.
Во-вторых, я полагаю, что вы используете raisebox, потому что высоты и глубины неверны. Похоже, это вызвано использованием неправильного \strut
. Ваш код \strut\fontszie{...}\selectfont
означает, что распорка не настроена на новый размер шрифта. Вместо этого напишите ее в таком порядке `\fontsize{...}\selectfont\strut.
\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}