如何使子列表继承项目编号

如何使子列表继承项目编号

我希望子列表继承其上方列表中子列表之前最后一个项目的编号。我希望实现与我的最小示例相同的效果,而无需硬编码1.到子列表的枚举部分。

在 的文档中找不到任何enumitem允许我访问该数字的宏。通常使用label*=而不是 的解决方案label=不起作用,因为我已经将其§作为编号的一部分。

\documentclass{article}
\usepackage{enumitem}
\begin{document}

\begin{enumerate}[label=\arabic* §]
    \item Item 1

    \begin{enumerate}[label=1.\arabic* §]
        \item Item 2
    \end{enumerate}
\end{enumerate}

\end{document}

列出我想要的结果

答案1

要访问外部列表中某个项目的计数器值,请使用\theenumi(i代表列表的第一级,不是第一項)。

现在,诀窍是利用ref选项来更改打印作为参考时的计数器的格式。

换句话说,\theenumi会打印1 §(因为label=\arabic* §),然后内部列表会打印1 §.1 §(因为label=\theenumi.\arabic* §),这不是您想要的。

ref=\arabic*因此,使用第一个列表中的选项可以使\theenumi等于1.1 §,正如所希望的那样。

在此处输入图片描述

进一步阅读:5. 全局设置来自用户指南。

平均能量损失

\documentclass{article}
\usepackage{enumitem}
\begin{document}

\begin{enumerate}[label=\arabic* §, ref=\arabic*]
    \item Item 1\label{foo}

    \begin{enumerate}[label=\theenumi.\arabic* §, ref=\theenumi.\arabic*]
        \item Item 2\label{faa}
    \end{enumerate}
\end{enumerate}

In \ref{foo} we find \ref{faa}.
\end{document}

答案2

以下是比以下更通用的解决方案西格尔的

在此处输入图片描述

\documentclass{article}

\usepackage{enumitem}

\makeatletter
\newcommand{\prevlabel}{\csname theenum\romannumeral\numexpr\enit@depth-1\endcsname}
\makeatother

\begin{document}

\begin{enumerate}[label=\arabic* §,ref=\arabic*]
  \item Item 1

  \begin{enumerate}[label=\prevlabel.\arabic* §,ref=\prevlabel.\arabic*]
    \item Item 2

    \begin{enumerate}[label=\prevlabel.\arabic* §]
      \item Item 3
    \end{enumerate}
  \end{enumerate}
\end{enumerate}

\end{document}

\theenum<roman>它使用当前enumerate深度(存储在)进行拾取\enum@depth

相关内容