Cleveref 的 \crefrange 和混合方程及子方程

Cleveref 的 \crefrange 和混合方程及子方程

此示例不适用于最新版本的cleveref

Refer to . 行\crefrange{eqa}{eqc}给出输出:

Refer to ?? 1–3.

它以前曾经起作用。

有人能解释一下如何解决这个问题吗?

\documentclass{article}

\usepackage{amsmath,cleveref}

\begin{document}

\begin{subequations}
\label{eqa}
\begin{align}
a &= b\\
c &= d
\end{align}
\end{subequations}

\begin{subequations}
\label{eqba}
\begin{align}
e &= f\\
g &= h
\end{align}
\end{subequations}

\begin{equation}
\label{eqc}
i = j
\end{equation}

Refer to \crefrange{eqa}{eqc}.

\end{document}

答案1

(答案基于这个帖子以及@egreg 评论说subequations环境管理已经改变。)

您可以通过可选参数强制将环境的顶级标签subequations视为-environment 标签:equations\label

\begin{subequations}
\label[equation]{eqlabel}
[...]
\end{subequations}

您的 MWE 看起来像这样(添加了额外的子方程标签以表明这不会影响顶级标签行为):

\documentclass{article}

\usepackage{amsmath,cleveref}

\begin{document}

\begin{subequations}
\label[equation]{eqa}
\begin{align}
\label{subeqa1}
a &= b \\
\label{subeqa2}
c &= d
\end{align}
\end{subequations}

\begin{subequations}
\label[equation]{eqb}
\begin{align}
\label{subeqb1}
e &= f \\
\label{subeqb2}
g &= h
\end{align}
\end{subequations}

\begin{equation}
\label{eqc}
i = j
\end{equation}

Refer to \crefrange{eqa}{eqc}.

\end{document}

编辑:缺点

似乎声明为的标签\label[equation]{...}被 RefTeX 忽略了。如果习惯使用 RefTeX,那么添加对一组子方程的顶级标签的引用会变得不太方便。我想应该有一种简单的方法来解决这个问题,但我不知道怎么做。

答案2

我在使用 cleveref 0.19 版本时也遇到了同样的问题(参见上述 egreg 的评论)。我通过以下方法修复了这个问题:

\crefalias{subequation}{equation}

在序言中。

(如果此修复程序有些不妥或应避免,请发表评论)

相关内容