我想知道是否存在一些 LaTeX 宏/命令(我不知道确切的术语),给定一个标签列表,给出最低/最大标签值并具有相同的行为\ref{}
(即,在 pdf 中插入指向引用对象的超链接)。
考虑以下简单的例子,其中定义了 4 个不同的方程。
\documentclass{article}
\usepackage[margin=3cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
\begin{equation}
\label{eq:energy_mass_lightspeed}
E = mc^2
\end{equation}
\begin{equation}
\label{eq:basic_arithmetics}
2 + 2 = 4
\end{equation}
\begin{equation}
\label{eq:pythagorean_theorem}
a^2 + b^2 = c^2
\end{equation}
\begin{equation}
\label{eq:handshaking_lemma}
\sum_{v\in V(G)} d_G(u) = 2|E(G)|
\end{equation}
In the following sections we use Equations from
\firstlabel{eq:energy_mass_lightspeed,eq:basic_arithmetics,eq:pythagorean_theorem,eq:handshaking_lemma}
to
\lastlabel{eq:energy_mass_lightspeed,eq:basic_arithmetics,eq:pythagorean_theorem,eq:handshaking_lemma}.
\end{document}
在示例的最后四行中,假设的宏\firstlabel
和\lastlabel
将标签列表(四个方程的标签)作为参数。第一个,,\minimumlabel{..}
应该具有与相同的行为(在本例中),因为\ref{eq:energy_mass_lightspeed}
是eq:energy_mass_lightspeed
第一个定义的标签。第二个,,\lastlabel{..}
应该具有与相同的行为,因为\ref{eq:handshaking_lemma}
是eq:handshaking_lemma
最后定义的标签。
问题可以做到吗?如果可以,有类似的东西吗?
这样做的动机是,有时为了提高可读性,甚至为了简化解释,可以重新排列文档中的方程式。如果作者想要引用方程式范围,他们可以在引用该范围时使用第一个和最后一个标签,但这在文档的未来修改中可能会发生变化。写出方程式的编号不是一种选择,因为作者可能会决定在第一个方程式之前添加更多方程式,从而改变方程式的数量。命令\vrefrange
有点帮助但它需要参数始终是第一个和最后一个(请注意,方程式可能会在某些时候重新排序)。
答案1
正如评论中提到的,解决方案是使用包cleveref
。为了完成我在帖子中要求的操作,首先包含包
\usepackage{cleveref}
并在文档最后一句中使用适当的命令
In the following sections we use \cref{eq:energy_mass_lightspeed,eq:handshaking_lemma,eq:basic_arithmetics,eq:pythagorean_theorem}.
请注意,标签不是\cref
按照定义的顺序给出的。上面的命令产生
In the following sections we use eqs. (1) to (4).
两个有趣的选项是capitalize
,noabbrev
当传递给包时
\usepackage[capitalize,noabbrev]{cleveref}
上述命令将产生
In the following sections we use Equations (1) to (4).
(请注意,它从 变为eqs.
)Equations
。