将列表项添加到目录中

将列表项添加到目录中

我有以下形式的列表

\begin{enumerate}
\item PARTIES 

\begin{enumerate}
\item \textbf{Party A} (Buyers) and
\item \textbf{Party B} (Sellers) 
\end{enumerate}
\end{enumerate}

我想根据第一个(外部)列表项创建目录。每个外部/顶级列表项都有多个嵌套列表项。

生成的目录如下

1)当事人...... 2

答案1

由于\item没有强制参数,这并不容易。但是使用\RenewDocumentCommandfromxparse可以提供optional argumentusing {}`(其他参数可以用 d 类型完成)

也应该进入目录的项目条目必须用 指定{...},否则该项目条目只会被排版,而不会包含在目录中。

请注意,如果\item[]{}必须[]和之间的空间,{}以使其工作。

我将此功能限制为enumerate嵌套深度1

\documentclass{article}

\usepackage{letltxmacro}
\usepackage{xparse}

\makeatletter
\LetLtxMacro\latex@std@item\item

\RenewDocumentCommand{\item}{og}{%
  \ifnum \@enumdepth = \@ne
  \IfValueTF{#1}{%
    \IfValueTF{#2}{%
      \latex@std@item[#1] \addcontentsline{toc}{section}{#2}#2%
    }{%
      \latex@std@item[#1]
    }%
  }{%
    \IfValueTF{#2}{%
      \latex@std@item  \addcontentsline{toc}{section}{#2}#2%
    }{%
      \latex@std@item%
    }%
  }%
  \else
  \latex@std@item \IfValueTF{#2}{#2}%
  \fi
}



\makeatother

\begin{document}
\tableofcontents



\begin{enumerate}
\item {PARTIES}
\begin{enumerate}
\item \textbf{Party A} (Buyers) and
\item \textbf{Party B} (Sellers) 
\begin{enumerate}
\item \textbf{Party C} Deeper nested
\end{enumerate} 
\end{enumerate}
\item {Groups}

\item {Categories}

\item[\textbullet]{Types}
\end{enumerate}

\end{document}

在此处输入图片描述

相关内容