使用 titlesec 在目录中添加无数章节

使用 titlesec 在目录中添加无数章节

如何将无数章节添加到目录中并titlesec避免\addcontentsline之后\chapter

\documentclass[a4paper]{report}
\usepackage{titlesec,titletoc}


\titleformat{name=\chapter}[display]
 {\normalfont\huge}
 {\chaptername\ \thechapter}
 {1ex}
 {}

\titleformat{name=\chapter,numberless}[display]
  {\normalfont\huge}
  {}
  {0pt}
  {}

\begin{document}

\tableofcontents

\chapter*{xx}
\addcontentsline{toc}{chapter}{xy}

\chapter{xy}

\end{document}
\end{document}

答案1

您可以\chapter使用重新定义xparse,有点像egreg 的这个答案。请注意,我只在使用后才进行重新定义\tableofcontents,否则您会连续两次看到“Contents”,因为以(会将其自己的标题添加到目录中)的形式\tableofcontents引入。\chapter*\tableofcontents

\documentclass{report}
\usepackage[a5paper,landscape]{geometry} % small page size for the screenshot
\usepackage{titlesec,titletoc,xparse}
\usepackage{lipsum}

\titleformat{name=\chapter}[display]
 {\normalfont\huge}
 {\chaptername\ \thechapter}
 {1ex}
 {}

\titleformat{name=\chapter,numberless}[display]
  {\normalfont\huge}
  {}
  {0pt}
  {}

\let\latexchapter\chapter

\newcommand*{\redefineChapter}{%
  \RenewDocumentCommand{\chapter}{ s O{##3} m }{%
    \IfBooleanTF{##1}
      {\latexchapter*{##3}%
       \addcontentsline{toc}{chapter}{##2}}
      {\latexchapter[##2]{##3}}%
  }%
}

\begin{document}

\tableofcontents
\redefineChapter

\chapter*{An unnumbered chapter}
\lipsum[1]

\chapter{A numbered chapter}
\lipsum[1]

\end{document}

在此处输入图片描述

使用此代码,您甚至可以使用\chapter*可选参数来指定目录标题的特殊变体:

\chapter*[Title in the toc]{An unnumbered chapter}

在此处输入图片描述

相关内容