% \iffalse ********************************************* METACOMMENT
%
%                   TeX this file with LaTeX2e !
%
%       The following files will be written out:
%
%       ==> buxpkgs.dvi           Documentation (read this first)
%
%       --> buxlayout.sty         paper formats
%       --> buxmath.sty           mathematics macros
%       --> buxmisc.sty           miscenlenous macros
%       --> buxphilosophy.sty     philosophy macros
%       --> buxproof.sty          my version of Paul Taylor's proofs
%       --> buxtheorem.sty        my version of the theorem package
%       --> ordnumbered.pko       option file to buxtheorem.sty
%       --> prenumbered.pko       option file to buxtheorem.sty
%  
%
%% Copyright :  Kai-Uwe Bux
%% ---------    Norderneystraße 26
%%              D-26419 Schortens/Heidmühle (Germany)
%%
%% *****************************************************************
% >>>>>>>>>  !! Proliferation of UNCHANGED versions of !!  <<<<<<<<<
%            !! this file is permitted                 !!
%
% >>>>>>>>>  !! Don't change this file without changing !! <<<<<<<<<
%            !! it's name                               !!
% ******************************************************************
%
%    \begin{macrocode}
\def\FileVersion{0.37b}
\def\FileDate{2001/01/10}
\def\FileDescription{einige Mathematik Pakete}
%    \end{macrocode}
%
% ********************************************** END METACOMMENT \fi
%
% \CheckSum{2110}
% \StopEventually{}
%
% \iffalse ********************************************* METACOMMENT
%    \begin{macrocode}
%<*driver>
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\let\ThisVersion\FileVersion
\let\ThisDate\FileDate
%</driver>
%    \end{macrocode}
% ********************************************** END METACOMMENT \fi
%
% \iffalse ******************************************** METATCOMMENT
%
%   Dieser Abschnitt erscheint nicht in der Dokumentation
%
%    \end{macrocode}
%   \Section{Installation}
%     Was jetzt kommt, ist ein wenig trickreich, da wir diese
%     Datei zugleich als DocStrip-Batch benutzen m"ussen.
%     Das hei"st, wir m"ussen daf"ur sorgen, da"s sie auch
%     bei zeilenweiser Bearbeitung sinnvoll bleibt.
%    \begin{macrocode}
%<*installation>
\ifx\undefined\batchfile\begingroup\newtoks\List\fi
  \def\batchfile{buxpkgs.dtx}
  \makeatletter
  \let\@@end=\relax
  \List={}
\def\File#1#2{\List=\expandafter{\the\List\file{#1}{\from{buxpkgs.dtx}{#2}}}}
  \File{buxtheorem.sty}{buxtheorem}
  \File{ordnumbered.pko}{ordnumbered}
  \File{prenumbered.pko}{prenumbered}
  \File{buxproof.sty}{buxproof}
  \File{buxmath.sty}{buxmath}
  \File{buxphilosophy.sty}{buxphilosophy}
  \File{buxlayout.sty}{buxlayout}
  \File{buxmisc.sty}{buxmisc}
\def\G{\expandafter\expandafter\expandafter\generate\expandafter{\the\List}}
  \def\GenerateAll{\G\let\GenerateAll\relax}
  \def\StopInput{\endinput\let\StopInput\relax}
  \input docstrip.tex
  \GenerateAll
  \StopInput
