Как автоматически пронумеровать семейство уравнений (и ссылаться на них)

Как автоматически пронумеровать семейство уравнений (и ссылаться на них)

Вопрос будет сам по себе решен, и он прост. Иногда нам нужно создать семейство уравнений с тем же номером, но с чем-то другим (дополнительным счетчиком или чем-то еще). Например, у меня есть уравнения (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)

для 2-го участника и т.д.

Команда работает с пакетом amsmath, и мы можем иметь

\numberwithin{equation}{section}

или что нам нравится.

Мы можем продолжить запись членов нашей семьи в новом разделе, но нумерация будет помнить раздел и номер первого члена семьи.

Наконец, мы можем использовать не только \roman нумерацию (например, заглавные буквы или что-то другое, поддерживаемое Latex), добавив параметр вроде

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

Связанный контент