最小标签值和最大标签值

最小标签值和最大标签值

我想知道是否存在一些 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).

两个有趣的选项是capitalizenoabbrev当传递给包时

\usepackage[capitalize,noabbrev]{cleveref}

上述命令将产生

In the following sections we use Equations (1) to (4).

(请注意,它从 变为eqs.Equations

相关内容