
Извините, если этот вопрос был задан где-то еще. Я искал везде, но не смог найти.
Я пишу документ с большим количеством списков и ссылок. Я хотел бы сослаться на запись списка, не выписывая явно \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
свойству списка.