带有阴影背景的章节标题跨越 \textwidth,具有统一的基线

带有阴影背景的章节标题跨越 \textwidth,具有统一的基线

我正在尝试将其中一个答案改编为这个问题这样只有部分文本(而不是部分编号)才具有彩色背景。不幸的是,使用\parbox似乎会导致基线不均匀(如果仔细观察,您会发现“这是标题”的基线比“0.1”低):

在此处输入图片描述

我想要的是类似下面的文本,但阴影一直延伸到右侧。使用\parbox似乎是问题所在(见这里例如),但我不知道如何使阴影起作用。

\documentclass[a4paper]{scrbook}
\usepackage{xcolor,lipsum}
\usepackage{titlesec}

\titleformat{name=\section}[block]
  {\sffamily\large}
  {}
  {0pt}
  {\colorsection}
\titlespacing*{\section}{0pt}{\baselineskip}{\baselineskip}

\newcommand{\colorsection}[1]{%
  \thesection\ \colorbox{blue!20}{\parbox{\dimexpr\textwidth-2\fboxsep}{#1}}}

\begin{document}

\section{This is the title}
\noindent{\sffamily\large 0.1 \colorbox{blue!20}{This is the title}}
\end{document}

答案1

首先,不要使用titlesecscrbook它们不兼容,并且对 的支持titlesec将在不久的将来被取消。

使用技巧是\parbox[t]。您还必须注意章节编号的空间。

\documentclass[a4paper]{book}
\usepackage{xcolor,lipsum}
\usepackage{titlesec}

\titleformat{name=\section}[block]
  {\sffamily\large}
  {}
  {0pt}
  {\colorsection}
\titlespacing*{\section}{0pt}{\baselineskip}{\baselineskip}

\newlength{\secnumberwd}

\newcommand{\colorsection}[1]{%
  \settowidth\secnumberwd{\thesection\ }%
  \thesection\ \colorbox{blue!20}{\parbox[t]{\dimexpr\textwidth-2\fboxsep-\secnumberwd}{#1}}% 
}

\begin{document}

\section{This is the title}

\noindent{\sffamily\large 0.1 \colorbox{blue!20}{This is the title}}

\end{document}

在此处输入图片描述

答案2

这里建议使用scrbook不带包的titlesec,因为titlesec不应与 KOMA-Script 类一起使用。您可以重新定义\sectionlinesformat

\documentclass{scrbook}
%\providecommand*{\Ifstr}{\ifstr}% needed up to and including KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif

\usepackage{xcolor}

\RedeclareSectionCommand[
  beforeskip=\baselineskip,
  afterskip=\baselineskip,
  afterindent=false,
  font=\large\mdseries
]{section}
\renewcommand*\sectionformat{\thesection\ }
\colorlet{sectionbgcolor}{blue!20}

\newcommand*\originalsectionlinesformat{}
\let\originalsectionlinesformat\sectionlinesformat
\renewcommand*\sectionlinesformat[4]{%
  \Ifstr{#1}{section}
    {\colorsectionlinesformat{#1}{#2}{#3}{#4}}% for level section
    {\originalsectionlinesformat{#1}{#2}{#3}{#4}}% original definition for other levels using style=section
}

\newlength{\secnumberwd}
\makeatletter
\newcommand{\colorsectionlinesformat}[4]{%
  \settowidth\secnumberwd{\hskip #2#3}%
  \@hangfrom{\hskip #2#3}{%
    \colorbox{#1bgcolor}{%
      \parbox[t]{\dimexpr\textwidth-2\fboxsep-\secnumberwd}{#4}%
  }}}
\makeatother

\begin{document}
\section{This is the title}
{\sffamily\large 0.1 \colorbox{blue!20}{This is the title}\par}
\addsec{Unnumbered section}
\end{document}

在此处输入图片描述

相关内容