如何同时交叉引用多个对象

如何同时交叉引用多个对象

我想定义一个宏来引用文章中的方程式。我希望方程式被引用为:“方程式 (3)” 所以我定义了一个命令“\eref{}”如下:

\def\eref#1{Eq.~\ref{#1}}

但是我也遇到过想要引用多个方程的情况,如:“方程(3,4,5)”,并且当我尝试使用时:

\eref{label1,label2,label3}

我只是在 pdf 中找到了“Eq. ??”。

有谁能帮我声明一个宏,它可以将列表作为输入,并简单地用该列表调用另一个函数(就像\ref{}latex 的命令一样)。我试图用“##”替换定义中的“#1”,但没有成功。

我希望有类似的宏来引用引理、定理等,它们也有类似的问题。

答案1

如果您有三个连续方程,例如,,eq:1eq:2eq:3并且需要联合交叉引用它们,您可以借助cleveref包及其\cref命令来完成:

\cref{eq:1,eq:2,eq:3}

cleveref非常聪明(双关语),可以对与方程相关的数字进行排序,并在必要时进行压缩,从而生成排版输出“eqs. (1) to (3)”。如果您不想看到单词“equations”缩写为“eqs.”,请使用选项加载cleverefnoabbrev

如果使用该包,唯一真正的限制cleveref是您不能使用逗号(,)作为标签名称的一部分,因为 - 从上面的示例中可以看出 - 逗号用于将标签彼此分隔。

有关交叉引用的更多信息,包括cleveref包的各个方面,请参阅帖子交叉引用包:使用哪一个,哪些有冲突?以及相关答案。

相关内容