\ifx\theoremstyle\undefined\else\typeout{WARNING: Package \string"theorem\string" will not
be loaded twice.}\expandafter\endinput\fi
%%
%% Original "theorem.sty" von Frank Mittelbach
%%
\def\filedate{1996/12/29}
%\def\docdate{1996/09/01}
\def\fileversion{1.0}
\def\filename{newthm.sty}
\ProvidesPackage{newthm}[\filedate]
\typeout{** Andreas's Document Style 'newthm' <\filedate>.}
\DeclareOption*{\PackageWarning{newthm}{Unknown Option '\CurrentOption'}}
\ProcessOptions
%%
%% Theoremdefinitionen erm"oglichen
%%
\gdef\theoremstyle#1{%
   \@ifundefined{th@#1}{\@warning
          {Unknown theoremstyle `#1'. Using `plain'}%
          \theorem@style{plain}}%
      {\theorem@style{#1}}%
      \begingroup
        \csname th@\the\theorem@style \endcsname
      \endgroup}
\global\let\@begintheorem\relax
\global\let\@opargbegintheorem\relax
\newtoks\theorem@style
\global\theorem@style{plain}
\gdef\theorembodyfont#1{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty
    \theorem@bodyfont{}%
   \else
    \theorem@bodyfont{\reset@font#1}%
   \fi
   }
\newtoks\theorem@bodyfont
\global\theorem@bodyfont{}
\gdef\theoremheaderfont#1{\gdef\theorem@headerfont{#1}%
       \gdef\theoremheaderfont##1{%
        \typeout{\string\theoremheaderfont\space should be used
                 only once.}}}
\ifx\upshape\undefined
\gdef\theorem@headerfont{\bfseries}
\else \gdef\theorem@headerfont{\normalfont\bfseries}\fi
%%
%% Stile
%%
\gdef\th@plain{\@input@{n-thp.sty}}
\gdef\th@break{\@input@{n-thb.sty}}
\gdef\th@marginbreak{\@input@{n-thmb.sty}}
\gdef\th@changebreak{\@input@{n-thcb.sty}}
\gdef\th@change{\@input@{n-thc.sty}}
\gdef\th@margin{\@input@{n-thm.sty}}
%%
%% Ohne Nummer
%%
\gdef\th@plainNo{\@input@{n-thpno.sty}}
\gdef\th@breakNo{\@input@{n-thbno.sty}}
\gdef\th@marginbreakNo{\@input@{n-thmbno.sty}}
\gdef\th@changebreakNo{\@input@{n-thcbno.sty}}
\gdef\th@changeNo{\@input@{n-thcno.sty}}
\gdef\th@marginNo{\@input@{n-thmno.sty}}
%%
%% Ein Trennzeichen?
%%
\gdef\theoremseparator#1{\gdef\th@thmsep{#1}
   \gdef\theoremseparator##1{
        \typeout{\string\theoremseparator\space should be used
                 only once.}}}
     
