Как нумеровать непоследовательные добавления в LaTeX, не нарушая оригинальную нумерацию теоремы?

Я пишу тезис с определениями, теоремами, леммами и тому подобным. Мне нужно дать базовое определение понятия, а затем в тезисе раскрыть это определение, поскольку дополнительные параметры усложняют его и, следовательно, определяют. Поэтому мне нужно что-то, что выглядело бы (структурно) так:

Определение 1

Определение 2

Определение 3

Приложение 1.a (Ссылаясь на определение 1)

Приложение 1.b (Ссылаясь на определение 1)

Определение 4

Приложение 1.c (Ссылаясь на определение 1)

Приложение 3.a (Ссылаясь на определение 3)

Определение 5

Кажется, я не могу найти ничего, что позволило бы мне сделать это. У кого-нибудь есть идея?

2 ответа

В преамбуле:

\newtheorem{Definition}{Definition}
\newtheorem{Addendum}{Addendum}[Definition]
\def\theAddendum{\theDefinition .\alph{Addendum}}

Основной текст:

\newcount\saveDefCounter

\begin{Definition} ... \end{Definition}
\begin{Definition} ... \end{Definition}
\begin{Definition} ... \end{Definition}

\saveDefCounter\arabic{Definition}
\setcounter{Definition}{1}

\begin{Addendum} ... \end{Addendum}
\begin{Addendum} ... \end{Addendum}

\setcounter{Definition}{\saveDefCounter}

\begin{Definition} ... \end{Definition}
\begin{Definition} ... \end{Definition}

Исходя из ответа Алексея, попробуйте

\documentclass{article}
\newtheorem{Definition}{Definition}

\makeatletter
\newenvironment{add}[1]{ % environment has one required arg, a label to follow
  \@ifundefined{c@add@#1}{ % does a private counter exist for the label?
    \newcounter{add@#1} % define if not
  }{ % do nothing if it does
  }
  \stepcounter{add@#1}
  \@begintheorem{Addendum}{\ref{#1}.\csname theadd@#1\endcsname}\ignorespaces
  % use latex internal macro to write the theorem start environment
}{ % end the environment
  \@endtheorem
}
\makeatother

\begin{document}

\begin{Definition}\label{def1} ... \end{Definition}
\begin{Definition}\label{def2} ... \end{Definition}
\begin{Definition}\label{def3} ... \end{Definition}


\begin{add}{def1} ... \end{add}
\begin{add}{def2} ... \end{add}
\begin{add}{def1} ... \end{add}


\begin{Definition} ... \end{Definition}
\begin{Definition} ... \end{Definition}
\end{document}

Среда добавления должна получить метку, указывающую определение, к которому она должна быть добавлена. Поместите бит между \makeatletter и \makeatother в файл стиля, если вы хотите сделать его многоразовым.

Другие вопросы по тегам