\endgroup
%    \end{macrocode}
%     Damit das File \file{buxpkgs.dtx} nur einmal bearbeitet
%     werden mu"s, geben wir auch das Inhaltsverzeichnis und die
%     \file{.aux}-Datei mit einer \env{filecontents}-Umgebung aus.
%    \begin{macrocode}
\begin{filecontents}{buxpkgs.toc}
\IfFileExists{babel.sty}{%
  \select@language {german}
}{}
\contentsline {section}{\numberline {1}Das Paket \textsf {buxtheorem}}{2}
\contentsline {subsection}{\numberline {1.1}Implementation}{3}
\contentsline {subsubsection}{\numberline {1.1.1}Identifikation}{3}
\contentsline {subsubsection}{\numberline {1.1.2}Der Ersatz f"ur den \LaTeXe {}-Kernel}{4}
\contentsline {subsubsection}{\numberline {1.1.3}Die \texttt {NewTh}-Umgebung}{6}
\contentsline {subsubsection}{\numberline {1.1.4}Voreinstellungen}{7}
\contentsline {subsubsection}{\numberline {1.1.5}Die Optionen}{8}
\contentsline {section}{\numberline {2}Das Paket \textsf {buxproof}}{12}
\contentsline {subsection}{\numberline {2.1}Implementation}{12}
\contentsline {section}{\numberline {3}Das Paket \textsf {buxmath}}{16}
\contentsline {subsection}{\numberline {3.1}Benutzerschnittstelle}{16}
\contentsline {subsubsection}{\numberline {3.1.1}Optionen und andere Pakete}{16}
\contentsline {subsubsection}{\numberline {3.1.2}Theorem-like Umgebungen}{16}
\contentsline {paragraph}{Beispiele}{17}
\contentsline {subsubsection}{\numberline {3.1.3}Beweise}{18}
\contentsline {paragraph}{Beispiel}{18}
\contentsline {paragraph}{}{19}
\contentsline {paragraph}{Beispiel}{19}
\contentsline {subsubsection}{\numberline {3.1.4}Benannte Aussagen}{20}
\contentsline {paragraph}{Beispiel}{20}
\contentsline {subsubsection}{\numberline {3.1.5}Besondere Symbole}{20}
\contentsline {subsection}{\numberline {3.2}Implementierung}{24}
\contentsline {subsubsection}{\numberline {3.2.1}Optionen und andere Pakete}{24}
\contentsline {subsubsection}{\numberline {3.2.2}Theorem-like Umgebungen}{25}
\contentsline {subsubsection}{\numberline {3.2.3}Beweise}{27}
\contentsline {subsubsection}{\numberline {3.2.4}Benannte Aussagen}{28}
\contentsline {subsubsection}{\numberline {3.2.5}Besondere Symbole}{29}
\contentsline {section}{\numberline {4}Das Paket \textsf {buxphilosophy}}{36}
\contentsline {section}{\numberline {5}Das Paket \textsf {buxlayout}}{37}
\contentsline {section}{\numberline {6}Das Paket \textsf {buxmisc}}{42}
\contentsline {subsection}{\numberline {6.1}Erweiterung der Z"ahlerkommandos}{42}
\contentsline {subsection}{\numberline {6.2}Z"ahlen auf Deutsch}{42}
\contentsline {subsection}{\numberline {6.3}Deutsche Seitenzahlen}{44}
\end{filecontents}
\begin{filecontents}{buxpkgs.aux}
\relax 
\IfFileExists{babel.sty}{%
  \select@language{german}
  \@writefile{toc}{\select@language{german}}
  \@writefile{lof}{\select@language{german}}
  \@writefile{lot}{\select@language{german}}
}{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Das Paket \textsf  {buxtheorem}}{2}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Implementation}{3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.1}Identifikation}{3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.2}Der Ersatz f"ur den \LaTeXe  {}-Kernel}{4}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.3}Die \texttt  {NewTh}-Umgebung}{6}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.4}Voreinstellungen}{7}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {1.1.5}Die Optionen}{8}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Das Paket \textsf  {buxproof}}{12}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Implementation}{12}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Das Paket \textsf  {buxmath}}{16}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Benutzerschnittstelle}{16}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Optionen und andere Pakete}{16}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}Theorem-like Umgebungen}{16}}
\@writefile{toc}{\contentsline {paragraph}{Beispiele}{17}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.3}Beweise}{18}}
\@writefile{toc}{\contentsline {paragraph}{Beispiel}{18}}
\@writefile{toc}{\contentsline {paragraph}{}{19}}
\@writefile{toc}{\contentsline {paragraph}{Beispiel}{19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.4}Benannte Aussagen}{20}}
\@writefile{toc}{\contentsline {paragraph}{Beispiel}{20}}
\newlabel{BenannteAussage}{{{T}}{20}}
\newlabel{Aussagensystem}{{{T}}{20}}
\newlabel{SichSelbst}{{{T.2}}{20}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.5}Besondere Symbole}{20}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Implementierung}{24}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}Optionen und andere Pakete}{24}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}Theorem-like Umgebungen}{25}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.3}Beweise}{27}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.4}Benannte Aussagen}{28}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.5}Besondere Symbole}{29}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Das Paket \textsf  {buxphilosophy}}{36}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Das Paket \textsf  {buxlayout}}{37}}
\@writefile{toc}{\contentsline {section}{\numberline {6}Das Paket \textsf  {buxmisc}}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Erweiterung der Z"ahlerkommandos}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Z"ahlen auf Deutsch}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Deutsche Seitenzahlen}{44}}
\end{filecontents}
%</installation>
%    \end{macrocode}
%     Jetzt liegen die folgenden Dateien vor:
%     \begin{enumerate}
%       \item \file{buxpkgs.dtx}, die Datei, die alles enth"alt.
%       \item \file{buxpkgs.toc}, ihr Inhaltsverzeichnis.
%       \item \file{buxpkgs.aux}, ihre Hilfsdatei.
%       \item \file{buxtheorem.sty}, \file{buxproof}, \file{buxmath}
%       \item \file{ordnumbered.pko}, \file{prenumbered.pko}
%       \item \file{buxphilosophy.sty}
%       \item \file{buxlayout.sty}
%       \item \file{buxmisc.sty}
%     \end{enumerate}
%     Die \file{.sty}-Dateien und die \file{.pko}-Dateien geh"oren
%     in ein Verzeichnis, wo \TeX\ nach Paketen sucht.
%
% ********************************************** END METACOMMENT \fi
% 
% \iffalse ********************************************* METACOMMENT
%
% Dieser Abschnitt erscheint nicht in der Dokumentation
%
%   \Section{Die Erzeugung der Dokumentation}
%     Nun liegen also alle Dateien vor. Jetzt sollte die Beschreibung
%     erfolgen. Zum Gl"uck k"onnen wir die Pakete schon benutzen.
%     Das folgende ist der Inhalt von \file{buxpkgs.drv}. Diese
%     Datei durch \LaTeX\ jagen!
%    \begin{macrocode}
%<*driver>
\documentclass[12pt]{ltxdoc}
  \IfFileExists{babel.sty}{%
    \usepackage[german]{babel}
  }{%
    \usepackage{german}
  }
  \usepackage{buxphilosophy}
  \usepackage{buxmisc}
  \pagestyle{plain}
  
  \newcommand{\pkg}[1]{\textsf{#1}}
  \newcommand{\cls}[1]{\textsf{#1}}
  \newcommand{\file}[1]{\texttt{#1}}
  \newcommand{\env}[1]{\texttt{#1}}
  \newcommand{\opt}[1]{\textsf{#1}}
  \newcommand{\sect}[1]{{#1}}
  \newcommand{\sty}[1]{\emph{#1}}
  \newcommand{\ARG}[1]{\emph{#1}}
  \newcommand{\GobbleOne}[1]{}
  \newcommand{\Section}{\newpage\section}
  \newcommand{\finalnopagebreak}{\nopagebreak}
  \newcommand{\finalpagebreak}{\pagebreak}
 
\begin{document}
  \title{Einige Pakete f"ur \LaTeXe}
  \author{Kai-Uwe Bux}
  \date{\begin{tabular}{ll}
           Datum:   & \ThisDate\\
           Version: & \ThisVersion
        \end{tabular}}
 \maketitle\thispagestyle{empty}\newpage
  \setcounter{page}{1}\tableofcontents
  \DocInput{buxpkgs.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
% ********************************************** END METACOMMENT \fi
%
% \Section{Das Paket \pkg{buxtheorem}}
%   In \LaTeXe\ sehen alle Theoreme, Definitionen, Bemerkungen, etc.\ gleich
%   aus. Im folgenden werden wir, inspiriert durch Ideen von Mittelbach
%   und Sch"opf, eine Style-Option enwickeln, die diesem Umstand abhilft.
%
%   Theorem-like Environments werden mit |\newtheorem| definiert.
%   Das Aussehen der Theoreme wird dann durch f"unf Document Style
%   Parameter bestimmt.
%   Das sind:
%   \begin{itemize}
%     \item
%       |\@thmcountsep|
%     \item
%       |\@thmcounter{|\ARG{name}|}|
%     \item
%       |\@begintheorem{|\ARG{name}|}{|\ARG{number}|}|
%     \item
%       |\@opargbegintheorem{|\ARG{name}|}{|\ARG{number}|}{|\ARG{oparg}|}|
%     \item
%       |\@endtheorem|
%   \end{itemize}
%   Diese sind in \LaTeXe\ global und f"ur alle Theoreme einheitlich
%   voreingestellt.
%   \DescribeMacro{\theoremstyle}
%   Wir stellen |\newtheorem| das neue Macro
%   |\theoremstyle{|\emph{style}|}| zur Seite.
%   Ein Beispiel: Die Definition
%   \begin{verbatim}
%     \theoremstyle{plain}
%     \newtheorem{Satz}{Satz}[section]
%     \theoremstyle{definition}
%     \newtheorem{Def}[Satz]{Definition}
%   \end{verbatim}
%   vereinbart die Umgebung \env{Satz}, die so aussehen soll, wie es in
%   \LaTeXe\ "ublich ist. Hingegen wird die Umbegung \env{Def} anders
%   aussehen.
%
%   Au"serdem definieren wir eine allgemeine theorem-like Umgebung.
%   \DescribeEnv{NewTh}
%   Das ist die \env{NewTh}-Umgebung.
%   Ihr Aufruf geschieht so:
%   \begin{quote}
%     |\begin{NewTh}<|\ARG{style}|>[|\ARG{counter}|]{|\ARG{title}|}| \\
%     |\end{NewTh}|
%   \end{quote}
%   oder
%   \begin{quote}
%     |\begin{NewTh}<|\ARG{style}|>[|\ARG{counter}|]{|\ARG{title}|}[|\ARG{option}|]| \\
%     |\end{NewTh}|
%   \end{quote}
%   aufgerufen. Die |[|\ARG{counter}|]|-Angabe ist optional.
%   Sie ist n"utzlich f"ur Dinge wie
%   \begin{NewTh}<definition>[Satz]{Satz und Definition}[Geschlecht]
%     Es gibt genau eine nat"urliche Zahl $g$ die folgenden
%     achtzehn "aquivalenten Bedingungen gen"ugt: \ldots .
%     
%     Wir nennen $g$ das \notion{Geschlecht}.
%   \end{NewTh}
%   was produziert wurde durch:
%   \begin{verbatim}
%   \begin{NewTh}<definition>[Satz]{Satz und Definition}[Geschlecht]
%     Es gibt genau eine nat"urliche Zahl $g$ die folgenden
%     achtzehn "aquivalenten Bedingungen gen"ugt: \ldots .
%     
%     Wir nennen $g$ das \notion{Geschlecht}.
%   \end{NewTh}
%   \end{verbatim}
%   Will man die Nummerierung unterdr"ucken, so geht das zum Beispiel
%   so:
%   \begin{verbatim}
%   \begin{NewTh}<STATEMENT>{Theorema Egregium}
%     Die geod"atische Kr"ummung ist eine Gr"o"se der inneren Geometrie
%     einer Fl"ache.
%   \end{NewTh}
%   \end{verbatim}
%   Das liefert:
%   \begin{NewTh}<STATEMENT>{Theorema Egregium}
%     Die geod"atische Kr"ummung ist eine Gr"o"se der inneren Geometrie
%     einer Fl"ache.
%   \end{NewTh}
%   
%   \subsection{Implementation}
%     \subsubsection{Identifikation}
%       Zuerst pr"ufen wir, ob das
%       Paket schon geladen ist. Andernfalls identifizieren wir
%       das Paket:
%    \begin{macrocode}
%<*buxtheorem>
\@ifundefined{Pkg@buxtheorem}{\def\Pkg@buxtheorem{}}{\endinput}
\typeout{Package: `buxtheorem'. Version \FileVersion\space of \FileDate.}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{buxtheorem}[\FileDate\space local LaTeX2e package]
%    \end{macrocode}
%     \subsubsection{Der Ersatz f"ur den \LaTeXe{}-Kernel}
%       Wir reproduzieren hier den relevanten Teil des \LaTeXe{}-Kernels
%       vollst"andig und nehmen die n"otigen Modifikationen vor. 
%   \begin{macro}{\theoremstyle}
%          Die Grundidee der Implementation ist folgende: Durch
%    \begin{macrocode}    
\newcommand{\theoremstyle}[1]{\@ifundefined{th@#1}%
{\PackageWarning{buxtheorem}{Theoremstyle `#1' undefined, using `plain'.}
\xdef\@theoremstyle{plain}}
{\xdef\@theoremstyle{#1}}}
%    \end{macrocode}
%          wird bei einem Aufruf von |\theoremstyle| der angegebene
%          Style in der Variablen |\@theoremstyle| gespeichert. Dem
%          korrespondiert das Macro |\th@|\sty{style}, das deklariert
%          sein mu"s, damit der Style erkannt wird. Dieses Macro definiert
%          die f"unf oben aufgez"ahlten Document Style Parameter f"ur den
%          entsprechenden Style.
%       \end{macro}
%       Nehmen wir jetzt einmal an, ein Theoremstyle sei vereinbart. Das
%       hei"st, |\@theoremstyle| hat einen bestimmten Wert --- zum Beispiel
%       |plain| --- und das zugeh"orige Macro --- in unserem Fall
%       |\th@plain| --- ist definiert. Was dann?
%       \begin{macro}{\newtheorem}
%         Sehen wir uns an, was bei einem Aufruf von |\newtheorem|
%         geschieht. Es gibt drei m"ogliche Formen, |\newtheorem|
%         aufzurufen, je nachdem, ob und wo man das m"ogliche optionale
%         Argument verwendet. Sind die beiden ersten Argumente regul"ar, so
%         kann ein drittes optional einen Z"ahler spezifizieren. In diesem
%         Fall wird zun"achst |\@nthm| aufgerufen, was dann entschiedet,
%         ob zwei Argumente (|\@ynthm#1#2|) oder ob ein drittes optionales
%         Argument (|\@xnthm#1#2[#3]|) vorliegt.
%         Ist das zweite schon optional eine Z"ahlerangabe, so ist das dritte
%         Argument obligatorisch. Hier wird |\@othm#1[#2]#3| expandiert.
%
%         Das ist zwar schon im \LaTeXe{}-Kernel definiert, doch wir stellen
%         sicher, da"s sich nichts ge"andert hat.
%    \begin{macrocode}
\renewcommand{\newtheorem}[1]{\@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
\renewcommand{\@nthm}[2]{\@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@ynthm}
%         Jetzt m"ussen wir die drei Alternativen der Reihe nach durchgehen.
%         Die einfachste ist |\@ynthm#1#2|, da wir hier nur einen Z"ahler
%         zu ber"ucksichtigen haben. Die zentrale Idee wird schon hier deutlich.
%         Wenn wir mit |\newtheorem{Def}{Definition}| eine neue Umgebung
%         erkl"aren, m"ussen zwei Dinge getan werden. Zuf"orderst sind die Macros
%         |\Def| und |\endDef| zu erkl"aren, damit |\begin{Def}|
%         und |\end{Def}| bearbeitet werden. Zum zweiten mu"s aber auch
%         ein neuer Z"ahler f"ur diese Umgebungen vereinbart werden.
%
%    \begin{macrocode}
\def\@ynthm#1#2{\expandafter\@ifdefinable\csname #1\endcsname{%
%    \end{macrocode}
%         Hier testen wir, ob die Umgebung \env{Def} schon erkl"art ist. Man mag
%         sich fragen, warum wir das nicht schon in der Definition von
%         |\newtheorem| untergebracht haben, schlie"slich m"ussen wir es auf
%         diese Weise dreimal machen. Der Grund ist, da"s wir ansonsten nach
%         einem Fehler in |\newtheorem| die Argumente nicht mehr sauber
%         verarbeiten k"onnten, so da"s wahrscheinlich unmotivierter Text in der
%         Pr"aambel eines Dokumentes "ubrig bleiben w"urde. Wenn die Umgebung
%         schon definiert ist, erhalten wir also eine Fehlermeldung. In
%         anderen, g"unstigen Fall definieren wir zuerst die n"otigen Macros:
%    \begin{macrocode}
\expandafter\xdef\csname #1\endcsname{%
%    \end{macrocode}
%         Damit wird |\Def| global und expandiert definiert.
%    \begin{macrocode}
  \expandafter\noexpand\csname th@\@theoremstyle\endcsname
  \noexpand\@thm{#1}{#2}}%
%    \end{macrocode}
%         Nehmen wir an, |\@theoremstyle| w"are \sty{definition}, so
%         w"are |\Def| nachher so definiert, als h"atten wir nur
%         \begin{verbatim}
%           \gdef\Def{\th@definition\@thm{Def}{Definition}}
%         \end{verbatim}
%         vereinbart. Man erkennt, da"s bei einem Aufruf von |\Def|
%         das Macro |\th@definition| Gelegenheit hat, das Verhalten
%         von |\@thm| "uber die Document Style Parameter zu beeinflussen.
%         W"ahrend wir die Umgebung schlie"sen, setzen wir voraus, da"s der
%         Aufruf von |\th@definition| beim "Offnen noch wirkt.
%    \begin{macrocode}
\expandafter\gdef\csname end#1\endcsname{\@endtheorem}%
%    \end{macrocode}
%         Auch bei den Z"ahlern m"ussen wir |\th@definition| die
%         Gelegenheit geben |\@thmcounter#1| umzudefinieren.
%    \begin{macrocode}
\@definecounter{#1}%
\expandafter\xdef\csname the#1\endcsname{%
  \noexpand\@thmcounter{#1}}}}
%    \end{macrocode}
%         Das |\noexpand|-Macro, das wir eingef"ugt haben, tut dies.
%       \end{macro}
%       \begin{macro}{\@xnthm}
%         Nachdem wir |\@ynthm| kennengelernt haben, sollte es keine
%         Probleme bereiten, die beiden anderen Macros zu verstehen.
%    \begin{macrocode}
\def\@xnthm#1#2[#3]{\expandafter\@ifdefinable\csname #1\endcsname{%
\expandafter\xdef\csname #1\endcsname{%
  \expandafter\noexpand\csname th@\@theoremstyle\endcsname
  \noexpand\@thm{#1}{#2}}%
\expandafter\gdef\csname end#1\endcsname{\@endtheorem}%
%    \end{macrocode}
%         Hier kann bei den Z"ahlern |\th@definition| auch noch
%         |\@thmcountersep| umdefinieren.
%    \begin{macrocode}
\@definecounter{#1}\@newctr{#1}[#3]%
\expandafter\xdef\csname the#1\endcsname{%
  \expandafter\noexpand\csname the#3\endcsname
  \noexpand\@thmcountersep
  \noexpand\@thmcounter{#1}}}}
%    \end{macrocode}
%         In diesem Fall ben"otigen wir also zwei |\noexpand|-Macros.
%       \end{macro}
%       \begin{macro}{\@othm}
%         Bei |\@othm| mu"s man aufpassen, weil sich die Nummern der
%         Argumente verschieben. Au"serdem erfolgt hier zus"atzlich eine
%         Abfrage, ob der Counter, dem die Umgebung angeschlossen werden
%         soll, existiert.
%    \begin{macrocode}
\def\@othm#1[#2]#3{\expandafter\@ifdefinable\csname #1\endcsname{%
\@ifundefined{c@#2}{\nocountererr{#2}}{%
\expandafter\xdef\csname #1\endcsname{%
  \expandafter\noexpand\csname th@\@theoremstyle\endcsname
  \noexpand\@thm{#2}{#3}}%
\expandafter\gdef\csname end#1\endcsname{\@endtheorem}%
\global\@namedef{the#1}{\@nameuse{the#2}}}}}
%    \end{macrocode}
%         Daf"ur gibt es, wie man sieht, keine Probleme mit den Z"ahlern.
%       \end{macro}
%
%       \begin{macro}{\@thm}
%         Steht im Dokument |\begin{Def}|, so expandiert das ja im
%         wesentlichen zu |\Def|, was wieder zu
%         |\th@definition\@thm{Def}{Definition}| weiterexpandiert.
%         Es ist also an der Zeit sich, |\@thm#1#2| genauer anzusehen.
%         Dieses Macro nimmt wieder eine Fallunterscheidung vor, ob
%         die Umgebung mit oder ohne optionales Argument aufgerufen wird.
%    \begin{macrocode}
\def\@thm#1#2{\refstepcounter
  {#1}\@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@xthm}
%         Im Fall des Aufrufs ohne Argumente, wird |\@begintheorem|
%         expandiert.
%    \begin{macrocode}
\def\@xthm#1#2{\@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@ythm}
%         Und im Falle eines Aufrufs mit optinalem Argument, wird
%         |\@opargbegintheorem| ausgef"uhrt.
%    \begin{macrocode}
\def\@ythm#1#2[#3]{\@opargbegintheorem{#2}{\csname 
      the#1\endcsname}{#3}\ignorespaces}
%    \end{macrocode}
%       \end{macro}
%     \subsubsection{Die \env{NewTh}-Umgebung}
%       Wegen des ungew"ohnlichen Formats, m"ussen wir die
%       \env{NewTh}-Umgebung durch zwei Macros definieren.
%       \begin{macro}{\NewTh}
%         Zuerst |\NewTh<#1>|. Das Argument gibt den zu verwendenden
%         Theoremstyle an. Wir m"ussen also Vorsorge treffen f"ur den Fall,
%         da"s er nicht erkl"art ist.
%    \begin{macrocode}
\def\NewTh<#1>{\@ifundefined{th@#1}%
{\PackageWarning{buxtheorem}{Theoremstyle `#1' undefined, using `plain'.}%
\th@plain}%
{\csname th@#1\endcsname}\New@Th}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\New@Th}
%         Nachdem der Theoremstyle eingestellt ist, wird |\New@Th|
%         expandiert. Hier ist eine optionale Z"ahlerangabe zu bearbeiten.
%    \begin{macrocode}
\newcommand{\New@Th}{\@ifnextchar[{\Counter@NewTh}{\NoCounter@NewTh}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\Counter@NewTh}
%         Fangen wir mit dem Fall an, da"s ein Z"ahler angegeben wird.
%    \begin{macrocode}
\def\Counter@NewTh[#1]#2{\@thm{#1}{#2}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\NoCounter@NewTh}
%         Wenn kein Z"ahler angegeben wird, m"ussen wir ein Dummy benutzen.
%    \begin{macrocode}
\def\NoCounter@NewTh#1{\@thm{@NewTh}{#1}}
%    \end{macrocode}
%       \end{macro}
%       Den Z"ahler m"ussen wir nat"urlich noch definieren.
%    \begin{macrocode}
\newcounter{@NewTh}
\def\the@NewTh{}
%    \end{macrocode}
%       \begin{macro}{\endNewTh}
%         Wir w"ahlen hier einen ganz einfachen Weg, der allerdings
%         voraussetzt, da"s der Theoremstyle unterwegs nicht umdefiniert wird.
%    \begin{macrocode}
\def\endNewTh{\@endtheorem}
%    \end{macrocode}
%       \end{macro}
%     \subsubsection{Voreinstellungen}
%       \begin{macro}{\th@plain}
%       Hier wird der Theoremstyle |plain| erkl"art, der das unter
%       \LaTeXe\ "ubliche Aussehen erzeugt.
%    \begin{macrocode}
\def\th@plain{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\trivlist
    \item[\hskip \labelsep{\bfseries
                ##1\th@expandcounter{##2}}]\itshape}%
  \def\@opargbegintheorem##1##2##3{\trivlist
    \item[\hskip \labelsep{\bfseries 
                ##1\th@expandcounter{##2}\ (##3)}]\itshape}%
  \def\@endtheorem{\endtrivlist}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@expandcounter}
%         Dabei verwenden wir |\th@expandcounter|. Das ist g"unstig,
%         wenn man mit
%         \begin{verbatim}
%           \newtheorem{thm}{Theorem}
%           \renewcommand{\thethm}{}
%         \end{verbatim}
%         die Nummerierung unterdr"ucken m"ochte.
%    \begin{macrocode}
\def\th@expandcounter#1{%
  \edef\@tempa{#1}%
  \ifx\@tempa\empty
  \else
    \ \@tempa
  \fi
}
%    \end{macrocode}
%       \end{macro}
%       Der Theoremstyle |plain| ist voreingestellt. Dadurch f"allt
%       Das Paket gar nicht auf, wenn es ohne Optionen geladen wird.
%    \begin{macrocode}
\theoremstyle{plain}
%    \end{macrocode}
%     \subsubsection{Die Optionen}
%       Es werden zur Zeit nur zwei Optionen unterst"utzt --- die
%       \opt{ordnumbered}-Option und \opt{prenumbered}-Option. 
%       Beide definieren drei Theoremstyles: \sty{statement},
%       \sty{STATEMENT} und \sty{definition}. Erstere orientiert sich
%       dabei am \LaTeXe{}-Standard, w"ahrend letztere die Theoremstyles
%       so definiert, da"s die Nummern vorangestellt erscheinen.
%       \begin{macro}{\@LoadTheoremOption}
%         Die Optionen sind dadurch realisiert, da"s jeweilige
%         Zusatzdateien mit Extension ">.pko"< geladen werden.
%    \begin{macrocode}
\newcommand{\@LoadTheoremOption}[1]{\InputIfFileExists{#1.pko}{}%
{\PackageError{buxtheorem}{File `#1.pko' not found. 
      Check your installation.}}}
%    \end{macrocode}
%       \end{macro}
%       Damit ist alles weitere leicht:
%    \begin{macrocode}
\DeclareOption{ordnumbered}{\@LoadTheoremOption{\CurrentOption}}
\DeclareOption{prenumbered}{\@LoadTheoremOption{\CurrentOption}}
\DeclareOption*{\PackageWarning{buxtheorem}{Option `\CurrentOption'
  undeclared. Trying `\CurrentOption.pko'}%
  \@LoadTheoremOption{\CurrentOption}}
\ProcessOptions
%</buxtheorem>
%    \end{macrocode}
%       Jetzt sind noch die beiden Dateien anzugeben. Wir beginnen mit
%       \file{ordnumbered.pko}.
%       Wie "ublich identifizieren wir zun"achst die Datei und bearbeiten
%       den Fall, da"s schon eine Option zu diesem Paket geladen ist.
%    \begin{macrocode}
%<*ordnumbered>
\@ifundefined{Pkg@buxtheoremOption}{\def\Pkg@buxtheoremOption{}}%
{\PackageWarning{buxtheorem}{Standard theorem styles are already declared.}}
\ProvidesFile{ordnumbered.pko}[\FileDate \space Option of `buxtheorem']
\typeout{PackageOption: `buxtheorem/ordnumbered'. Version \FileVersion
                                           \space of \FileDate.}
%    \end{macrocode}
%       \begin{macro}{\th@statement}
%         Hier sind, wie gesagt, drei Styles zu definieren. Zuerst
%         \sty{statement}. Er unterscheidet sich von |plain| nur
%         durch einen Punkt, der am Ende des Theoremkopfes steht.
%    \begin{macrocode}
\def\th@statement{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\trivlist
    \item[\hskip \labelsep{\bfseries
                ##1\th@expandcounter{##2}.}]\itshape}%
  \def\@opargbegintheorem##1##2##3{\trivlist
    \item[\hskip \labelsep{\bfseries 
                ##1\th@expandcounter{##2}\ (##3).}]\itshape}%
  \def\@endtheorem{\endtrivlist}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@expandcounter}
%         Dabei verwenden wir |\th@expandcounter|. Das ist g"unstig,
%         wenn man mit
%         \begin{verbatim}
%           \newtheorem{thm}{Theorem}
%           \renewcommand{\thethm}{}
%         \end{verbatim}
%         die Nummerierung unterdr"ucken m"ochte.
%    \begin{macrocode}
\def\th@expandcounter#1{%
  \edef\@tempa{#1}%
  \ifx\@tempa\empty
  \else
    \ \@tempa
  \fi
}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@definition}
%         Als n"achstes erkl"aren wir den \sty{definition}-Style. Er
%         unterscheidet sich nur dadurch, da"s die Theorembodys aufrecht
%         gesetzt werden.
%    \begin{macrocode}
\def\th@definition{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\trivlist
    \item[\hskip \labelsep{\bfseries
                ##1\th@expandcounter{##2}.}]}%
  \def\@opargbegintheorem##1##2##3{\trivlist
    \item[\hskip \labelsep{\bfseries 
                ##1\th@expandcounter{##2}\ (##3).}]}%
  \def\@endtheorem{\endtrivlist}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@STATEMENT}
%         \sty{STATEMENT} wird ein Style f"ur Wichtiges. Der Theoremk"orper
%         wird einger"uckt.
%    \begin{macrocode}
\def\th@STATEMENT{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\description
    \item[{\bfseries
                ##1\th@expandcounter{##2}.}]\itshape}%
  \def\@opargbegintheorem##1##2##3{\description
    \item[{\bfseries 
                ##1\th@expandcounter{##2}\ (##3).}]\itshape}%
  \def\@endtheorem{\endtrivlist}}
%</ordnumbered>
%    \end{macrocode}
%       \end{macro}
%       Jetzt m"ussen wir noch den Inhalt von \file{prenumbered.pko} festlegen.
%       Wieder der "ubliche Anfang.
%    \begin{macrocode}
%<*prenumbered>
\@ifundefined{Pkg@buxtheoremOption}{\def\Pkg@buxtheoremOption{}}%
{\PackageWarning{buxtheorem}{Standard theorem styles are already declared.}}
\ProvidesFile{prenumbered.pko}[\FileDate \space Option of `buxtheorem']
\typeout{PackageOption: `buxtheorem/prenumbered'. Version \FileVersion
                                           \space of \FileDate.}
%    \end{macrocode}
%       Wir haben wieder drei Macros zu definieren.
%       \begin{macro}{\th@statement}
%    \begin{macrocode}
\def\th@statement{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\trivlist
    \item[\hskip \labelsep{\bfseries
                \th@expandcounter{##2}{##1}.}]\itshape}%
  \def\@opargbegintheorem##1##2##3{\trivlist
    \item[\hskip \labelsep{\bfseries 
                \th@expandcounter{##2}{##1}\ (##3).}]\itshape}%
  \def\@endtheorem{\endtrivlist}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@expandcounter}
%         Dieses Macro definieren wir auch um, so da"s Klammern erzeugt
%         werden.
%    \begin{macrocode}
\def\th@expandcounter#1{%
  \edef\@tempa{#1}%
  \ifx\@tempa\empty
  \else
    \ (\@tempa)
  \fi
}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@definition}
%    \begin{macrocode}
\def\th@definition{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\trivlist
    \item[\hskip \labelsep{\bfseries
                \th@expandcounter{##2}{##1}.}]}%
  \def\@opargbegintheorem##1##2##3{\trivlist
    \item[\hskip \labelsep{\bfseries 
                \th@expandcounter{##2}{##1}\ (##3).}]}%
  \def\@endtheorem{\endtrivlist}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\th@STATEMENT}
%    \begin{macrocode}
\def\th@STATEMENT{%
  \def\@thmcounter##1{\arabic{##1}}%
  \def\@thmcountersep{.}%
  \def\@begintheorem##1##2{\description
    \item[{\bfseries
                \th@expandcounter{##2}{##1}.}]\itshape}%
  \def\@opargbegintheorem##1##2##3{\description
    \item[{\bfseries
                \th@expandcounter{##2}{##1}\ (##3).}]\itshape}%
  \def\@endtheorem{\endtrivlist}}
%</prenumbered>
%    \end{macrocode}
%       \end{macro}
%
% \Section{Das Paket \pkg{buxproof}}
%   \DescribeMacro{\newproof}
%   Hier stellen wir dem |\newtheorem|-Befehl von \LaTeXe\ ein
%   Macro |\newproof| zur Seite. Es dient dazu, proof-like Umgebungen
%   zu definieren. Eine solche Umgebung ist zum Beispiel die
%   \env{proof}-Umgebung, die im \env{buxmath}-Package beschrieben wird.
%
%   Eine proof-like Umgebung existiert immer in zwei Varianten, deren
%   zweite einfach durch Anh"angen von ">$*$"< an den Umgebungsnamen
%   aufgerufen wird. Der Unterschied besteht darin, da"s die gesternte
%   Variante kein Beweisendezeichen erzeugt. Das Beweisendezeichen
%   mu"s ebenso wie der zu druckende Name als Argument an
%   |\newproof| "ubergeben werden.
%
%   Jede proof-like Umgebung hat lokal zwei weitere Umgebungen. Die
%   \env{claim}- und die \env{demonstration}-Umgebung. Letztere hat
%   auch wieder die Variante \env{demonstration$*$}. Die ausgedruckten
%   Namen dieser Umgebungen m"ussen beim Aufruf von |\newproof|
%   vereinbart werden. Ebenso das Beweisendezeichen f"ur die
%   \env{demonstration}-Umgebung.
%
%   Das Format f"ur |\newproof| ist also
%     \begin{quote}
%       |\newproof{|\ARG{name}|}{|\ARG{ProofName}|}{|\ARG{ProofEnd}|}{|\ARG{ClaimName}|}{|\ARG{Dem.Name}|}{|\ARG{Dem.End}|}|
%     \end{quote}
%
%   \subsection{Implementation}
%     Das einfachste ist wie immer der Anfang. Wir sehen nach, ob das
%     Paket schon geladen ist. Anderfalls identifiziert sich \pkg{buxproof}.
%    \begin{macrocode}
%<*buxproof>
\@ifundefined{Pkg@buxproof}{\def\Pkg@buxproof{}}{\endinput}
\typeout{Package: `buxproof'. Version \FileVersion\space of \FileDate.}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{buxproof}[\FileDate\space local LaTeX2e package]
%    \end{macrocode}
%
%     Die Idee der Implementation ist ziemlich einfach. Die f"unf
%     Parameter werden in entprechenden Macros abgelegt. Beim Aufruf
%     der definierten Umgebung werden sie in f"unf Variablen geladen.
%     diese sind:
%    \begin{macrocode}
\newcommand{\proof@name}{}
\newcommand{\proof@symbol}{}
\newcommand{\claim@name}{}
\newcommand{\demonstration@name}{}
\newcommand{\dem@symbol}{}
%    \end{macrocode}
%     \begin{macro}{\proof@restore}
%       |\proof@restore#1| setzt die oben eingef"uhrten Variablen
%       auf die n"otigen Werte. Nehmen wir einmal an, \env{proof} sei
%       eine proof-like Umgebung. Dann w"urden |\begin{proof}|
%       und |\begin{proof*}| beide jeweils am Anfang
%       |\proof@restore{proof}| ausf"uhren.
%    \begin{macrocode}
\newcommand{\proof@restore}[1]{%
  \@proof@restore{#1}{proof@name}%
  \@proof@restore{#1}{proof@symbol}%
  \@proof@restore{#1}{claim@name}%
  \@proof@restore{#1}{demonstration@name}%
  \@proof@restore{#1}{dem@symbol}}
%    \end{macrocode}
%     \end{macro}
%     \begin{macro}{\@proof@restore}
%       Dabei liegt der eigentliche Trick hier:
%    \begin{macrocode}
\newcommand{\@proof@restore}[2]{\expandafter\xdef
             \csname #2\endcsname{\expandafter\noexpand
                                  \csname #1@#2\endcsname}}
%    \end{macrocode}
%       Got it?
%     \end{macro}
%     \begin{macro}{\newproof}
%       Sowas sieht dann so aus. Wir haben sage und schreibe sechs Argumente.
%    \begin{macrocode}
\newcommand{\newproof}[6]{%
%    \end{macrocode}
%       Die f"unf letzten m"ussen einfach nur f"ur |\proof@restore|
%       abgespeichert werden.
%    \begin{macrocode}
  \@namedef{#1@proof@name}{#2}%
  \@namedef{#1@proof@symbol}{#3}%
  \@namedef{#1@claim@name}{#4}%
  \@namedef{#1@demonstration@name}{#5}%
  \@namedef{#1@dem@symbol}{#6}%
%    \end{macrocode}
%       Das erste hingegen definiert eine Umgebung.
%    \begin{macrocode}
  \newenvironment{#1}{\proof@restore{#1}\@start@proof}{\@end@proof}%
%    \end{macrocode}
%       Au"serdem sind da noch die $*$-Versionen.
%    \begin{macrocode}
  \@namedef{#1*}{\proof@restore{#1}\@start@proof}%
  \@namedef{end#1*}{\@end@proof@star}}
%    \end{macrocode}
%       Und das war's auch schon.
%     \end{macro}
%     Jetzt h"angt nat"urlich alles an |\@start@proof| und den
%     beiden Macros zum Schlie"sen der Umgebung. Dazu brauchen wir
%     einige Vorbereitungen.
%
%     Wir k"ummern uns als erstes um die \env{claim}- und
%     \env{demonstration}-Umgebungen.
%     Die \env{claim}-Umgebung braucht einen Z"ahler.
%    \begin{macrocode}
\newcounter{@claim}
\renewcommand{\the@claim}{\Alph{@claim}}
%    \end{macrocode}
%       \begin{macro}{\@claim}
%         Das |\@claim|-Macro "offnet eine \env{claim}-Umgebung.
%         Hier sind |\qed| und |QED| so zu definieren, da"s
%         die richtigen Symbole herauskommen.
%    \begin{macrocode}
\newcommand{\@claim}{\refstepcounter{@claim}\description
  \renewcommand{\qed}{\make@qed{\dem@symbol}}
  \newcommand{\QED}{\make@qed{\proof@symbol}}
  \item[\textsc{\claim@name~\the@claim .}\ ]}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@endclaim}
%         Dieses Macro beendet die \env{claim}-Umgebung.
%    \begin{macrocode}
\def\@endclaim{\enddescription}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@dem}
%         Das |\@dem|-Macro wird zum Starten der \env{dem}-Umgebung
%         benutzt. Es mu"s |\qed| und |QED| so definieren, da"s
%         die richtigen Symbole rauskommen.
%    \begin{macrocode}
\newcommand{\@dem}{\list{}{\labelwidth\z@
  \labelsep\z@
  \itemindent-\leftmargin
  \renewcommand{\qed}{\make@qed{\dem@symbol}}%
  \newcommand{\QED}{\make@qed{\proof@symbol}}%
  \def\makelabel##1{{##1}}}\item[\textsc{\demonstration@name.}\ ]}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@enddem}
%         Entsprechend beendet das |\@enddem|-Macro eine
%         \env{dem}-Umgebung. F"ur die $*$-Version ist
%         |\@enddemstar| zust"andig.
%    \begin{macrocode}
\newcommand{\@enddem}{\make@qed{\dem@symbol}\enddescription}
\newcommand{\@enddemstar}{\enddescription}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\local@definitions}
%         Am Anfang einer \env{proof}-Umgebung m"ussen die \env{claim}-
%         und \env{dem}-Umgebungen erkl"art werden. Dazu dient das
%         folgende Macro.
%    \begin{macrocode}
\newcommand{\local@definitions}{%
  \def\demonstration{\@dem}%
  \def\enddemonstration{\@enddem}%
  \@namedef{demonstration*}{\@dem}%
  \@namedef{enddemonstration*}{\@enddemstar}%
  \def\claim{\@claim}%
  \def\endclaim{\@endclaim}%
  \setcounter{@claim}{0}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@start@proof}
%         Wir haben zun"achst ein optionales Argument zu ber"ucksichtigen.
%    \begin{macrocode}
\newcommand{\@start@proof}{\@ifnextchar [{\@proofopt}{\@proof}}%
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@proofopt}
%         Sehen wir uns, wie optionale Argumente behandelt
%         werden.
%    \begin{macrocode}
\def\@proofopt[#1]{\begingroup\local@definitions
  \trivlist\item[]{{\bfseries\proof@name\ #1.}\ }}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@proof}
%         Ordin"are Beweise sind noch einfacher.
%    \begin{macrocode}
\newcommand{\@proof}{\begingroup\local@definitions
  \trivlist\item[]{{\bfseries\proof@name .}\ }}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@end@proof}
%         Das Ende der Umgebung ist daf"ur geradeheraus implementiert.
%    \begin{macrocode}
\newcommand{\@end@proof}{\make@qed{\proof@symbol}\endtrivlist\endgroup}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@end@proof@star}
%         Und jetzt noch die $*$-Version ohne Beweisendezeichen.
%    \begin{macrocode}
\newcommand{\@end@proof@star}{\endtrivlist\endgroup}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\qed}
%         Damit man auch unabh"angig von der automatischen Erzeugung
%         die Beweisendezeichen verwenden kann, stellen wir noch
%         den |\qed|-Befehl zur Verf"ugung:
%    \begin{macrocode}
\newcommand{\qed}{\make@qed{\proof@symbol}}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\make@qed}
%         Dabei ist |\make@qed| ein Macro, das das Beweisendezeichen ans
%         Zeilenende zwingen soll.
%    \begin{macrocode}
\newcommand{\make@qed}[1]{%
  \ifmmode % wir nehmen mal an, das wir im display-mode sind.
           % und daá keine Gleichungsnummer st”rt.
    \eqno{\hbox{\quad\hbox{#1}}}%
  \else
    \leavevmode\unskip\penalty9999
    \null\nobreak\hfill\nobreak
    \hbox{\quad\hbox{#1}}%
  \fi
}
%</buxproof>
%    \end{macrocode}
%       \end{macro}
%
%
% \Section{Das Paket \pkg{buxmath}}
%   \subsection{Benutzerschnittstelle}
%     \subsubsection{Optionen und andere Pakete}
%       Es werden zur Zeit f"unf Optionen bearbeitet:
%       \begin{itemize}
%         \item
%           \opt{amstex} l"adt das \pkg{amstex}-Paket. Es ist inzwischen
%           ersetzt durch eine Reihe von Paketen. Wird diese Option nicht
%           angegeben, so werden an seiner Stelle die modernen Varianten
%           \pkg{amsmath} und \pkg{amsfonts} geladen.
%         \item
%           \opt{ordnumbered} und
%         \item
%           \opt{prenumbered} werden an \pkg{buxtheorem} "ubergeben.
%           Voreingestellt ist \opt{ordnumbered}
%         \item
%           \opt{GlobalNumbered} sorgt daf"ur, da"s Theoreme unabh"angig
%           von Kapiteln und Abschnitten durchgez"ahlt werden. Ansonsten
%           beginnt mit jeder \sect{section} die Z"ahlung von vorn.
%         \item
%           \opt{NoNotationlisting} hat Einflu"s auf die
%           \env{notationlist}-Umgebung. Diese ist normalerweise
%           "aquivalent zur \env{itemize}-Umgebung. Diese Option
%           raubt ihr jeglichen Einflu"s.
%       \end{itemize}
%       Entsprechend wird automatisch das Paket \pkg{buxtheorem} geladen.
%       Ferner ben"otigen wir die Pakete \pkg{amsmath}, \pkg{amsfonts} 
%       und \pkg{buxproof}, an die keine Optionen "ubergeben werden.
%
%     \subsubsection{Theorem-like Umgebungen}
%       Die Umgebungen f"ur S"atze, Definitionen, etc.\ werden unter Verwendung
%       der ">Theoremstyles"< aus \pkg{buxtheorem} definiert. Sie zerfallen
%       in folgende Gruppen:
%       \begin{description}
%         \item[statement:\ ]
%           \env{Satz}, \env{Lemma},
%           \env{Beob}(achtung), \env{Hilfs}(satz),
%           \env{Kor}(ollar), \env{Folg}(erung),
%           \env{Beh}(auptung), \env{Aus}(sage), \env{Fakt},
%           \env{Zit}(at), \env{Aufg}(abe), \env{Anw}(endung),
%           \env{Verm}utung,
%           \env{statementEmpty}.
%         \item[STATEMENT:\ ]
%           \env{Axiom}, \env{Theorem}, \env{Haupt}(satz),
%           \env{STATEMENTEmpty}.
%           \item[definition:\ ]
%           \env{Def}(inition), \env{Bsp}~(f"ur ">Beispiel"<),
%           \env{Exk}(urs), \env{Prob}(lem), \env{Not}(ation),
%           \env{Bem}(erkung), \env{definitionEmpty}.
%       \end{description}
%       F"ur Texte in Englisch haben wir au"serdem noch die Umgebungen
%       \begin{description}
%         \item[statement:\ ]
%           \env{theorem}, \env{lemma}, \env{observation},
%           \env{cor}(ollary), \env{cons}(equence), \env{claim},
%           \env{prop}(osition), \env{cit}(ation), \env{exercise},
%           \env{conj}ecture.
%         \item[STATEMENT:\ ]
%           \env{axiom}, \env{maintheorem}.
%         \item[definition:\ ]
%           \env{definition}, \env{rem}(ark), \env{example},
%           \env{probl}(em), \env{notation}.
%       \end{description}
%       Ein Hilfsmacro ist |\notion#1|. Es bewirkt eine
%       Hervorhebung des Argumentes (im Augenblick durch Unterstreichung,
%       aber das kann man als Benutzer in der Preambel "andern.)
%
%       \paragraph{Beispiele}
%       Der \sty{statement}-Style sieht so aus:
%       \begin{verbatim}
%       \begin{Satz}
%         Dieser Satz ist ganz normal. Nichts besonderes, halt ein
%         Lehrsatz wie tausend andere auch. Darum verdient er keine
%         besondere Behandlung.
%       \end{Satz}
%       \end{verbatim}
%       Das liefert schlie"slich:
%       \begin{Satz}
%         Dieser Satz ist ganz normal. Nichts besonderes, halt ein
%         Lehrsatz wie tausend andere auch. Darum verdient er keine
%         besondere Behandlung.
%       \end{Satz}
%
%       F"ur den \sty{definition}-Style kann das hier herhalten:
%       \begin{Def}
%         Ein \notion{Begriff}, ist etwas, da"s in der gegenw"artigen Version
%         unterstrichen wird.
%       \end{Def}
%       Das wurde durch die Eingabe
%       \begin{verbatim}
%       \begin{Def}
%         Ein \notion{Begriff}, ist etwas, da"s in der gegenw"artigen Version
%         unterstrichen wird.
%       \end{Def}
%       \end{verbatim}
%       erzielt.
%
%       Schlie"lich ist da noch die \env{notationlist}-Umgebung.
%       Sie ist "aquivalent zur \env{itemize}-Umgebung und kann
%       wiefolgt ben"utzt werden:
%       \begin{verbatim}
%       Sei
%       \begin{notationlist}
%         \item
%           $K$ eine K"orper und
%         \item
%           $t$ eine unbestimmte.
%       \end{notationlist}
%       \end{verbatim}
%       Das liefert:
%       Sei
%       \begin{notationlist}
%         \item
%           $K$ eine K"orper und
%         \item
%           $t$ eine unbestimmte.
%       \end{notationlist}
%
%       Wurde das Paket jedoch mit der \opt{NoNotatiolisting} aufgerufen,
%       \NoNotationlisting
%       so sieht das Ergebnis anders aus:
%       Sei
%       \begin{notationlist}
%         \item
%           $K$ eine K"orper und
%         \item
%           $t$ eine unbestimmte.
%       \end{notationlist}
%
%       Der Effekt dieser Option kann auch durch Aufruf des Macros
%       |\NoNotationlisting| erzielt werden. Das "ubliche Erscheinungsbild
%       kann durch |\Notationlisting| wieder hergestellt werden.
%
%     \subsubsection{Beweise}
%       Es gibt eine \env{proof}-Umgebung. Innerhalb dieser Umgebung
%       gibt es eine \env{claim}-Umgebung. Ihr steht
%       eine \env{demonstration}-Umgebung f"ur lokale Beweise zur
%       Seite.
%
%       Sowohl \env{proof} als auch \env{demonstration} erzeugen
%       automatisch ein Beweisendezeichen.
%       Soll dieses unabh"anig verwendet werden, so steht mit
%       |\qed| in jeder Lage ein passendes Symbol zur Verf"ugung.~(Das
%       hei"st im Augenblick, da"s innerhalb laufender Beweise f"ur
%       lokale Behauptungen das Symbol ">\demsymbol "< und sonst
%       ">\qedsymbol "< verwendet wird.
%
%       Au"serdem gibt es noch die \env{proof$*$}- und die
%       \env{demonstration$*$}-Umgebungen. In ihnen wird kein
%       Beweisendezeichen
%       erzeugt. Dies mu"s der Autor in eigener Verantwortung tun.
%       Soll der Hauptbeweis in einem lokalen Beweis beendet werden, so
%       ist das Beweisendezeichen "uber |\QED| zu erzeugen.
%
%       Innerhalb von Beweisen gibt es f"ur Fallunterscheidungen
%       eine \env{case}-Umgebung.
%
%       \paragraph{Beispiel}
%       \begin{verbatim}
%       \begin{Theorem}
%         Dies ist ein dummes Beispiel. Aber ich mach es l"anger,
%         damit man hier mal sieht, wie der
%         \sty{STATEMENT}-Theoremstyle wirkt. Es ist ziemlich
%         klar, da"s man ihn nur f"ur wirklich wesentliche
%         Aussagen verwenden sollte.
%       \end{Theorem}
%       \begin{proof*}
%         Wir machen ein Beispiel f"ur eine Fallunterscheidung.
%         \begin{case}
%           \item[$a > 0$]
%             Hier ein Fall.
%           \item[$a \leq 0$]
%             Hier der andere. Nur um zu zeigen, da"s eine gewisse
%             "Ahnlichkeit mit der \env{description}-Umgebung besteht,
%             schreibe ich hier weiter, damit der Text lang genug
%             wird.\qed
%         \end{case}
%       \end{proof*}
%       \end{verbatim}
%       liefert:
%       \begin{Theorem}
%         Dies ist ein dummes Beispiel. Aber ich mach es l"anger,
%         damit man hier mal sieht, wie der
%         \sty{STATEMENT}-Theoremstyle wirkt. Es ist ziemlich
%         klar, da"s man ihn nur f"ur wirklich wesentliche
%         Aussagen verwenden sollte.
%       \end{Theorem}
%       \begin{proof*}
%         Wir machen ein Beispiel f"ur eine Fallunterscheidung.
%         \begin{case}
%           \item[$a > 0$]
%             Hier ein Fall.
%           \item[$a \leq 0$]
%             Hier der andere. Nur um zu zeigen, da"s eine gewisse
%             "Ahnlichkeit mit der \env{description}-Umgebung besteht,
%             schreibe ich hier weiter, damit der Text lang genug
%             wird.\qed
%         \end{case}
%       \end{proof*}
%
%       \paragraph{}
%       Ein optionales Argument kann ebenfalls in Verbindung mit der
%       \env{proof}-Umgebung verwendet werden.
%       \paragraph{Beispiel}
%       \begin{verbatim}
%       \begin{proof*}[des Theorems]
%         \begin{claim}
%           Angenommen nein, Widerspruch.
%         \end{claim}
%         \begin{demonstration*}
%           "Ubungsaufgabe.\QED
%         \end{demonstration*}
%       \end{proof*}
%       \end{verbatim}
%       produziert:
%       \begin{proof*}[des Theorems]
%         \begin{claim}
%           Angenommen nein, Widerspruch.
%         \end{claim}
%         \begin{demonstration*}
%           "Ubungsaufgabe.\QED
%         \end{demonstration*}
%       \end{proof*}
%
%       \subsubsection{Benannte Aussagen}
%       Es gibt au"serdem noch zwei weitere Umgebungen:
%       Die \env{proposition}-Umgebung und die
%       \env{propositionsystem}-Umgebung.
%       Ihre Verwendung kann in folgendem Beispiel abgelesen werden:
%
%       \paragraph{Beispiel}
%       \begin{verbatim}
%       \begin{proposition}{T}\label{BenannteAussage}
%         Dies ist eine benannte Aussage.
%       \end{proposition}
%       \begin{propositionsystem}{T}\label{Aussagensystem}
%       \item
%         Die erste Aussage refferiert auf die Aussage~\ref{BenannteAussage}.
%       \item \label{SichSelbst}
%         Die zweite refferiert auf sich. (vergl.~\ref{SichSelbst}).
%       \end{propositionsystem}
%       \end{verbatim}
%       Das produziert:
%       \begin{proposition}{T}\label{BenannteAussage}
%         Dies ist eine benannte Aussage.
%       \end{proposition}
%       \begin{propositionsystem}{T}\label{Aussagensystem}
%       \item
%         Die erste Aussage refferiert auf die Aussage~\ref{BenannteAussage}.
%       \item \label{SichSelbst}
%         Die zweite refferiert auf sich. (vergl.~\ref{SichSelbst}).
%       \end{propositionsystem}
%
%    \subsubsection{Besondere Symbole}
%       Die definierten Symbole fallen in mehrere Kategorien. Grunds"atzlich
%       steht zu jedem Buchstaben des Alphabets eine Blackboard-Version zur
%       Verf"ugung. So produziert |\RRR| das "ubliche Symbol $\RRR$
%       f"ur die reellen Zahlen, |\CCC| steht f"ur die komplexen Zahlen
%       in $\CCC$. Die Sph"aren $\SSS^n$ lassen sich z.B.\ mit Hilfe von
%       |\SSS^n| erzeugen. Wie gesagt, durch Verdreifachung halten wir
%       f"ur jeden Buchstaben des Alphabets eine solche Version bereit.
%       F"ur besonders h"aufig auftretende Buchstaben gibt es auch die
%       Macros |\NN|, |\ZZ|, |\QQ|, |\RR|, |\CC| und |\HH| sowie |\EE|,
%       und |\TT|.
%       Diese Buchstaben sind allesamt mit |\mathset| generiert.
%
%       Ferner stellen wir eine uniforme Behandlung griechischer Buchstaben
%       zur Verf"ugung. \LaTeX\ efniert ja nur f"ur diejenigen Lettern ein
%       Makro, die nicht im lateinischen Alphabet enthalten sind.
%       An Minuskeln fehlte also nur |\omicron| f"ur $\omicron$.
%       Gro"sbuchstaben hingegen sind folgende hinzugekommen:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{ll}
%         |\Alpha|     & $\Alpha$     \\
%         |\Beta|      & $\Beta$      \\
%         |\Epsilon|   & $\Epsilon$   \\
%         |\Zeta|      & $\Zeta$      \\
%         |\Eta|       & $\Eta$       \\
%         |\Iota|      & $\Iota$      \\
%         |\Kappa|     & $\Kappa$     \\
%         |\Mu|        & $\Mu$        \\
%         |\Nu|        & $\Nu$        \\
%         |\Omicron|   & $\Omicron$   \\
%         |\Rho|       & $\Rho$       \\
%         |\Tau|       & $\Tau$       \\
%         |\Chi|       & $\Chi$       \\
%       \end{tabular}
%       \end{center}
%
%       Als n"achstes gibt es neue $\log$-like Funktionen. Wir haben:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{llll}
%       |\card|  & |\var|  & |\arc| & |\const|\\
%       |\grad|  & |\sign| & |\sgn| & |\Quot|\\
%       |\pr|    & |\ev|   & |\ind|\\
%       \end{tabular}
%       \end{center}
%
%       Zur Analysis:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{cll}
%       $\e$        & |\e|        & (Die Eulersche Zahl)\\
%       $\ReLat$    & |\ReLat|    & (Realteil)\\
%       $\ImLat$    & |\ImLat|    & (Imagin"arteil)\\
%       $\Tan$      & |\Tan|      & (Tangantialfunktor)\\
%       $\Part$     & |\Part|     & (Differentationsoperator)\\
%       $\diff$     & |\diff|     & (f"ur $\diff x$)\\
%       $\Cont$     & |\Cont|     & (Differenzierbarkeitsklassen $\Cont^k$)\\
%       $\BoundLin$ & |\BoundLin| & (Beschr"ankte lineare Operatoren)\\
%       \end{tabular}
%       \end{center}
%
%       Die klassischen Gruppen:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{cll}
%       $\GL$    & |\GL|   & \\
%       $\SL$    & |\SL|   & \\
%       $\U$     & |\U|    & \\
%       $\SU$    & |\SU|   & \\
%       $\PGL$   & |\PGL|  & \\
%       $\PSL$   & |\PSL|  & \\
%       $\O$     & |\O|    & \\
%       $\SO$    & |\SO|   & \\
%       $\LTri$  & |\LTri| & (untere Dreiecksmatrizen)\\
%       $\UTri$  & |\UTri| & (obere Breiecksmatrizen)\\
%       $\Tri$   & |\Tri|  & (je nach Kontext)\\
%       \end{tabular}
%       \end{center}
%
%       Andere Gruppen:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{cll}
%       $\Free$  & |\Free| & (freie Gruppen)\\
%       $\MCG$   & |\MPC|  & (Abbildungsklassengruppe)\\
%       \end{tabular}
%       \end{center}
%
%       Algebra und (algebraische) Geometrie:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{cll}
%       $\Aut$    & |\Aut|     & (Automorphismengruppe)\\
%       $\Out$    & |\Out|     & (\"au\ss{}ere Automorphismen)\\
%       $\End$    & |\End|     & (Endomorphismenring)\\
%       $\Stab$   & |\Stab|    & (Stabilisatoren)\\
%       $\ExtPot$ & |\ExtPot|  & ("Au"sere Potenzen / Algebra)\\
%       $\Sym$    & |\Sym|     & (z.B.\ symmetrische Algebra)\\
%       $\trdeg$  & |\trdeg|   & (Transzendenzgrad)\\
%       $\Ann$    & |\Ann|     & (Annihilatorideale)\\
%       $\Dim$    & |\Dim|     & (Dimension)\\
%       $\Sec$    & |\Sec|     & (Schnittfunktor)\\
%       $\Oka$    & |\Oka|     & (Strukturgarbe)\\
%       $\coker$  & |\coker|   & (Kokern)\\
%       $\im$     & |\im|      & (Bild)\\
%       $\coim$   & |\coim|    & (Kobild)\\
%       $\Spec$   & |\Spec|    & ($\Spec$-Funktor)\\
%       $\Proj$   & |\Proj|    & ($\Proj$-Funktor)\\
%       $\Pic$    & |\Pic|     & (Picard-Gruppe)\\
%       $\Div$    & |\Div|     & (Divisorengruppe)\\
%       $\Cl$     & |\Cl|      & (Divisorenklassen)\\
%       $\Ca$     & |\Ca|      & (Cartier-Divisoren)\\
%       $\CaCl$   & |\CaCl|    & (Cartier-Divisorklassen)\\
%       \end{tabular}
%       \end{center}
%
%       Homologische Algebra und Kategorien:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{cll}
%       $\Hom$       & |\Hom|       & \\
%       $\HOM$       & |\HOM|       & \\
%       $\HHom$      & |\HHom|      & (Garben-Hom.)\\
%       $\Ext$       & |\Ext|       & \\
%       $\EXT$       & |\EXT|       & \\
%       $\EExt$      & |\EExt|      & \\
%       $\Tor$       & |\Tor|       & \\
%       $\TOR$       & |\TOR|       & \\
%       $\TTor$      & |\TTor|      & \\
%       $\H$         & |\H|         & ((Co)homologie)\\
%       $\Cech$      & |\Cech|      & (Cech-Cohomologie)\\
%       $\K$         & |\K|         & ($\K$-Funktor)\\
%       $\Right$     & |\Right|     & (Rechtsderivierte Funktoren)\\
%       $\Left$      & |\Left|      & (Linksderivierte Funktoren)\\
%       $\directlim$ & |\directlim| & (Direkter Limes)\\
%       $\inverslim$ & |\inverslim| & (Inverser Limes)\\
%       \end{tabular}
%       \end{center}
%
%       Bin"are Operatoren:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{cll}
%       $\lprod$          & |\lprod|          & (Semidirektes Produkt)\\
%       $\rprod$          & |\rprod|          & (Semidirektes Produkt)\\
%       $\monorightarrow$ & |\monorightarrow| & (Monomorphismus)\\
%       $\epirightarrow$  & |\epirightarrow|  & (Epimorphismus)\\
%       $\rmod$           & |\rmod|           & (Rechtsnebenklassen)\\
%       $\lmod$           & |\lmod|           & (Linksnebenklassen)\\            
%       \end{tabular}
%       \end{center}
%
%       Dann definieren wir noch einen neuen Akzent, und zwar
%       |\topcirc|, der zum Beispiel zur Bezeichnung des Inneren
%       $\topcirc{X}$ eines Raumes benutzt werden kann, welches Beispiel
%       mit |\topcirc{X}| erzeugt werden kann.
%
%       Und dann sind da noch sechs Macros zur Schreibung von
%       Quotienten:\relax
%       \nopagebreak
%       \begin{center}\nopagebreak
%       \begin{tabular}{llc}
%         $\rquot{A}{B}$    & |\rquot{A}{B}|    & kleiner Rechtsquotient\\
%         $\lquot{A}{B}$    & |\lquot{A}{B}|    & kleiner Linksquotient\\
%         $\dquot{A}{B}{C}$ & |\dquot{A}{B}{C}| & kleine Doppelnebenklassen\\
%         $\Rquot{A}{B}$    & |\Rquot{A}{B}|    & gro"ser Rechtsquotient\\
%         $\Lquot{A}{B}$    & |\Lquot{A}{B}|    & gro"ser Linksquotient\\
%         $\Dquot{A}{B}{C}$ & |\Dquot{A}{B}{C}| & gro"se Doppelnebenklassen\\
%       \end{tabular}
%       \end{center}
%       Die Idee zu diesen Macros verdanke ich Peter~Bauer.
%
%   \subsection{Implementierung}
%     Wie "ublich fangen wir damit an, zu testen, ob das Paket schon
%     geladen ist. Dann identifiziert sich das Paket.
%    \begin{macrocode}
%<*buxmath>
\@ifundefined{Pkg@buxmath}{\def\Pkg@buxmath{}}{\endinput}
\typeout{Package: `buxmath'. Version \FileVersion\space of \FileDate.}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{buxmath}[\FileDate\space local LaTeX2e package]
%    \end{macrocode}
%     \subsubsection{Optionen und andere Pakete}
%       Die Optionen \opt{ordnumbered} und \opt{prenumbered} werden
%       an \pkg{buxtheorem} weitergeleitet.
%    \begin{macrocode}
\DeclareOption{ordnumbered}{\PassOptionsToPackage{\CurrentOption}{buxtheorem}}
\DeclareOption{prenumbered}{\PassOptionsToPackage{\CurrentOption}{buxtheorem}}
%    \end{macrocode}
%       Die Option \opt{GlobalNumbered} wird sp"ater Einflu"s auf die
%       Definition der theorem-like Umgebungen haben. Wir m"ussen
%       uns nur merken, da"s sie angegeben wurde.
%    \begin{macrocode}
\newcommand{\Number@Style}{section}
\DeclareOption{GlobalNumbered}{\renewcommand{\Number@Style}{Global}}
\DeclareOption{NoNotationlisting}{\AtBeginDocument{\NoNotationlisting}}
\def\@tempa@{%
  \RequirePackage{amsmath}[1995/02/23]
  \RequirePackage{amsfonts}[1995/02/01]
}
\DeclareOption{amstex}{%
  \def\@tempa@{%
    \IfFileExists{amstex.sty}{%
      \RequirePackage{amstex}
     }{%
      \RequirePackage{amsmath}[1995/02/23]
      \RequirePackage{amsfonts}[1995/02/01]
    }
  }
}
%    \end{macrocode}
%       Auf eine Voreinstellung f"ur nicht angemeldete Optionen k"onnen
%       wir verzichten.
%    \begin{macrocode}
\ProcessOptions
%    \end{macrocode}
%       Und schlie"slich die Pakete, die wir laden m"ussen.
%    \begin{macrocode}
\@tempa@\let\@tempa@\undefined
\RequirePackage{latexsym}[1995/11/28]
\RequirePackage{buxproof}[\FileDate]
%    \end{macrocode}
%       Das war leicht. Aber bei \pkg{buxtheorem} m"ussen wir eine
%       Voreinstellung ber"ucksichtigen.
%    \begin{macrocode}
\RequirePackage{buxtheorem}[\FileDate]
\@ifundefined{Pkg@buxtheoremOption}{\@LoadTheoremOption{ordnumbered}}{}
%    \end{macrocode}
%
%     \subsubsection{Theorem-like Umgebungen}
%       Wir benutzen verschiedene Theorem-Styles. Also:
%       \begin{environment}{statement}
%         Mit dem Style \sty{statement} fangen wir an.
%    \begin{macrocode}
\theoremstyle{statement}
%    \end{macrocode}
%         Jetzt stellt sich die Frage, ob \opt{GlobalNumbered} angegeben war.
%    \begin{macrocode}
\newcommand{\Number@Help}{section}
\ifx\Number@Style\Number@Help
  \newtheorem{Satz}{Satz}[section]
\fi
\renewcommand{\Number@Help}{Global}
\ifx\Number@Style\Number@Help
  \newtheorem{Satz}{Satz}
\fi
%    \end{macrocode}
%         Jetzt k"onnen wir Speicher freigeben:
%    \begin{macrocode}
\let\Number@Style\relax
\let\Number@Help\relax
%    \end{macrocode}
%         Der Rest ist leicht:
%    \begin{macrocode}
\newtheorem{Lemma}[Satz]{Lemma}
\newtheorem{Beob}[Satz]{Beobachtung}
\newtheorem{Hilfs}[Satz]{Hilfssatz}
\newtheorem{Kor}[Satz]{Korollar}
\newtheorem{Folg}[Satz]{Folgerung}
\newtheorem{Beh}[Satz]{Behauptung}
\newtheorem{Aus}[Satz]{Aussage}
\newtheorem{Fakt}[Satz]{Fakt}
\newtheorem{Zit}[Satz]{Zitat}
\newtheorem{Aufg}[Satz]{Aufgabe}
\newtheorem{Anw}[Satz]{Anwendung}
\newtheorem{Verm}[Satz]{Vermutung}
\newtheorem{theorem}[Satz]{Theorem}
\newtheorem{lemma}[Satz]{Lemma}
\newtheorem{observation}[Satz]{Observation}
\newtheorem{cor}[Satz]{Corollary}
\newtheorem{cons}[Satz]{Consequence}
\newtheorem{claim}[Satz]{Claim}
\newtheorem{conj}[Satz]{Conjecture}
\newtheorem{prop}[Satz]{Proposition}
\newtheorem{cit}[Satz]{Citation}
\newtheorem{exercise}[Satz]{Exercise}
\newtheorem{statementEmpty}[Satz]{}
%    \end{macrocode}
%       \end{environment}
%       \begin{environment}{STATEMENT}
%    \begin{macrocode}
\theoremstyle{STATEMENT}
\newtheorem{Axiom}[Satz]{Axiom}
\newtheorem{Theorem}[Satz]{Theorem}
\newtheorem{Haupt}[Satz]{Hauptsatz}
\newtheorem{axiom}[Satz]{Axiom}
\newtheorem{maintheorem}[Satz]{Main theorem}
\newtheorem{STATEMENTEmpty}[Satz]{}
%    \end{macrocode}
%       \end{environment}
%       \begin{environment}{definition}
%    \begin{macrocode}
\theoremstyle{definition}
\newtheorem{Def}[Satz]{Definition}
\newtheorem{Bsp}[Satz]{Beispiel}
\newtheorem{Bem}[Satz]{Bemerkung}
\newtheorem{Exk}[Satz]{Exkurs}
\newtheorem{Probl}[Satz]{Problem}
\newtheorem{Not}[Satz]{Notation}
\newtheorem{definition}[Satz]{Definition}
\newtheorem{rem}[Satz]{Remark}
\newtheorem{example}[Satz]{Example}
\newtheorem{probl}[Satz]{Problem}
\newtheorem{notation}[Satz]{Notation}
\newtheorem{definitionEmpty}[Satz]{}
%    \end{macrocode}
%       \end{environment}
%       \begin{macro}{\notion}
%         Jetzt das Hilfskommando:
%    \begin{macrocode}
\newcommand{\notion}[1]{\underline{#1}}
%    \end{macrocode}
%       \end{macro}
%       \begin{environment}{notationlist}
%         Und jetzt zur \env{notationlist}-Umgebung.
%    \begin{macrocode}
\newenvironment{notationlist}{}{}
\newif\ifNotationlisting
\newcommand{\Notationlisting}{%
  \ifNotationlisting\else
    \renewenvironment{notationlist}{%
      \itemize
    }{%
      \enditemize
    }%
  \fi
  \Notationlistingtrue
}
\newcommand{\fix@begin}{%
  \let\old@begin\begin
  \def\begin##1{\old@begin{##1}\let\item\old@item}%
}
\newcommand{\NoNotationlisting}{%
  \ifNotationlisting
    \renewenvironment{notationlist}{%
      \let\old@item\item
      \fix@begin
      \let\item\ignorespaces\ignorespaces
    }{%
      \global\@ignoretrue
    }%
  \fi
  \Notationlistingfalse
}
\Notationlisting
%    \end{macrocode}
%       \end{environment}
%
%     \subsubsection{Beweise}
%       Die \env{claim}-Umgebung ist nur relativ zur
%       \env{proof}-Umgebung definiert und bewirkt eine lokale
%       Nummerierung mit gro"sen Buchstaben. Ihr zur Seite steht die
%       \env{demonstration}-Umgebung, welche f"ur lokale Beweise der
%       ">claims"< gedacht ist.
%
%       Zun"achst ein paar Document Style Parameter und Voreinstellungen:
%    \begin{macrocode}
\newcommand{\demsymbol}{$\Box$}
\newcommand{\qedsymbol}{{\normalfont\bfseries q.e.d.}}
\renewcommand{\proof@symbol}{\qedsymbol}
%    \end{macrocode}
%       Dann sind da noch Namen:
%    \begin{macrocode}
\newcommand{\demonstrationname}{%
  \@ifundefined{l@german}{}{\ifnum\language=\l@german Beweis\fi}%
  \@ifundefined{l@english}{}{\ifnum\language=\l@english Proof\fi}%
  \@ifundefined{l@USenglish}{}{\ifnum\language=\l@USenglish Proof\fi}%
  \@ifundefined{l@UKenglish}{}{\ifnum\language=\l@UKenglish Proof\fi}%
  \@ifundefined{l@american}{}{\ifnum\language=\l@american Proof\fi}%
}
\newcommand{\claimname}{%
  \@ifundefined{l@german}{}{\ifnum\language=\l@german Behauptung\fi}%
  \@ifundefined{l@english}{}{\ifnum\language=\l@english Claim\fi}%
  \@ifundefined{l@USenglish}{}{\ifnum\language=\l@USenglish Claim\fi}%
  \@ifundefined{l@UKenglish}{}{\ifnum\language=\l@UKenglish Claim\fi}%
  \@ifundefined{l@american}{}{\ifnum\language=\l@american Claim\fi}%
}
\let\proofname=\undefined
\newcommand{\proofname}{%
  \@ifundefined{l@german}{}{\ifnum\language=\l@german Beweis\fi}%
  \@ifundefined{l@english}{}{\ifnum\language=\l@english Proof\fi}%
  \@ifundefined{l@USenglish}{}{\ifnum\language=\l@USenglish Proof\fi}%
  \@ifundefined{l@UKenglish}{}{\ifnum\language=\l@UKenglish Proof\fi}%
  \@ifundefined{l@american}{}{\ifnum\language=\l@american Proof\fi}%
}
%    \end{macrocode}
%       Das wird bestimmt im Laufe der n"achsten Zeit g"andert, so da"s
%       verschiedene Sprachen besser unterst"utzt werden.
%
%       \begin{environment}{proof}
%       Mit Hilfe des \pkg{buxproof}-Paketes ist es nunmehr ein
%       leichtes, die \env{proof}- und die \env{proof$*$}-Umgebung zu
%       definieren:
%    \begin{macrocode}
\newproof{proof}%
  {\proofname}{\qedsymbol}%
  {\claimname}%
  {\demonstrationname}{\demsymbol}
%    \end{macrocode}
%       \end{environment}
%       \begin{environment}{case}
%         Wir stellen noch eine case-Umgebung zur Verf"ugung. Sie ist f"ur
%         Fallunterscheidungen gemacht. Es ist der description-Umgebung
%         sehr "ahnlich. Doch wir implementieren sie mit Hilfe der
%         \env{list}-Umgebung.
%    \begin{macrocode}
\newcommand{\caselabel}[1]{{\underline{#1}:\ }}
\newcommand{\case}{\list{}{\labelwidth\z@
  \labelsep\z@
  \itemindent-\leftmargin
  \let\makelabel\caselabel}}
%    \end{macrocode}
%         Entsprechend sieht es beim Schlie"sen der Umgebung aus:
%    \begin{macrocode}
\let\endcase\endlist
%    \end{macrocode}
%       \end{environment}
%
%     \subsubsection{Benannte Aussagen}
%       \begin{environment}{proposition}
%         Die \env{proposition}-Umgebung f"ur ">benannte Aussagen"< ist
%         ein Spezialfall der \env{description}-Umgebung.
%    \begin{macrocode}
\newcommand{\proposition}[1]{\description
             \gdef\@currentlabel{{#1}} \item[(#1)\ ]}
\let\endproposition=\enddescription
%    \end{macrocode}
%       \end{environment}
%       \begin{environment}{propositionsystem}
%         F"ur ein System von benannten Aussagen (z.B.\ ein Axiomensystem)
%         gibt es die \env{propositionsystem}-Umgebung. Hier ben"otigen wir
%         wieder einen Z"ahler.
%    \begin{macrocode}
\newcounter{props}
%    \end{macrocode}
%         Die Umgebung selbst ist mittels der \env{list}-Umgebung
%         gebaut.
%    \begin{macrocode}
\newcommand{\propositionsystem}[1]{%
  \list{{\bfseries
     (#1.\arabic{props})}\gdef\@currentlabel{{#1.\arabic{props}}}\ }%
  {\usecounter{props}
  \labelwidth\z@
  \itemindent-\leftmargin
  \let\makelabel\descriptionlabel}}
\let\endpropositionsystem\endlist
%    \end{macrocode}
%       \end{environment}
%    
%     \subsubsection{Besondere Symbole}
%       Zuerst die Blackboard-Buchstaben. Es gibt im Prinzip zwei
%       Alphabete die in Frage kommen. Da ist einmal das
%       |\mathbb|-Alphabet aus dem \pkg{amsfonts}-Paket. Zum anderen
%       gibt es das \pkg{dsfont}-Paket, das eigene Zeichens"atze
%       benutzt, die den Computer Modern Roman Fonts nachgebildet sind.
%       Wir wollen die letzteren verwenden, sofern sie installiert sind.
%       Die Existenz der Datei \file{Udsrom.fd} ist unser Kriterium.
%       \begin{macro}{\mathset}
%         Wir definieren uns f"ur die Blackboard-Buchstaben ein
%         eigenes MathAlphabet.
%    \begin{macrocode}
\IfFileExists{Udsrom.fd}{%
  \DeclareMathAlphabet{\mathset}{U}{dsrom}{m}{n}
}{%
  \let\mathset=\mathbb
}
%    \end{macrocode}
%       \end{macro}
%       Mit dem |\mathset|-Alphabet k"onnen wir jetzt weiterfahren.
%    \begin{macrocode}
\newcommand{\AAA}{\mathset{A}}
\newcommand{\BBB}{\mathset{B}}
\newcommand{\CCC}{\mathset{C}}
\newcommand{\DDD}{\mathset{D}}
\newcommand{\EEE}{\mathset{E}}
\newcommand{\FFF}{\mathset{F}}
\newcommand{\GGG}{\mathset{G}}
\newcommand{\HHH}{\mathset{H}}
\newcommand{\III}{\mathset{I}}
\newcommand{\JJJ}{\mathset{J}}
\newcommand{\KKK}{\mathset{K}}
\newcommand{\LLL}{\mathset{L}}
\newcommand{\MMM}{\mathset{M}}
\newcommand{\NNN}{\mathset{N}}
\newcommand{\OOO}{\mathset{O}}
\newcommand{\PPP}{\mathset{P}}
\newcommand{\QQQ}{\mathset{Q}}
\newcommand{\RRR}{\mathset{R}}
\newcommand{\SSS}{\mathset{S}}
\newcommand{\TTT}{\mathset{T}}
\newcommand{\UUU}{\mathset{U}}
\newcommand{\VVV}{\mathset{V}}
\newcommand{\WWW}{\mathset{W}}
\newcommand{\XXX}{\mathset{X}}
\newcommand{\YYY}{\mathset{Y}}
\newcommand{\ZZZ}{\mathset{Z}}
\newcommand{\NN}{\NNN}
\newcommand{\ZZ}{\ZZZ}
\newcommand{\QQ}{\QQQ}
\newcommand{\RR}{\RRR}
\newcommand{\CC}{\CCC}
\newcommand{\HH}{\HHH}
\newcommand{\EE}{\EEE}
\newcommand{\TT}{\TTT}
%    \end{macrocode}
%       Jetzt noch die griechischen Buchstaben:
%    \begin{macrocode}
\newcommand{\Alpha}{\mathrm{A}}
\newcommand{\Beta}{\mathrm{B}}
\newcommand{\Epsilon}{\mathrm{E}}
\newcommand{\Zeta}{\mathrm{Z}}
\newcommand{\Eta}{\mathrm{H}}
\newcommand{\Iota}{\mathrm{I}}
\newcommand{\Kappa}{\mathrm{K}}
\newcommand{\Mu}{\mathrm{M}}
\newcommand{\Nu}{\mathrm{N}}
\newcommand{\omicron}{o}
\newcommand{\Omicron}{\mathrm{O}}
\newcommand{\Rho}{\mathrm{R}}
\newcommand{\Tau}{\mathrm{T}}
\newcommand{\Chi}{\mathrm{X}}
%    \end{macrocode}
%       Da wir das \pkg{amsmath}-Paket geladen haben, sind auch die
%       Operatoren ziemlich einfach zu implementieren.
%    \begin{macrocode}
\newcommand{\card}{\operatorname{card}}
\newcommand{\var}{\operatorname{var}}
\newcommand{\arc}{\operatorname{arc}}
\newcommand{\const}{\operatorname{const}}
\newcommand{\grad}{\operatorname{grad}}
\newcommand{\sign}{\operatorname{sign}}
\newcommand{\sgn}{\operatorname{sgn}}
\newcommand{\Quot}{\operatorname{Quot}}
\newcommand{\pr}{\operatorname{pr}}
\newcommand{\ev}{\operatorname{ev}}
\newcommand{\ind}{\operatorname{ind}}
\newcommand{\e}{\operatorname{e}}
\newcommand{\ImLat}{\operatorname{Im}}
\newcommand{\ReLat}{\operatorname{Re}}
\newcommand{\Tan}{\operatorname{T}}
\newcommand{\Part}{\operatorname{D}}
\newcommand{\Cont}{\operatorname{C}}
\newcommand{\diff}{\operatorname{d}}
\newcommand{\BoundLin}{\operatorname{L}}
\newcommand{\GL}{\operatorname{GL}}
\newcommand{\SL}{\operatorname{SL}}
\newcommand{\U}{\operatorname{U}}
\newcommand{\SU}{\operatorname{SU}}
\newcommand{\PGL}{\operatorname{PGL}}
\newcommand{\PSL}{\operatorname{PSL}}
\renewcommand{\O}{\operatorname{O}}
\newcommand{\SO}{\operatorname{SO}}
\newcommand{\Tri}{\operatorname{B}}
\newcommand{\UTri}{\Tri^{+}}
\newcommand{\LTri}{\Tri^{-}}
\newcommand{\Free}{\operatorname{F}}
\newcommand{\MCG}{\operatorname{MCG}}
\newcommand{\End}{\operatorname{End}}
\newcommand{\Aut}{\operatorname{Aut}}
\newcommand{\Out}{\operatorname{Out}}
\newcommand{\Stab}{\operatorname{Stab}}
\newcommand{\Res}{\operatorname{Res}}
\newcommand{\Det}{\operatorname{Det}}
\newcommand{\Dim}{\operatorname{Dim}}
\newcommand{\Sec}{\operatorname{\Gamma}}
\newcommand{\Oka}{\mathord{\cal O}}
\newcommand{\coker}{\operatorname{coker}}
\newcommand{\im}{\operatorname{im}}
\newcommand{\coim}{\operatorname{coim}}
\newcommand{\Proj}{\operatorname{Proj}}
\newcommand{\Spec}{\operatorname{Spec}}
\newcommand{\Div}{\operatorname{Div}}
\newcommand{\Cl}{\operatorname{Cl}}
\newcommand{\Pic}{\operatorname{Pic}}
\newcommand{\Ca}{\operatorname{Ca}}
\newcommand{\CaCl}{\operatorname{CaCl}}
\newcommand{\Ann}{\operatorname{Ann}}
\newcommand{\trdeg}{\operatorname{tr.deg}}
\newcommand{\Hom}{\operatorname{Hom}}
\newcommand{\HOM}{\operatorname{HOM}}
\newcommand{\HHom}{\operatorname{\mathcal{H}om}}
\newcommand{\Ext}{\operatorname{Ext}}
\newcommand{\EXT}{\operatorname{EXT}}
\newcommand{\EExt}{\operatorname{\mathcal{E}xt}}
\newcommand{\Tor}{\operatorname{Tor}}
\newcommand{\TOR}{\operatorname{TOR}}
\newcommand{\TTor}{\operatorname{\mathcal{T}\!{or}}}
\renewcommand{\H}{\operatorname{H}}
\newcommand{\Cech}{\mathop{\widehat{\H}}}
\newcommand{\K}{\operatorname{K}}
\newcommand{\Right}{\mathop{\mathbf{R}}}
\newcommand{\Left}{\mathop{\mathbf{L}}}
\newcommand{\ExtPot}{\operatorname{\Lambda}}
\newcommand{\Sym}{\operatorname{Sym}}
\newcommand{\directlim}{\varinjlim}
\newcommand{\inverslim}{\varprojlim}
%    \end{macrocode}
%       Jetzt noch die bin"aren Operatoren. Die semidirekten Produkte k"onnen
%       wir demselben Zeichensatz entnehmen wie die Mengenbezeichner.
%    \begin{macrocode}
\DeclareMathSymbol{\rprod}{\mathbin}{AMSb}{110}
\DeclareMathSymbol{\lprod}{\mathbin}{AMSb}{111}
%    \end{macrocode}
%       Das weitere ist etwas getrickst.
%    \begin{macrocode}
\newcommand{\monorightarrow}{\hookrightarrow}
\newcommand{\epirightarrow}{\rightarrow\!\!\!\!\rightarrow}
\newcommand{\rmod}{/}
\newcommand{\lmod}{\backslash}
%    \end{macrocode}
%       Und der Akzent:
%    \begin{macrocode}
\newcommand{\topcirc}{\mathaccent28695 }
%    \end{macrocode}
%       Die Macros f"ur Quotienten sind wie schon gesagt von Peter~Bauer.
%       Wir ver"andern nur ein wenig die Abst"ande. Aber das ist
%       Geschmackssache.
%    \begin{macrocode}
\newcommand{\rquot}[2]{%
  {}^%
  \ifinner
    {#1}\!\big/\!_{#2}%       % je ein \! gestrichen KUB
  \else
    {\displaystyle #1}\!\Big/\!_{\displaystyle #2}%  dito
  \fi
}
\newcommand{\lquot}[2]{%
  {}_%
  \ifinner
    {#1}\!\big\backslash\!^{#2}%
  \else
    {\displaystyle #1}\!\Big\backslash\!^{\displaystyle #2}%  
  \fi
}
\newcommand{\dquot}[3]{%
  {}_%
  \ifinner
    {#1}\!\big\backslash\!^{#2}\!\big/\!_{#3}%
  \else
    {\displaystyle #1}\!\Big\backslash\!^{\displaystyle
          #2}\!\Big/\!_{\displaystyle #3}%
  \fi
}
\newcommand{\Rquot}[2]{%
  \begingroup
    \setbox254=\vbox{$#1$}
    \setbox253=\vbox{$#2$}
    \dimen255=\ht254%
    \advance\dimen255 by \ht253%   % d5 = H1+H2
    \dimen254=\dimen255%
    \divide\dimen254 by 2%         % d4 = d5/2 = (H1+H2)/2
    \dimen253=1ex%
    \advance\dimen253 by \dimen254%
    \advance\dimen253 by -\ht254%  % d3 = 1ex+d4-H1 = 1ex+(H2-H1)/2
    \dimen252=\dimen253%
    \advance\dimen252 by -\ht253%  % d2 = d3-H2 = 1ex-(H1+H2)/2
    \dimen251=\dimen253%
    \advance\dimen251 by \dimen252%
    \divide\dimen251 by 2%         % d1 = (d3+d2)/2 = 1ex-H1/2
    \mbox{%
      \(
        {\raisebox{\dimen253}{$#1$}}%
        \mkern-3mu%                % von -5mu auf -3mu KUB
        \raisebox{\dimen251}{$\left/\rule{0pt}{0.75\dimen255}\right.$}%
        \mkern-5mu%
        {\raisebox{\dimen252}{$#2$}}%
      \)
    }
  \endgroup
}
\newcommand{\Lquot}[2]{%
  \begingroup
    \setbox254=\vbox{$#1$}
    \setbox253=\vbox{$#2$}
    \dimen255=\ht254
    \advance\dimen255 by \ht253%
    \dimen254=\dimen255
    \divide\dimen254 by 2% 
    \dimen253=1ex
    \advance\dimen253 by \dimen254
    \advance\dimen253 by -\ht254%
    \dimen252=\dimen253
    \advance\dimen252 by -\ht253%
    \dimen251=\dimen253
    \advance\dimen251 by \dimen252
    \divide\dimen251 by 2%
    \mbox{%
      \(
        {\raisebox{\dimen252}{$#1$}}%
        \mkern-3mu%
        \raisebox{\dimen251}{$\left\backslash\rule{0pt}{0.75\dimen255}\right.$}%
        \mkern-7mu%
        {\raisebox{\dimen253}{$#2$}}
      \)%
    }%
  \endgroup
}
\newcommand{\Dquot}[3]{%
  \begingroup
    \setbox254=\vbox{$#1$}%
    \setbox253=\vbox{$#3$}%
    \ifdim\ht254>\ht253%
      \setbox253=\vbox{$#1$}%
    \fi%                            %  x3 = max(H1,H3)
    \setbox254=\vbox{$#2$}%         %  x4 = H2
    \dimen255=\ht254%                
    \advance\dimen255 by \ht253%    %  d5 = H2+max(H1,H3)
    \dimen254=\dimen255%
    \divide\dimen254 by 2%          %  d4 = d5/2 = (H2+max(H1,H3))/2
    \dimen253=1ex%
    \advance\dimen253 by \dimen254%
    \advance\dimen253 by -\ht254%   %  d3 = 1ex+(max(H1,H3)-H2)/2
    \dimen252=\dimen253%
    \advance\dimen252 by -\ht253%   %  d2 = d3-max(H1,H3) = 1ex-(max(H1,H3)-H2)/2
    \dimen251=\dimen253%
    \advance\dimen251 by \dimen252%
    \divide\dimen251 by 2%          %  d1 = (d3+d2)/2 = 1ex-H2/2
    \mbox{%
      \(
        {\raisebox{\dimen252}{$#1$}}
        \mkern-3mu%
        {\raisebox{\dimen251}{$\left\backslash
            \rule{0pt}{0.75\dimen255}\right.$}}%
        \mkern-7mu%
        {\raisebox{\dimen253}{$#2$}}
        \mkern-3mu%
        {\raisebox{\dimen251}{$\left/\rule{0pt}{0.75\dimen255}\right.$}}
        \mkern-5mu%
        {\raisebox{\dimen252}{$#3$}}
      \)%
    }
  \endgroup
}
%</buxmath>
%    \end{macrocode}
%
% \Section{Das Paket \pkg{buxphilosophy}}
%   Dieses Paket ist ganz kurz und definiert nur ein paar Umgebungen
%   unter Verwendung des Pakets \pkg{buxmath}, an das alle Optionen 
%   "ubergeben werden. 
%    \begin{macrocode}
%<*buxphilosophy>
\@ifundefined{Pkg@buxphilosophy}{\def\Pkg@buxphilosophy{}}{\endinput}
\typeout{Package: `buxphilosophy'. Version \FileVersion\space of \FileDate.}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{buxphilosophy}[\FileDate\space local LaTeX2e package]
%    \end{macrocode}
%     Die Optionen.  
%    \begin{macrocode}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{buxmath}}
\ProcessOptions
\RequirePackage{buxmath}[\FileDate]
%    \end{macrocode}
%     Zuerst die theorem-like Umgebungen.
%    \begin{macrocode}
\theoremstyle{STATEMENT}
\newtheorem{These}[Satz]{These}
%    \end{macrocode}
%     Und jetzt die proof-like Umgebung.
%    \begin{macrocode}
\newproof{grund}{Begr\"undung}{\rule{1ex}{1ex}}%
  {Behauptung}%
  {Rechtfertigung}{$\Box$}
%</buxphilosophy>
%    \end{macrocode}
%     Das sieht dann ungef"ahr so aus. Auf
%
%     \begin{These}
%       Alles flie"st.
%     \end{These}
%     \begin{grund}
%       Herklit hat es behauptet.
%     \end{grund}
%     (was nat"urlich kein Grund ist, aber das ist jetzt nicht wichtig) f"uhrt
%     der Quelltext
%     \begin{verbatim}
%     \begin{These}
%       Alles flie"st.
%     \end{These}
%     \begin{grund}
%       Herklit hat es behauptet.
%     \end{grund}
%     \end{verbatim}
%
% \Section{Das Paket \pkg{buxlayout}}
%   F"ur meine Arbeiten auf Din~A4 Papier m"ochte gerne meine alten
%   \LaTeX 2.09 Einstellungen weiterverwenden. Daf"ur gibt es zwar
%   einige Pakete, doch sowas kann sich ruhig jeder selbst schreiben.
%
%   Au"serdem brauche ich das Letterformat aus Amerika. Ferner stelle
%   ich noch ein Format mit minimalen R"andern bereit.
%
%   Zuerst die Identifikation
%    \begin{macrocode}
%<*buxlayout>
\@ifundefined{Pkg@buxlayout}{\def\Pkg@buxlayout{}}{\endinput}
\typeout{Package: `buxlayout'. Version \FileVersion\space of \FileDate.}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{buxlayout}[\FileDate\space local LaTeX2e package]
%    \end{macrocode}
%   Dann ein paar n"utzliche Macros zur Positionierung des Textes.
%   Sie berechnen fehlende Parameter aus gegebenen.
%   \begin{macro}{\trueoddsidemargin}
%     Dieses Macro erlaubt es, wirkliche R"ander einzustellen.
%    \begin{macrocode}
\newcommand{\trueoddsidemargin}[1]{\oddsidemargin#1\relax
                         \advance\oddsidemargin by -1in%
                         \advance\oddsidemargin by -\hoffset}
%    \end{macrocode}
%   \end{macro}
%   \begin{macro}{\trueevensidemargin}
%     Das ist dasselbe f"ur den geraden Rand.
%    \begin{macrocode}
\newcommand{\trueevensidemargin}[1]{\evensidemargin#1\relax
                         \advance\evensidemargin by -1in%
                         \advance\evensidemargin by -\hoffset}
%    \end{macrocode}
%   \end{macro}
%   \begin{macro}{\truetopmargin}
%     Und noch einmal f"ur den oberen Rand.
%    \begin{macrocode}
\newcommand{\truetopmargin}[1]{\topmargin#1\relax
                         \advance\topmargin by -1in%
                         \advance\topmargin by -\voffset}
%    \end{macrocode}
%   \end{macro}
%   \begin{macro}{\adjustevenside}
%     Hier sorgen wird f"ur die Anpassung des geraden Randes an einen
%     gegebenen ungeraden, so da"s im zweiseitigen Ausruck die
%     Textfelder zur Deckung kommen.
%    \begin{macrocode}
\newcommand{\adjustevenside}{\evensidemargin\paperwidth
                         \advance\evensidemargin by -\textwidth
                         \advance\evensidemargin by -\oddsidemargin
                         \advance\evensidemargin by -2\hoffset
                         \advance\evensidemargin by -2in}
%    \end{macrocode}
%   \end{macro}
%   \begin{macro}{\centertext}
%     Dieser Befehl sorgt daf"ur, da"s auf jeder Seite der rechte und linke
%     Rand gleich sind.
%    \begin{macrocode}
\newcommand{\centertext}{\@tempdima\paperwidth
                         \advance\@tempdima by -\textwidth
                         \oddsidemargin 0.5\@tempdima
                         \advance\oddsidemargin by -1in
                         \advance\oddsidemargin by -1\hoffset
                         \adjustevenside}
%    \end{macrocode}
%   \end{macro}
%
%   \begin{macro}{\shiftinnertext}
%     Dieser Befehl sorgt daf"ur, da"s auf jeder Seite der "au"sere Rand
%     etwas gr"o"ser als der innere ist.
%    \begin{macrocode}
\newcommand{\shiftinnertext}{\@tempdima\paperwidth
                             \advance\@tempdima by -\textwidth
                             \oddsidemargin 0.3819660113\@tempdima
                             \advance\oddsidemargin by -1in
                             \advance\oddsidemargin by -1\hoffset
                             \adjustevenside}
%    \end{macrocode}
%   \end{macro}
%   \begin{macro}{\adjust@twoside}
%     Dieses Macro ist eine Anwendung.
%    \begin{macrocode}
\newcommand{\adjust@twoside}{%
  \if@twoside
    \shiftinnertext
  \else
    \centertext
  \fi
}
%    \end{macrocode}
%   \end{macro}
%
%   Mit Hilfe dieser Macros definieren wir jetzt die Optionen des
%   Paketes. Es werden insgesamt sieben verschiedene unterst"utzt.
%   Die meisten einzelne legt zun"achst nur die Information ab, da"s sie
%   aufgerufen wurde. Dabei verwenden wir die beiden folgenden
%   vordefinierten Variablen
%    \begin{macrocode}
\newcommand{\Layout@Format}{undefined}
\newcommand{\Layout@Head}{NoHead}
%    \end{macrocode}
%   Fangen wir mit der \opt{DinA5}-und der \opt{DinA4}-Option an.
%    \begin{macrocode}
\DeclareOption{DinA5}{\renewcommand{\Layout@Format}{DinA5}}
\DeclareOption{DinA4}{\renewcommand{\Layout@Format}{DinA4}}
\DeclareOption{USletter}{\renewcommand{\Layout@Format}{USletter}}
\DeclareOption{fullpage}{\renewcommand{\Layout@Format}{fullpage}}
%    \end{macrocode}
%   Dann gibt es noch zwei Optionen, die den Kopf der Seite betreffen.
%    \begin{macrocode}
\DeclareOption{NoHead}{\renewcommand{\Layout@Head}{NoHead}}
\DeclareOption{Head}{\renewcommand{\Layout@Head}{Head}}
%    \end{macrocode}
%   Das war's. Jetzt noch die, die sofort wirkt:
%    \begin{macrocode}
\DeclareOption{short}{%
  \renewcommand{\section}{\@startsection{section}{1}{\z@}%
       {-3.5ex\@plus -1ex\@minus -.2ex}%
       {2.3ex\@plus .2ex}%
       {\normalfont\large\bfseries}}
  \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}%
       {-3.25ex\@plus -1ex\@minus -.2ex}%
       {1.5ex\@plus .2ex}%
       {\normalfont\normalsize\bfseries}}
  \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
       {-3.25ex\@plus -1ex\@minus -.2ex}%
       {1.5ex\@plus .2ex}%
       {\normalfont\normalsize\bfseries}}
  \renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
       {3.25ex\@plus 1ex\@minus .2ex}%
       {-1em}%
       {\normalfont\normalsize\bfseries}}
  \renewcommand{\subparagraph}{\@startsection{subparagraph}{4}{\parindent}%
       {3.25ex\@plus 1ex\@minus .2ex}%
       {-1em}%
       {\normalfont\normalsize\bfseries}}
}
%    \end{macrocode}
%   Jetzt bearbeiten.
%    \begin{macrocode}
\ProcessOptions
%    \end{macrocode}
%   Der Rest dient dazu, das endg"ultige Seitenformat festzulegen.
%   Da wir das in Abh"angigkeit von den abgelegten Werten tun m"ussen,
%   laden wir das \pkg{ifthen}-Paket.
%    \begin{macrocode}
\RequirePackage{ifthen}
%    \end{macrocode}
%   Frisch an's Werk.
%    \begin{macrocode}
\ifthenelse{\equal{\Layout@Format}{DinA5}}{%
  \paperwidth 148.5mm\paperheight 210cm\relax
  \textwidth 4.5in\adjust@twoside
  \ifthenelse{\equal{\Layout@Head}{NoHead}}{%
    \topmargin 0pt\headheight 0pt\headsep 0pt\normalfont
    \ifcase
    \@ptsize \textheight 42\baselineskip % 10 pt (\baselineskip=12pt)
         \or \textheight 37\baselineskip % 11 pt (\baselineskip=13.6pt)
         \or \textheight 33\baselineskip % 12 pt (\baselineskip=15pt)
    \fi
    \advance\textheight by \topskip
  }{}
  \ifthenelse{\equal{\Layout@Head}{Head}}{%
    \topmargin 0pt\normalfont
    \ifcase
    \@ptsize \headheight 2\baselineskip \headsep\baselineskip 
                                        \textheight 39\baselineskip
         \or \headheight 2\baselineskip \headsep\baselineskip
                                        \textheight 34\baselineskip
         \or \headheight 2\baselineskip \headsep\baselineskip
                                        \textheight 30\baselineskip
    \fi
    \advance\textheight by \topskip
  }{}
}{}
%    \end{macrocode}
%   Und dasselbe nochmal f"ur \opt{DinA4}.
%    \begin{macrocode}
\ifthenelse{\equal{\Layout@Format}{DinA4}}{%
  \paperwidth 210mm\paperheight 297mm\relax
  \textwidth 6in\adjust@twoside
  \ifthenelse{\equal{\Layout@Head}{NoHead}}{%
    \topmargin 0pt\headheight 0pt\headsep 0pt\normalfont
    \ifcase
    \@ptsize \textheight 55\baselineskip % 10 pt (\baselineskip=12pt)
         \or \textheight 49\baselineskip % 11 pt (\baselineskip=13.6pt)
         \or \textheight 44\baselineskip % 12 pt (\baselineskip=15pt)
    \fi
    \advance\textheight by \topskip
  }{}
  \ifthenelse{\equal{\Layout@Head}{Head}}{%
    \topmargin 0pt\normalfont
    \ifcase
    \@ptsize \headheight 2\baselineskip \headsep\baselineskip 
                                        \textheight 52\baselineskip
         \or \headheight 2\baselineskip \headsep\baselineskip
                                        \textheight 46\baselineskip
         \or \headheight 2\baselineskip \headsep\baselineskip
                                        \textheight 41\baselineskip
    \fi
    \advance\textheight by \topskip
  }{}
}{}
%    \end{macrocode}
%   Und schlie"slich nochmal f"ur \opt{USletter} und \opt{fullpage}.
%    \begin{macrocode}
\ifthenelse{\equal{\Layout@Format}{USletter}}{%
  \paperwidth 8.5in\paperheight 11in\relax
  \textwidth 6in\adjust@twoside
  \ifthenelse{\equal{\Layout@Head}{NoHead}}{%
    \topmargin 0pt\headheight 0pt\headsep 0pt\normalfont
    \ifcase
    \@ptsize \textheight 52\baselineskip % 10 pt (\baselineskip=12pt)
         \or \textheight 47\baselineskip % 11 pt (\baselineskip=13.6pt)
         \or \textheight 42\baselineskip % 12 pt (\baselineskip=15pt)
    \fi
    \advance\textheight by \topskip
  }{}
  \ifthenelse{\equal{\Layout@Head}{Head}}{%
    \topmargin 0pt\normalfont
    \ifcase
    \@ptsize \headheight 2\baselineskip \headsep\baselineskip 
                                        \textheight 49\baselineskip
         \or \headheight 2\baselineskip \headsep\baselineskip
                                        \textheight 44\baselineskip
         \or \headheight 2\baselineskip \headsep\baselineskip
                                        \textheight 39\baselineskip
    \fi
    \advance\textheight by \topskip
  }{}
}{}
\ifthenelse{\equal{\Layout@Format}{fullpage}}{%
  \textwidth\paperwidth\adjust@twoside
  \textheight\paperheight
  \topmargin 0pt
  \headheight 0pt
  \headsep 0pt
  \footskip 0pt
  \pagestyle{empty}
}{}
%</buxlayout>
%    \end{macrocode}
%
% \Section{Das Paket \pkg{buxmisc}}
%   Dieses Paket enth"alt nur ein paar Kleinigkeiten.
%    \begin{macrocode}
%<*buxmisc>
\@ifundefined{Pkg@buxmisc}{\def\Pkg@buxmisc{}}{\endinput}
\typeout{Package: `buxmisc'. Version \FileVersion\space of \FileDate.}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{buxmisc}[\FileDate\space local LaTeX2e package]
\RequirePackage{ifthen}
%    \end{macrocode}
%   \subsection{Erweiterung der Z"ahlerkommandos}
%     Das \pkg{calc}-Paket ist noch kein \LaTeX -Standard.
%     Darum werden hier zwei Macros bereitgestellt, die
%     Multiplikation und Division bei \LaTeX -Z"ahlern implementieren.
%     Das erste ist \DescribeMacro{\multiplycounter}%
%     |\multiplycounter{|\ARG{Z"ahler}|}{|\ARG{Zahl}|}|.
%     \begin{macro}{\multiplycounter}
%    \begin{macrocode}
\newcommand{\multiplycounter}[2]{\expandafter\multiply
  \csname c@#1\endcsname by #2}
%    \end{macrocode}
%     \end{macro}
%     Das zweite Macro \DescribeMacro{\dividecounter}%
%     |\dividecounter{|\ARG{Z"ahler}|}{|\ARG{Zahl}|}|
%     dient nat"urlich zur Division.
%     \begin{macro}{\dividecounter}
%    \begin{macrocode}
\newcommand{\dividecounter}[2]{\expandafter\divide
  \csname c@#1\endcsname by #2}
%    \end{macrocode}
%     \end{macro}
%   \subsection{Z"ahlen auf Deutsch}
%     \DescribeMacro{\GermanNumeral} \DescribeMacro{\German}%
%     Hier definieren wir die beiden Macros
%     |\GermanNumeral#1| und |\German{|\ARG{Z"ahler}|}|.
%     Dabei ist einfach
%     \begin{macro}{\German}
%    \begin{macrocode}
\newcommand{\German}[1]{\expandafter\GermanNumeral
                        \expandafter{\arabic{#1}}}
%    \end{macrocode}
%     \end{macro}
%     Somit m"ussen wir nur |\GermanNumeral| erkl"aren. Ein Beispiel sollte
%     gen"ugen.
%     \begin{verbatim}
%       \GermanNumeral{3141592}
%     \end{verbatim}
%     expandiert zu
%     \begin{quote}
%       \GermanNumeral{3141592}
%     \end{quote}
%     \begin{macro}{\GermanNumeral}
%       Das Macro |\GermanNumeral| ist kniffliger. Wir m"ussen uns die
%       einzelnen Ziffern besorgen. Daf"ur ein paar Z"ahler:
%    \begin{macrocode}
\newcounter{Bux@Zahl}
\newcounter{Bux@Rest}
\newcounter{Bux@Klein}
\newcounter{Bux@Einer}
\newcounter{Bux@Zehner}
\newcounter{Bux@Hunderter}
\newcounter{Bux@Tausender}
\newcounter{Bux@Millionen}
\newcounter{Bux@Milliarden}
\newcounter{Bux@Billionen}
%    \end{macrocode}
%       \begin{macro}{\@@step}
%         Zuallererst ein Hilfsmacro. Es hat vier Argumente, wovon die
%         ersten beiden Namen von \LaTeX -Z"ahlern sind.
%    \begin{macrocode}
\newcommand{\@@step}[4]{%
  \setcounter{#2}{\value{#3}}%
  \setcounter{#1}{\value{#3}}%
  \dividecounter{#1}{#4}%
  \multiplycounter{#1}{#4}%
  \addtocounter{#2}{-\value{#1}}%
  \dividecounter{#1}{#4}%
}
%    \end{macrocode}                      
%       \end{macro}
%       \begin{macro}{\@unterHundert}
%         Und dann der kleine Rest. Zuerst ein Macro f"ur zweistellige
%         Zahlen:
%    \begin{macrocode}
\newcommand{\@unterHundert}[1]{\setcounter{Bux@Klein}{#1}%
  \@@step{Bux@Zehner}{Bux@Einer}{Bux@Klein}{10}%
  \ifcase\value{Bux@Klein}\or
    eins\or zwei\or drei\or vier\or f\"unf\or sechs\or sieben\or
    acht\or neun\or zehn\or elf\or zw\"olf\or dreizehn\or vierzehn\or
    f\"unfzehn\or sechzehn\or siebzehn\or achtzehn\or neunzehn\else
      \@einer{\value{Bux@Einer}}%
      \ifthenelse{\value{Bux@Einer}>0}%
        {und}%
        {}%
      \@zehner{\value{Bux@Zehner}}%
  \fi}
%    \end{macrocode}
%       \end{macro}
%       \begin{macro}{\@unterTausend}
%         Damit gebaut dann eines f"ur dreistellige Zahlen. Die sind die
%         eigentliche Basis unseres Z"ahlsystems.
%    \begin{macrocode}
\newcommand{\@unterTausend}[1]{\setcounter{Bux@Klein}{#1}%
  \@@step{Bux@Hunderter}{Bux@Einer}{Bux@Klein}{100}%
  \ifthenelse{\value{Bux@Hunderter}>0}%
    {\@einer{\value{Bux@Hunderter}}hundert}%
    {}%
  \@unterHundert{\value{Bux@Einer}}}
\newcommand{\@einer}[1]{\ifcase #1\or 
  ein\or zwei\or drei\or vier\or f\"unf\or sechs\or
  sieben\or acht\or neun\fi}
\newcommand{\@zehner}[1]{\ifcase #1\or
  zehn\or zwanzig\or drei\ss{}ig\or vierzig\or f\"unfzig\or sechzig\or
  siebzig\or achtzig\or neunzig\fi}
%    \end{macrocode}
%       \end{macro}
%       Der Rest ist Routine
%    \begin{macrocode}
\DeclareRobustCommand{\GermanNumeral}[1]{\begingroup
  \setcounter{Bux@Zahl}{#1}%
  \@@step{Bux@Tausender}{Bux@Rest}{Bux@Zahl}{1000}%
  \@@step{Bux@Millionen}{Bux@Tausender}{Bux@Tausender}{1000}%
  \@@step{Bux@Milliarden}{Bux@Millionen}{Bux@Millionen}{1000}%
  \@@step{Bux@Billionen}{Bux@Milliarden}{Bux@Milliarden}{1000}%
  \ifthenelse{\value{Bux@Milliarden}>1}%
    {\@unterTausend{\value{Bux@Milliarden}}milliarden}%
    {\ifthenelse{\value{Bux@Milliarden}=1}%
       {einemilliarde}%
       {}}%
  \ifthenelse{\value{Bux@Millionen}>1}%
    {\@unterTausend{\value{Bux@Millionen}}millionen}%
    {\ifthenelse{\value{Bux@Millionen}=1}%
      {einemillion}%
      {}}%
  \ifthenelse{\value{Bux@Tausender}>0}%
    {\@unterTausend{\value{Bux@Tausender}}tausend}{}%
  \ifthenelse{\value{Bux@Zahl}=0}%
    {null}%
    {\@unterTausend{\value{Bux@Rest}}}%
  \endgroup}
%    \end{macrocode}
%     \end{macro} 
%
%   \subsection{Deutsche Seitenzahlen}
%     Jetzt wollen wir das Gelernte anwenden und einen Seitenstil mit
%     deutschen Seitenzahlen an Stelle der arabischen herstellen.
%     Die erste Idee
%     \begin{verbatim}
%       \renewcommand{\thepage}{\German{page}}
%     \end{verbatim}
%     funktioniert nicht, weil dann die Eintr"age im Inhaltsverzeichnis
%     und in Querverweisen ziemlich merkw"urdig rausk"amen. Try it!
%
%     Also m"ussen wir einen Seitenstil bauen. Und das geht so:
%     \begin{macro}{\ps@gplain}
%       Durch dieses Macro wird der Seitenstil \sty{gplain} definiert.
%       Er verh"alt sich exakt wie \sty{plain} --- bis auf die
%       Seitenzahlen. Die Wirkung zeigt dieses Dokument.
%    \begin{macrocode}
\newcommand{\ps@gplain}{%
  \let\@marboth\@gobbletwo
  \let\@oddhead\@empty
  \def\@oddfoot{\reset@font\rmfamily\hfil{---}~\German{page}~{---}\hfil}%
  \let\@evenhead\@empty
  \let\@evenfoot\@oddfoot}
%</buxmisc>
%    \end{macrocode}
%     \end{macro}
%
% \iffalse ********************************************* METACOMMENT
% Die folgende Section erscheint nicht in der Dokumentation!
% ------------------------------------------------------------------
% \Section{Die CharacterTable}
%   Das hier dient nur dazu, die CharacterTable aus den generierten
%   Dateien rauszuhalten.
%    \begin{macrocode}
%<*installation>
\endinput
%</installation>
%    \end{macrocode}
%   |\endinput| veranla"st |\generateFile| zum Abbruch der
%   Bearbeitung.
% ------------------------------------------------------------------
% Ab jetzt wieder im Ausdruck!
% ********************************************** END METACOMMENT \fi
%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
% \Finale
