使用 enumitem 进行引用

使用 enumitem 进行引用

如果这个问题在其他地方被问到,我很抱歉。我到处搜索,但没找到。

我正在写一个包含大量列表和大量引用的文档。我想引用列表中的条目,而无需明确写出\label{}每个条目。我以为该enumitem软件包可以解决这个问题,但也许我错了。

以下是一个例子:

\begin{theorem} There are four equivalent things
\begin{enumerate}[label=(\roman{*}), ref=(\roman{*})]
   \item Thing 1
   \item Thing 2
   \item Thing 3
   \item Thing 4
\end{enumerate}

随后在文章中我将其称为

Theorem~\ref[(ii)]{thm:4.1} 

文本显示为Theorem ??(ii)]thm:4.1

这可能吗?或者这个要求太高了?

答案1

这里的主要问题是\ref不支持选修的参数。因此,第一个标记[被认为是强制的传递给 的参数\ref,该参数没有\label与之关联的适当参数。相反,您可以使用以下选项之一,所有这些选项都默认通过以下方式支持enumitem

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}\label{thm:labelA} There are four equivalent things
\begin{enumerate}[label=(\roman*), ref=(\roman*)]
   \item \label{thm:labelA:thing1} Thing 1
   \item \label{thm:labelA:thing2} Thing 2
   \item \label{thm:labelA:thing3} Thing 3
   \item \label{thm:labelA:thing4} Thing 4
\end{enumerate}
\end{theorem}

Theorem~\ref{thm:labelA}\ref{thm:labelA:thing2}.

\begin{theorem}\label{thm:labelB} There are four equivalent things
\begin{enumerate}[label=(\roman*), ref=\thetheorem(\roman*)]
   \item \label{thm:labelB:thing1} Thing 1
   \item \label{thm:labelB:thing2} Thing 2
   \item \label{thm:labelB:thing3} Thing 3
   \item \label{thm:labelB:thing4} Thing 4
\end{enumerate}
\end{theorem}

Theorem~\ref{thm:labelB:thing2}.

\end{document}

第一种方法需要手动分离环境标签和枚举项,而第二种方法是通过添加到列表的属性theorem来一步完成两者的组合。\thetheoremref

相关内容