目录中的章节前缀

目录中的章节前缀

我想给某些章节添加特殊的“标签”,将其打印在标题和目录中。我的文档描述了几个“轴”,每个轴包含一个或多个“主题”。这些“轴”前面是介绍,后面是一些结论等。

我使用 titlesec 来指定编号章节和小节的前缀(“Axis”、“Theme”),该前缀在文档文本中有效,但在目录中无效。

知道如何让它在目录中工作吗?

此外,这\addcontentsline{...有点尴尬,应该有更好的方法来定制这一切。

梅威瑟:

\documentclass{article}

\usepackage{titlesec}
\usepackage{titletoc}

\titleformat{\section}
  {\normalfont\Large\bfseries}{Axis \thesection}{1em}{}
\titlespacing*{\section}
  {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

\titleformat{\subsection}
  {\normalfont\large\bfseries}{Theme \thesubsection}{1em}{}
\titlespacing*{\subsection}
  {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

\begin{document}
\title{Some title}
\maketitle
\tableofcontents{}
\section*{Introduction}
\addcontentsline{toc}{section}{Introduction}
\subsubsection*{Sub-intro}
\addcontentsline{toc}{subsection}{Sub-intro}
\section{First real section}
\subsection*{Some more intro}
\addcontentsline{toc}{subsection}{Some more intro}
\subsection{This is important}
\subsection{This is also important}
\section{Second real section}
\subsection*{Some more intro}
\addcontentsline{toc}{subsection}{Some more intro}
\subsection{This is important}
\subsection{This is also important}
\end{document}

答案1

这是使用 的解决方案titletoc。此外,为了使代码更轻量,我使用键\addcontentsline对未编号的章节和子章节进行了自动化。您可以使用 命令在本地停用它(例如,不包括目录本身……)。numberless\titleformat\setboolfalse{addtoc}

\documentclass{article}
\usepackage[x11names]{xcolor}
\usepackage[showframe]{geometry}
\usepackage[explicit]{titlesec}%
\usepackage{titletoc}
\usepackage{etoolbox}
\newbool{addtoc}%initial value: false

\titleformat{\section}[hang]
{\normalfont\Large\bfseries}{Axis \thesection}{1em}{#1}
\titleformat{name=\section, numberless}[hang]
{\normalfont\large\bfseries}{}{0em}{#1}[\ifbool{addtoc}{\addcontentsline{toc}{section}{#1}}{}]
\titlespacing*{\section}
{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

 \titleformat{\subsection}
 {\normalfont\large\bfseries}{Theme \thesubsection}{1em}{#1}
 \titleformat{name=\subsection, numberless}
 {\normalfont\large\bfseries}{}{0em}{#1}[\ifbool{addtoc}{\addcontentsline{toc}{subsection}{#1}}{}]
 \titlespacing*{\subsection}
 {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}

\titlecontents{section}[3.5em]{\medskip\bfseries}%
{\contentslabel[\color{IndianRed3}Axis \thecontentslabel.]{3em}\enspace}%numbered
{\hskip-3em}%numberless
{\titlerule*[1.2pc]{.}\contentspage}%

\titlecontents{subsection}[6.7em]{\smallskip\bfseries}%
{\contentslabel[Theme \thecontentslabel.]{4.6em}\enspace}%numbered
{\hskip-4.6em}%numberless
{\titlerule*[1.2pc]{.}\contentspage}%

\begin{document}

\title{Some title}
\maketitle
\tableofcontents
\clearpage
\booltrue{addtoc}

\section*{Introduction}
\subsubsection*{Sub-intro}
\section{First real section}
\subsection*{Some more intro}
\subsection{This is important}
\subsection{This is also important}
\section{Second real section}
\subsection*{Some more intro}
\subsection{This is important}
\subsection{This is also important}

\end{document} 

在此处输入图片描述

答案2

\usepackage{fmtcount}

\renewcommand{\thesection}{\ORDINALstring{section} AXIS}

将会为您提供也在目录中的“第一轴”,“第二轴”等。

因为“\thesection”已经存在,所以必须使用“\renewcommand”,其功能是用您自己的版本替换已经存在的命令。

相关内容