如何在不中断原始定理编号的情况下在LaTeX中编号不连续的附录?

时间:2009-11-19 15:53:36

标签: latex numbers theorem

我正在写一篇关于定义,定理,引理等的论文。我需要给出一个概念的基本定义,然后在论文的后面扩展这个定义,因为更多的参数增加了复杂性,从而增加了定义。所以我需要一些看起来(结构上)像这样的东西:

定义1

定义2

定义3

附录1.a(参见定义1)

附录1.b(参见定义1)

定义4

附录1.c(参见定义1)

附录3.a(参见定义3)

定义5

我似乎无法找到任何可以让我这样做的东西。有没有人有想法?

2 个答案:

答案 0 :(得分: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 :(得分:1)

根据Alexey的回答,试试

\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之间的位放在样式文件中。