在自定义标签枚举环境中引用

在自定义标签枚举环境中引用

我想引用两级枚举环境的项目编号。下面的代码给出了正确的项目编号,但当我在文本中引用它时,出现了问题 - 请参阅下面的代码。它当然应该说“我更喜欢选项 2.1”。感谢您的帮助。

\documentclass[11pt]{article}

\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
\renewcommand{\labelenumii}{\theenumii}

\begin{document}

    \begin{enumerate}

    \item Hallo
    \item Hi

        \begin{enumerate}

        \item \label{item-one} Good By
        \item \label{item-two} Have a nice time

        \end{enumerate}
\end{enumerate}


I prefer option \ref{item-one}

\end{document}

上述代码的输出

答案1

我建议使用枚举项包,因为它使这样的事情变得非常简单。对于您的示例,您可以生成

在此处输入图片描述

使用代码:

\documentclass[11pt]{article}
\usepackage{enumitem}

\begin{document}

  \begin{enumerate}

    \item hallo
    \item hi

    \begin{enumerate}[label=\arabic{enumi}.\arabic*]

      \item \label{item-one} good by
      \item \label{item-two} have a nice time

    \end{enumerate}
  \end{enumerate}

  I prefer option \ref{item-one}

\end{document}

还提供了许多其他功能enumitem来定制enumerateitemizedescription环境,包括定义每个环境的变体。有关详细信息,请参阅手册。

答案2

你快到了。而不是

\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
\renewcommand{\labelenumii}{\theenumii}

尝试

\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\labelenumii}{\theenumi.\theenumii}
\makeatletter
\renewcommand{\p@enumii}{\theenumi.} % for cross-references
\makeatletter

相关内容