一个 \ref 中有多个子方程标签

一个 \ref 中有多个子方程标签

我正在尝试编写一个宏,将子方程的标签以紧凑的形式放在括号中。例如,如果我有

\begin{subequations}
\begin{align}
    y - ax &= b \label{subeq1}\\
    x^2 + y^2 &= r^2 \label{subeq2}
\end{align}
\end{subequations}

两个方程被标记为 (1a) 和 (1b),那么我希望能够输入\ref{subeq1,subeq2}并得到 (1a,b)。同样,如果我有三个子方程,比如 (2a)、(2b) 和 (2c),标签subeq3分别为subeq4subeq5,那么我希望能够输入\ref{subeq3,subeq4,subeq5}并得到 (2a--c)。我希望这适用于任意数量的子方程。

答案1

我有一个解决方案,虽然不是你想要的,但它提供了更紧凑的标签。我将使用的代码是:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
    \begin{subequations}\label{eq:subeqns}
     \begin{align}
      y - ax &= b \label{eq:subeq1}\\
      x^2 + y^2 &= r^2 \label{eq:subeq2}
     \end{align}
    \end{subequations}
\end{document}

我将整个集合称为\eqref{eq:subeqns}得到(1),将个体称为\eqref{eq:subeq1}\eqref{eq:subeq2}得到(1a)(1b)

答案2

这不完全是您想要的但很接近。

在此处输入图片描述

笔记:

  • 最新版本(V0.18)尚未在 CTAN 上发布,但可以从Toby Cubitt 的网站. 虽然在这个特定的例子中似乎没有什么区别。

代码:

\documentclass{article}
\usepackage{amsmath}
\usepackage{cleveref}% load last


\crefname{equation}{equation}{equations}
\Crefname{equation}{Equation}{Equations}% For beginning \Cref
\crefrangelabelformat{equation}{(#3#1#4--#5#2#6)}

\crefmultiformat{equation}{equations (#2#1#3}{, #2#1#3)}{#2#1#3}{#2#1#3}
\Crefmultiformat{equation}{Equations (#2#1#3}{, #2#1#3)}{#2#1#3}{#2#1#3}

\begin{document}

\begin{subequations}
\begin{align}
    y - ax &= b \label{eq:subeq1}\\
    x^2 + y^2 &= r^2 \label{eq:subeq2}\\
    x^2 + y^2 &= r^2 \label{eq:subeq3}\\
    x^2 + y^2 &= r^2 \label{eq:subeq5}
\end{align}
\end{subequations}

\noindent
For the case where the label is part of a sentence:\par
Once referenced: \cref{eq:subeq1}\par
Two referenced: \cref{eq:subeq1,eq:subeq2}\par
Three referenced: \cref{eq:subeq1,eq:subeq2,eq:subeq3}\par

\bigskip
\noindent
For the case where the labels beign a sentence:\par
\Cref{eq:subeq1} is one equations.\par
\Cref{eq:subeq1,eq:subeq2} are two equations.\par
\Cref{eq:subeq1,eq:subeq2,eq:subeq3} are three equations.
\end{document}

相关内容