我想定义一个宏来引用文章中的方程式。我希望方程式被引用为:“方程式 (3)” 所以我定义了一个命令“\eref{}”如下:
\def\eref#1{Eq.~\ref{#1}}
但是我也遇到过想要引用多个方程的情况,如:“方程(3,4,5)”,并且当我尝试使用时:
\eref{label1,label2,label3}
我只是在 pdf 中找到了“Eq. ??”。
有谁能帮我声明一个宏,它可以将列表作为输入,并简单地用该列表调用另一个函数(就像\ref{}
latex 的命令一样)。我试图用“##”替换定义中的“#1”,但没有成功。
我希望有类似的宏来引用引理、定理等,它们也有类似的问题。
答案1
如果您有三个连续方程,例如,,eq:1
和eq:2
,eq:3
并且需要联合交叉引用它们,您可以借助cleveref
包及其\cref
命令来完成:
\cref{eq:1,eq:2,eq:3}
cleveref
非常聪明(双关语),可以对与方程相关的数字进行排序,并在必要时进行压缩,从而生成排版输出“eqs. (1) to (3)”。如果您不想看到单词“equations”缩写为“eqs.”,请使用选项加载cleveref
包noabbrev
。
如果使用该包,唯一真正的限制cleveref
是您不能使用逗号(,
)作为标签名称的一部分,因为 - 从上面的示例中可以看出 - 逗号用于将标签彼此分隔。
有关交叉引用的更多信息,包括cleveref
包的各个方面,请参阅帖子交叉引用包:使用哪一个,哪些有冲突?以及相关答案。