这个问题可以自己回答,很简单。有时,我们需要创建一个具有相同数字但不同的东西(额外的计数器或其他东西)的方程族,例如,我有方程 (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}