交叉引用枚举项目

交叉引用枚举项目

我需要交叉引用枚举中的项目。这是我所拥有的。

\documentclass[12pt]{article}
\begin{document}

\begin{enumerate}
    \item Solve $x^2=1$.
    \item Solve $x^2=4$.
    \begin{enumerate}
        \item \label{enum:1} Find all roots.
        \item For each root in (\ref{enum:1}), subtract 2 from it.
    \end{enumerate}
\end{enumerate}

\end{document}

在此处输入图片描述

运行正常,但我想在最后一行使用 (a) 而不是 (2a)。换句话说,我只想在当前枚举中使用标签。谢谢。

答案1

这是使用该enumitem包的另一种解决方案。通过它我们可以配置对项目的引用的外观。在这个 MWE 中,我enumerate全局更改了第二级的引用格式。

另外一个好处是我们不用处理内部事务。

\documentclass[12pt]{article}
\usepackage{enumitem}
\setlist[enumerate,2]{
  ref=(\alph*),
}
\begin{document}

\begin{enumerate}
    \item Solve $x^2=1$.
    \item Solve $x^2=4$.
    \begin{enumerate}
        \item \label{enum:1} Find all roots.
        \item For each root in \ref{enum:1}, subtract 2 from it.
    \end{enumerate}
\end{enumerate}

\end{document}

在此处输入图片描述

答案2

关键是重新定义宏\p@enumii,它包含这种情况下使用的前缀:

\documentclass[12pt]{article}
\begin{document}

\begin{enumerate}
    \item Solve $x^2=1$.
    \item Solve $x^2=4$.
    \begin{enumerate}
        \makeatletter
        \renewcommand*\p@enumii{}
        \makeatother
        \item \label{enum:1} Find all roots.
        \item For each root in (\ref{enum:1}), subtract 2 from it.
    \end{enumerate}
    \item To show that the redefinition is local:
    \begin{enumerate}
        \item \label{enum:2} Find all roots.
        \item For each root in (\ref{enum:2}), subtract 2 from it.
    \end{enumerate}
\end{enumerate}

\end{document}

相关内容