如何将无数章节添加到目录中并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}