\gdef\th@thmsep{}
%%
%% Latexinterna umdefinieren
%%
\gdef\@xnthm#1#2[#3]{\expandafter\@ifdefinable\csname #1\endcsname
   {\vig@definelthm{#1}
    \@definecounter{#1}\@addtoreset{#1}{#3}%
    \expandafter\xdef\csname the#1\endcsname
      {\expandafter \noexpand \csname the#3\endcsname
       \@thmcountersep \@thmcounter{#1}}%
    \def\@tempa{\global\@namedef{#1}}%
    \expandafter \@tempa \expandafter{%
      \csname th@\the \theorem@style
            \expandafter \endcsname \the \theorem@bodyfont
     \@thm{#1}{#2}{#1}}%
    \global \expandafter \let \csname end#1\endcsname \@endtheorem
   }}
\gdef\@ynthm#1#2{\expandafter\@ifdefinable\csname #1\endcsname
   {\vig@definelthm{#1}\@definecounter{#1}%
    \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
    \def\@tempa{\global\@namedef{#1}}\expandafter \@tempa
     \expandafter{\csname th@\the \theorem@style \expandafter
     \endcsname \the\theorem@bodyfont \@thm{#1}{#2}{#1}}%
    \global \expandafter \let \csname end#1\endcsname \@endtheorem}}
\gdef\@othm#1[#2]#3{\expandafter\@ifdefinable\csname #1\endcsname
    {\vig@definelthm{#1}\expandafter \xdef \csname the#1\endcsname
     {\expandafter \noexpand \csname the#2\endcsname}%
    \def\@tempa{\global\@namedef{#1}}\expandafter \@tempa
     \expandafter{\csname th@\the \theorem@style \expandafter
     \endcsname \the\theorem@bodyfont \@thm{#2}{#3}{#1}}%
    \global \expandafter \let \csname end#1\endcsname \@endtheorem}}
\gdef\@ythm#1#2#3[#4]{\@opargbegintheorem{#2}{\csname the#1\endcsname}{#4}\ignorespaces
 \vig@thmcaption{#3}{{#2}{\csname the#1\endcsname}{#4}}}
\gdef\@thm#1#2#3{\refstepcounter{#1}%
   \trivlist
   \@topsep \theorempreskipamount               % used by first \item
   \@topsepadd \theorempostskipamount           % used by \@endparenv
   \@ifnextchar [%
   {\@ythm{#1}{#2}{#3}}%
   {\@begintheorem{#2}{\csname the#1\endcsname}%
    \vig@thmcaption{#3}{{#2}{\csname the#1\endcsname}{}}\ignorespaces}}
\global\let\@xthm\relax
\newskip\theorempreskipamount
\newskip\theorempostskipamount
\global\setlength\theorempreskipamount{12pt plus 5pt minus 3pt}
\global\setlength\theorempostskipamount{8pt plus 3pt minus 1.5pt}
\global\let\@endtheorem=\endtrivlist
\@onlypreamble\@xnthm
\@onlypreamble\@ynthm
\@onlypreamble\@othm
\@onlypreamble\newtheorem
\@onlypreamble\theoremstyle
\@onlypreamble\theorembodyfont
\@onlypreamble\theoremheaderfont
\@onlypreamble\theoremseparator
\@onlypreamble\theoremnumbering
\theoremstyle{plain}
%%
%% Folgende Definitionen, um Listen zu ermoeglichen
%% Dokumentation anhand \begin{erinnerung}[A_n], 1.Erinnerung, Seite 5
%%
% \vig@thmcaption schreibt ins aux-file, 
%   z.B.  \contentsline {thm}{{Erinnerung}{1}{A_n}}}{5}
% \vig@thmcaption wird für jedes Theorem aufgerufen
%   die beiden Parameter werden einfach weitergereicht
%
\def\vig@thmcaption#1#2{\vig@@thmcaption{#1}#2}
\def\vig@@thmcaption#1#2#3#4{\begingroup% \x, \y local
    \def\y##1->##2\relax{##2}% "macro:->" entfernen
    \def\x{#4}%
    \edef\x{{#2}{#3}{\expandafter\y\meaning\x\relax}}% do it!
    \addcontentsline{thm}{#1}{\x}%
    \endgroup}
%%
%% \vig@@thmline gibt die einzelnen Zeilen aus
%% Aufruf z.B. \vig@@thmline{Erinnerung}{1}{A_n}{5}
%%
\def\theoremlistall{%
    \def\vig@@thmline##1##2##3##4{%
        \@dottedtocline{-2}{0em}{2.3em}%
                   {\protect\numberline{##2}##3}% 1, A_n
                   {##4}}% Seite
}
\def\theoremlistallname{%
    \def\vig@@thmline##1##2##3##4{%
         \@dottedtocline{-2}{0em}{2.3em}%
                   {##1 \protect\numberline{##2}##3}% 1, A_n
                   {##4}}% Seite
}
%                   
% Um nur Theoreme mit optionalem Text zu erhalten, \vig@@thmline 
% umdefinieren
%
\def\theoremlistoptional{%
    \def\vig@@thmline##1##2##3##4{%
         \ifx\empty ##3%
         \else%
            \@dottedtocline{-2}{0em}{2.3em}%
                     {\protect\numberline{##2}##3}%
                     {##4}%
         \fi}%
}
\def\theoremlistoptname{%
    \def\vig@@thmline##1##2##3##4{%
         \ifx\empty ##3%
         \else%
            \@dottedtocline{-2}{0em}{2.3em}%
                     {##1 \protect\numberline{##2}##3}%
                     {##4}%
         \fi}%
}
\theoremlistall
%
\def\theoremlisttype#1{\csname vig@thml@#1\endcsname}
\def\vig@thml@all{\theoremlistall}
\def\vig@thml@opt{\theoremlistoptional}
\def\vig@thml@optname{\theoremlistoptname}
\def\vig@thml@allname{\theoremlistallname}
%
% \vig@thmline ruft \vig@@thmline auf, und enfernt die äußeren {}
% Klammern bei {{Erinnerung}{1}{A_n}}
%
\def\vig@thmline#1#2{\vig@@thmline#1{#2}}
%
% Um Zeilen zu ignorieren wird \vig@lgobble benötigt
%
\def\vig@lgobble#1#2{}
%
% \vig@definelthm wird durch \newtheorem aufgerufen
% und definiert die Befehle \l@erinnerung etc.
%
\def\vig@definelthm#1{%
 \expandafter\gdef\csname l@#1\endcsname{\vig@lgobble}%
}
%
% listoftheorems{satz,satz*,aufgabe}
%
\def\listtheorems#1{\begingroup%
  \c@tocdepth=-2%
  \def\thm@list{#1}\thm@processlist%
  \endgroup}
\def\thm@processlist{%
 \begingroup%
 \typeout{** Generating table of \thm@list}%
 \@for\thm@currentlist:=\thm@list\do{%
  \ifx\thm@currentlist\@empty\else%
   \expandafter\def\csname l@\thm@currentlist\endcsname{\vig@thmline}%
  \fi%
 }
 \@input{\jobname .thm}
 \endgroup
}
%
% \enablelistoftheorems startet das Schreiben in das thm-file
% !! Dieser Befehl muss nach dem letzten listtheorems stehen,
% am besten vor \end{document}
%
\def\enablelistoftheorems{\@starttoc{thm}}
%%
%%
%% Griechische Counter
%%
%%
\def\@greek#1{\if b\expandafter\@car\f@series\@nil\boldmath\fi%
 \ifcase#1\or$\alpha$\or$\beta$\or$\gamma$\or$\delta$\or$\varepsilon$%
  \or$\zeta$\or$\eta$\or$\vartheta$\or$\iota$\or$\kappa$\or$\lambda$\or$%
  \mu$\or$\nu$\or$\xi$\or$ o$\or$\varpi$\or$\varrho$\or$\varsigma$\or$\tau$%
  \or$\upsilon$\or$\varphi$\or$\chi$\or$\psi$\or$\omega$\else\@ctrerr\fi}
\def\@Greek#1{\if b\expandafter\@car\f@series\@nil\boldmath\fi%
 \ifcase#1\or A\or B\or$\Gamma$\or$\Delta$\or E%
  \or Z\or H\or$\Theta$\or I\or K\or$\Lambda$\or M%
  \or N\or$\Xi$\or O\or$\Pi$\or P\or$\Sigma$\or T%
  \or$\Upsilon$\or$\Phi$\or X\or$\Psi$\or$\Omega$\else\@ctrerr\fi}
\def\greek#1{\@greek{\csname c@#1\endcsname}}
\def\Greek#1{\@Greek{\csname c@#1\endcsname}}
\def\none#1{\@gobble{#1}}
%%
\def\theoremnumbering#1{\gdef\@thmcounter##1{\noexpand\csname #1\endcsname{##1}}}
\theoremnumbering{arabic}
%%
\AtEndDocument{\enablelistoftheorems}
%%
%%
%%+-------------------------------------------+
%%| Andreas Schlechte                         |
%%| Am Klepperberg 2                          |
%%| 38678 Clausthal-Zellerfeld                |
%%| email: Andreas.Schlechte@tu-clausthal.de  |
%%+-------------------------------------------+
