如何自动编号方程式系列(并引用它们)

如何自动编号方程式系列(并引用它们)

这个问题可以自己回答,很简单。有时,我们需要创建一个具有相同数字但不同的东西(额外的计数器或其他东西)的方程族,例如,我有方程 (1),然后是 (2),现在我想打开一个方程族 (3 (i)),(3 (ii)),然后继续 (4)...然后定义 (3 (iii))...等等...

并且这必须与 amsmath 包一起工作才能给出像 (2.2 (i)) 等的数字。

我没有找到类似的东西,但可能我没有使用合适的关键字。所以如果它是重复的,请通知我写在那里。创建答案...

为了明确我想要什么...就是拥有方程式族,而不必提供自定义标签和改变方程式计数器的数量。

下一张图片显示了所需的结果(包含二次方程和椭圆方程族以及它们之间的不属于方程族的方程):

在此处输入图片描述

PS:这个问题来自问题,但这只是我的一个误会。他想要别的东西(我将编辑此主题答案的代码以回答这个问题)

答案1

我们可以定义一个新命令来执行此操作。该命令是:

编辑:将 amsmath 包添加到你的序言中。

\makeatletter
\newcommand*\ifcounter[1]{%
  \ifcsname c@#1\endcsname%
    \expandafter\@firstoftwo%
  \else%
    \expandafter\@secondoftwo%
  \fi%
}%
\makeatother


\makeatletter
\newcommand\EqFamTag[2][roman]{%
\ifcounter{#2}{%
\expandafter\addtocounter{#2}{1}%
\xdef\temp{\csname #2 Eq\endcsname \space(\csname #1\endcsname{#2})}%
\global\expandafter\let\csname #2\arabic{#2}\endcsname\temp%
\tag{\temp}%
}{%
\global\expandafter\newcounter{#2}%
\expandafter\addtocounter{#2}{1}%
\xdef\temp{\theequation\space(\csname #1\endcsname{#2})}%
\xdef\eqonfamily{\theequation}%
\global\expandafter\let\csname #2 Eq\endcsname\eqonfamily%
\global\expandafter\let\csname #2\arabic{#2}\endcsname\temp%
\tag{\temp}%
\expandafter\addtocounter{equation}{1}
}%
}%
\makeatother

我使用@clemens 的答案检查计数器是否存在

要使用该命令,我们只需写入(例如):

\begin{equation}
 x^2=3\EqFamTag{Parabolic}
\end{equation}

我们可以给出或不给出标签...如果我们不给出标签,我们仍然可以使用以下方式来引用我们的抛物线家族成员:

(\csname Parabolic1\endcsname) 

对于第一个成员...或

(\csname Parabolic2\endcsname)

对于第二位成员等

该命令与 amsmath 包一起使用,我们可以

\numberwithin{equation}{section}

或者任何我们喜欢的。

我们可以在新的部分中继续我们的家庭成员,但编号会记住第一个成员的部分和号码。

最后,我们可以使用除 \roman 之外的其他数字(例如大写字母或任何 latex 支持的数字),添加一个参数,例如

\begin{equation}
 {x^4}+\frac{3\cdot x^2}{10}+7=0\EqFamTag[Alph]{Quartic}
\end{equation}

相关内容