我正在尝试将其中一个答案改编为这个问题这样只有部分文本(而不是部分编号)才具有彩色背景。不幸的是,使用\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
首先,不要使用titlesec
。scrbook
它们不兼容,并且对 的支持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}