部分标题(titlesec)中的本地目录(etoc)

部分标题(titlesec)中的本地目录(etoc)

titlesec我在合并和时遇到问题etoc,它们兼容吗?我想使用格式,titlesec然后在部分标题之后,在同一页面上,我想添加本地目录。但是我目前的结果是一个空的Content。我有以下格式titlesec

 \titleformat{\part}[frame]
 {\normalfont\color{gray}}
 {\filright
 \enspace \large PART \thepart\enspace}
 {20pt}
 {\Huge\bfseries\filcenter\color{black}}
 [{\localtableofcontents*
 }]

当我在命令\localtableofcontents*后添加 manualy 时,它起作用了\part{...}。但是它 \localtableofcontents*在下一页,我希望它在同一页上,就在部分标题之后。提前致谢!

答案1

用这个 mwe 进行测试:

\documentclass{article}
\usepackage{color}
\definecolor{gray}{gray}{0.75}
\usepackage{titlesec}
\usepackage{etoc}\etocsettocstyle{}{}
\titleformat{\part}[frame]
 {\normalfont\color{gray}}
 {\filright
 \enspace \large PART \thepart\enspace}
 {20pt}
 {\Huge\bfseries\filcenter\color{black}}
 [\localtableofcontents]
\begin{document}
%\errorcontextlines5
%\tracingmacros1
\part{first part}
\section{A}
\section{B}
\section{C}

\part{second part}
\section{U}
\section{V}
\section{W}

\end{document}

显示两个问题:

  1. titlesec抱怨“嵌套标题”,因为\localtableofcontents会使用一些\section*。我添加了\etocsettocstyle{}{}以抑制它。

  2. 更严重的titlesec问题\part\addcontentsline{toc}{part}... 执行“after-code”部分,即 after\localtableofcontents被执行。这意味着etoc界定本地目录的机制被破坏,因为etoc无法知道它是在 之后\part

因此,2. 看起来是确定的。您不能这样做。只需在用您认为最方便的任何方式\localtableofcontents强行说服您不要执行 a 后,手动插入到适当的位置即可(根据您的问题,该问题未说明您正在使用哪个文档类)。类没有问题,如本例所示:titlesec\clearpagearticle

\documentclass{article}
\usepackage{color}
\definecolor{gray}{gray}{0.75}
\usepackage{titlesec}
\usepackage{etoc}\etocsettocstyle{\color{gray}}{}
\titleformat{\part}[frame]
 {\normalfont\color{gray}}
 {\filright
 \enspace \large PART \thepart\enspace}
 {20pt}
 {\Huge\bfseries\filcenter\color{black}}
\begin{document}
\part{first part}
\localtableofcontents
\section{A}
\section{B}
\section{C}

\part{second part}
\localtableofcontents
\section{U}
\section{V}
\section{W}

\end{document}

在此处输入图片描述

相关内容