11

我的 LaTeX 文档中有一个列表/子列表结构。默认情况下,子列表用字母分隔,所以你最终会得到:

1. Item
    (a) sub item
    (b) sub item

在我的文档中,我有超过 26 个子项目,所以我遇到了一个计数器溢出错误,我通过重写子项目标签来修复它,所以它们现在看起来像这样

1. Item
    1.1 sub item
    1.2 sub item

我在其中一个项目上贴了一个标签,以便以后可以参考具体步骤。问题是当引用被渲染时,它是使用一个字母来渲染的,而不是子项目的编号。

这是一个显示问题的示例文档。

\documentclass[11pt]{report}

\begin{document}

\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}

\begin{enumerate}
    \item Item
    \begin{enumerate}
        \item \label{lbl} Label here
    \end{enumerate}
\end{enumerate}

Ref: \ref{lbl}

\end{document}

这将呈现如下:

1. Item
    1.1 Label here
Ref: 1a

所以不是说“Ref:1.1”,而是使用“Ref:1.a”。有没有办法让 \ref 使用源枚举的编号?如果没有,是否可以生成对包含超过 26 个项目的子列表中项目的正确引用?

4

2 回答 2

10

我正在查看我的 The LaTeX Companion,第 129 页的副本,从我所看到的情况来看,我会建议如下内容:

\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\labelenumii}{\theenumi.\theenumii.}
\makeatletter
\renewcommand{\p@enumii}{\theenumi.}
\makeatother

不过,我目前无法访问工作的 LaTeX 环境来测试它。

于 2009-03-27T20:41:27.893 回答
3

因此,对于 2 个嵌套列表,应按以下方式完成:

\begin{enumerate}
\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\theenumiii}{\arabic{enumiii}}

\renewcommand{\labelenumi}{\theenumi.}
\renewcommand{\labelenumii}{\theenumi.\theenumii.}
\renewcommand{\labelenumiii}{\theenumi.\theenumii.\theenumiii.}

\makeatletter
\renewcommand{\p@enumii}{\theenumi.}
\renewcommand{\p@enumiii}{\theenumi.\theenumii.}
\makeatother

...

\end{enumerate}

我花了太多时间来理解它。我希望这会有所帮助,因为该线程对我有所帮助。

谢谢。

于 2012-05-18T08:18:20.957 回答