章节标题颜色代码使目录编号

章节标题颜色代码使目录编号

我正在寻找一种方法来将颜色框用作部分标题的背景。我得到的答案如下在此主题上成功做到了这一点。但它有一个令人不快的副作用,即在目录前面放置一个与它现在所在的部分相对应的数字。

例如,如果我将目录放在第 3 节,它将正确显示所有节的列表,但“目录”前面有一个“3”。

如果我把它放在第 4 节,那么它前面会有一个“4”

我认为我的程序与彩色部分标题的打印方式有关,但由于我是一个完全的初学者,我很难弄清楚如何改变它而不丢失它提供的格式

这是我使用的代码。

多谢

    %This is for a section, but you can extend it easily for subsections with a similar scheme:

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

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

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

\begin{document}

\lipsum[1]
\section{This is the title}
\lipsum[2]
\end{document}
%If you want white on colored text, just modify the \colorsection command, for example as

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

答案1

根据当前定义,\thesection计数器将用于编号和未编号部分,这显然是不需要的。使用键numberless,您可以为未编号部分提供定义,添加彩色背景但不添加编号(还请注意 选项的使用explicittitlesec

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

\titleformat{name=\section}[block]
  {\sffamily\large}
  {}
  {0pt}
  {\colorbox{blue!20}{\parbox{\dimexpr\textwidth-2\fboxsep}{\strut\thesection~#1\strut}}}
\titleformat{name=\section,numberless}[block]
  {\sffamily\large}
  {}
  {0pt}
  {\colorbox{blue!20}{\parbox{\dimexpr\textwidth-2\fboxsep}{\strut#1\strut}}}
\titlespacing*{\section}{0pt}{\baselineskip}{\baselineskip}

\begin{document}

\chapter{Test chapter}
\section{Numbered section}
\lipsum[4]
\section*{Unnumbered section}
\lipsum[4]

\end{document}

在此处输入图片描述

相关内容