我想给某些章节添加特殊的“标签”,将其打印在标题和目录中。我的文档描述了几个“轴”,每个轴包含一个或多个“主题”。这些“轴”前面是介绍,后面是一些结论等。
我使用 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”,其功能是用您自己的版本替换已经存在的命令。