2009-11-19 4 views
2

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

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

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

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

Добавление 1.А (Ссылаясь на определение 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} 
1

На основании ответа Алексея, попробуйте

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

\makeatletter 
\newenvironment{add}[1]{ % environment has one required arg, a label to follow 
    \@ifundefined{[email protected]@#1}{ % does a private counter exist for the label? 
    \newcounter{[email protected]#1} % define if not 
    }{ % do nothing if it does 
    } 
    \stepcounter{[email protected]#1} 
    \@begintheorem{Addendum}{\ref{#1}.\csname [email protected]#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 в файл стиля, если вы хотите сделать его многоразовым.