如果这个问题在其他地方被问到,我很抱歉。我到处搜索,但没找到。
我正在写一个包含大量列表和大量引用的文档。我想引用列表中的条目,而无需明确写出\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
来一步完成两者的组合。\thetheorem
ref