在部分中使用 raisebox 時換行

在部分中使用 raisebox 時換行

如何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}

相關內容