我有两个任务要完成,我在其他线程上找到了两个独立的解决方案。但是,当这些解决方案组合使用时,它们会发生冲突,所以我正在寻找一种兼容两者的方法
任务1:使用字母标签来标记子部分(例如 A、B、C 等)。这可以按照\renewcommand\thesubsection{\Alph{subsection}}
@GonzaloMedina 的建议来实现回答
任务 2:自动将\section*
条目添加到目录中。这回答@egreg 建议坚持使用纯文本\section
并使用\setcounter{secnumdepth}{0}
删除目录中的编号
如果我能够成功地将这两个任务结合起来(但我还没有),我想要的渲染效果将如下所示
但是,使用@egreg 的解决方案进行任务 2 会导致 A、B、C 子部分标签消失。我尝试了 @MikeRenfro 在同一线程中提出的另一个建议,即添加\renewcommand{\thesection}{}
,但正如作者提到的那样,它会留下不必要的缩进,这在审美上并不令人愉悦。在单独的线,@Vser 建议\addcontentsline{toc}{section}{\nameref{sec:intro}}
,但在我的测试中,这留下了一行纯文本,...
没有自动填充部分名称。在没有帮助的情况下手动输入每个名称\nameref
会非常耗时且难以维护。
编辑于7/28/20:在我的实际文档中,我使用\tcolorbox
它来帮助直观地定义节标题。例如,以下 MWE 及其渲染
\documentclass[a4paper,10pt,twocolumn]{book}
\usepackage{cuted}
\usepackage{tcolorbox}
\usepackage[explicit]{titlesec}
\setcounter{tocdepth}{1}
\titlespacing*{\section}{0pt}{0pt}{0pt}
\titleformat{name=\section, numberless}{\setcounter{subsection}{0}\normalfont\Large\bfseries}{}{0pt}{}[\addcontentsline{toc}{section}{#1}#1]
\renewcommand\thesubsection{\Alph{subsection}} % Accomplishes task 1
\begin{document}
\tableofcontents
\chapter{Chapter}
\begin{strip}
\begin{tcolorbox}[title=\section*{An unnumbered section}]
Other content here..
\end{tcolorbox}
\end{strip}
\subsection{First Subsection}
\subsection{Second Subsection}
\end{document}
最初,我已将其包含\titlespacing*{\section}{0pt}{0pt}{0pt}
在序言中,以确保章节标题文本的上方、下方或左侧没有多余的空间。但是,@Bernard 的当前解决方案在章节标题上方添加了一个额外的空白行,如渲染图所示
答案1
您可以使用 titlesec 中的密钥和选项\titleformat
获得numberless
您想要的内容:explicit
\documentclass{book}
\usepackage[explicit]{titlesec,}
\setcounter{tocdepth}{1}
\titlespacing*{\section}{0pt}{0pt}{0pt}
\titleformat{name=\section, numberless}{\setcounter{subsection}{0}\normalfont\Large\bfseries}{}{0pt}{}[\addcontentsline{toc}{section}{#1}#1]
\renewcommand\thesubsection{\Alph{subsection}} % Accomplishes task 1
\begin{document}
\tableofcontents
\chapter{Chapter}
\section{A numbered section}
\subsection{Subsection}
\section*{An unnumbered section}
\end{document}