方程式群に自動的に番号を付ける方法(および参照する方法)

方程式群に自動的に番号を付ける方法(および参照する方法)

この質問は自己回答で、簡単です。 時には、同じ数字だが何か違うもの(追加のカウンターなど)を持つ方程式のファミリーを作成する必要があります。 たとえば、方程式(1)と(2)があり、方程式のファミリー(3(i))、(3(ii))を開き、(4)に進み、(3(iii))を定義します...などとします。

そして、(2.2 (i)) などの数値を得るには、amsmath パッケージと連携する必要があります。

似たようなものは見つかりませんでしたが、おそらく適切なキーワードを使用していないのでしょう。重複している場合は、そこに書き込むようにお知らせください。回答を作成しています...

私が何を望んでいるかを明確にするために...カスタム タグを指定したり、方程式カウンターの数を変更したりすることなく、方程式のファミリを作成することです。

次の写真は、望ましい結果を示しています (二次方程式と楕円方程式の族と、それらの間の族に属さない方程式を含む)。

ここに画像の説明を入力してください

追記:この質問はこれ質問ですが、それは私の単なる誤解でした。彼は別の何かを望んでいました(そして、私はそれにも答えるためにこのトピックの回答のコードを編集します)

答え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}

ラベルを付けることもあれば付けないこともあります...ラベルを付けない場合でも、次のようにして Parabolic ファミリーのメンバーを参照できます。

(\csname Parabolic1\endcsname) 

最初のメンバーの場合...または

(\csname Parabolic2\endcsname)

2人目のメンバーなど

このコマンドはamsmathパッケージで動作し、

\numberwithin{equation}{section}

または私たちが好きなものなら何でも。

家族のメンバーを新しいセクションに継続できますが、番号付けにより最初のメンバーのセクションと番号が記憶されます。

最後に、\roman番号以外のもの(大文字のアルファベットやLaTeXがサポートするもの)を使用するには、次のようなパラメータを追加します。

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

関連情報