Как нумеровать непоследовательные добавления в 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 в файл стиля, если вы хотите сделать его многоразовым.