Wie unterbreche ich die Zeile, wenn ich raisebox
einen Befehl in verwende \section
? Mein MWE ist:
\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}
Antwort1
Erstens sollten Sie keine manuellen Umbrüche in Titel einfügen. Sie sollten Ihr Titelmakro lieber so einrichten, dass es die Umbrüche bei Bedarf über mehrere Zeilen verteilt. In Ihrem Fall parbox
können Sie dies erreichen, indem Sie eine Box für die Hintergrundfarbe erstellen und eine Box für den Text darin platzieren.
Zweitens glaube ich, dass Sie eine Raisebox verwenden, da die Höhen und Tiefen falsch sind. Dies scheint durch die Verwendung des falschen verursacht zu werden \strut
. Ihr Code \strut\fontszie{...}\selectfont
bedeutet, dass die Strebe nicht an die neue Schriftgröße angepasst wird. Schreiben Sie sie stattdessen in dieser Reihenfolge `\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}