2009-11-19 317 views
2

我正在写一篇论文,主要涉及定义,定理,引理等。我需要给出一个概念的基本定义,然后在本文后面扩展这个定义,因为更多的参数增加了复杂性,从而增加了定义。所以,我需要一些东西,看起来(结构)是这样的:如何在不破坏原定理编号的情况下在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} 
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之间的位放在样式文件中。

相关问题