我想enumerate
通过在列表中应用标签来引用环境中的所有项目。我试过这个
\documentclass{article}[10pt]
\usepackage{amsmath, hyperref, enumerate}
\begin{document}
\setcounter{section}{1}
\begin{enumerate}\label{listref}
\item Mary
\item Had
\item A little
\item Lamb
\end{enumerate}
The poem \eqref{listref} is one of the best known childrens' rhymes.
\end{document}
但这并没有产生所需的结果。我认为标记列表中的第一个和最后一个项目是一种选择,但我想知道是否有更流畅的方式来做到这一点。
答案1
对于可以引用的编号环境,LaTeX 提供了定理环境。它们不仅仅是定理或定义,你可以更广泛地使用它们。你可以
- 使用标题,
- 将计数器连接到分区,
- 股票柜台,
- 而不必关心定义环境和管理计数器。
此外,还有几个用于定制这些编号环境的软件包,例如amsthm
,ntheorem
和thmtools
。它们提供了预定义样式和定义您自己的样式的方法。
例子:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{poem}{Poem}
\begin{document}
\begin{poem}\mbox{}\\[-\baselineskip]
\begin{enumerate}\label{listref}
\item Mary
\item Had
\item A little
\item Lamb
\end{enumerate}
\end{poem}
\noindent The poem \eqref{listref} is one of the best known childrens' rhymes.
\end{document}
要选择用于自定义格式的定理包,请查看:定理包:使用哪一个,哪些会冲突?
答案2
我想你想要这样的东西:
\newcounter{poemcnt}
\newenvironment{poem}%
{\refstepcounter{poemcnt}\par Poem~\arabic{poemcnt}\begin{verse}}%
{\end{verse}}
\begin{poem}
\label{poemref}
Mary\\
Had\\
A Little\\
Lamb
\end{poem}
The poem~\ref{poemref} is one of the best known childrens' rhymes.
PS Mico 要求可选标题。这有点复杂 :)
\newcounter{poemcnt}
\makeatletter
\newenvironment{poem}[1][]%
{\refstepcounter{poemcnt}\par Poem~\arabic{poemcnt}%
\def\@tempa{#1}\ifx\@tempa\@empty\else\space(#1)\fi
\begin{verse}}%
{\end{verse}}
\makeatother
\begin{poem}[Mary's Little Lamb]
\label{poemref}
Mary\\
Had\\
A Little\\
Lamb
\end{poem}
答案3
为了将整首诗作为一个整体进行交叉引用,您需要将其放置在一个本身已编号的环境中(更具体地说,一个带有某种计数器的环境或分组)。例如,可以通过将标签附加到各个项目来交叉引用枚举列表中的项目。考虑创建一个诗歌枚举列表,如下例所示,它也使用该cleveref
包及其将可选参数分配给\label
语句的功能。
\documentclass{article}
\usepackage[colorlinks=true]{hyperref}
\usepackage{cleveref}
\crefname{poem}{poem}{poems}
\begin{document}
\section*{Nursery Rhymes}
\begin{enumerate}
\item Mary Had a Little Lamb \label[poem]{poem:mary}
\begin{verse}
Mary had a little lamb\\
Its fleece was white as snow\\
And everywhere that Mary went\\
The lamb was sure to go.
\end{verse}
\item Humpty Dumpty \label[poem]{poem:humpty}
\begin{verse}
Humpty Dumpty sat on a wall\\
Humpty Dumpty had a great fall\\
And all the king's horses and all the king's men\\
Couldn't put Humpty together again.
\end{verse}
\end{enumerate}
\Cref{poem:mary,poem:humpty} are among the best known nursery rhymes.
\end{document}
答案4
请记住,即使向列表中添加了(可引用的)计数器,列表也不会默认在文本中显示其“数字”。考虑将列表放在环境中,figure
并为该图提供一个名称\caption
——这样,您就可以引用该图。
注意:\eqref{listref}
MWE 中不会产生任何内容,因为文档中没有任何内容可供引用。\section{foo}
在 之后立即添加\begin{document}
,您\eqref
将(错误地)引用第 1 节。