% \iffalse meta-comment
%
%%  (C) 2002,2003,2005,2006 Paul Ebermann (Paul-Ebermann@gmx.de)
%%
%%   Dokumentenklasse für mein Algebra-Skript.
%%   Die Datei alg-script.dtx sowie die dazugehörige
%%   alg-script.ins sowie die damit generierte
%%   alg-script.cls stehen unter der
%%   "LaTeX Project Public License" (LPPL, zu finden
%%   unter http://www.latex-project.org/lppl/, sowie
%%   auch in den meisten TeX-Distributionen in
%%   texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
%%   später (nach Wahl des Verwenders).
%%
%%   Der 'maintenance-status' ist (zur Zeit) 'author-maintained'.
%%   
%%   Das heißt u.a., die Dateien dürfen frei vertrieben werden,
%%   bei Änderungen (durch andere Personen als Paul Ebermann)
%%   ist aber der Name der Datei zu ändern.
%%
% \fi
%
%\nonstopmode ^^A Damit bei Fehlern nicht angehalten wird - das nervt nur.
%
%% \CheckSum{445}  ^^A TODO: Vor dem Ausliefern mit der richtigen Zahl ersetzen.
%
% \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         \~}
%
% \changes{v0.00}{2002/07/18}{Erste Test-Fassung}
% \changes{v0.10}{2005/11/28}{Hinzufügungen für die Verwendung für Prüfungs-Stoff.}
%
% \GetFileInfo{alg-script.cls}
%
% ^^A nicht in den Index:
% \DoNotIndex{\,,\\,\{,\},\',\ ,\begin,\CodeLineIndex,\end}
% \DoNotIndex{\endinput,\newcommand,\newtheorem,\newenvironment}
% \DoNotIndex{\newsavebox,\hspace,\arabic,\boxed,\DeclareMathOperator}
% \DoNotIndex{\documentclass,\DocInput,\EnableCrossrefs, \ensuremath}
% \DoNotIndex{\fbox,\hyphenation,\label,\ldots,\left, \LoadClassWithOptions}
% \DoNotIndex{\lvert,\marginpar, \mathbb, \mathcal,\mathfrak}
% \DoNotIndex{\NeedsTeXFormat, \newcounter, \overline, \overrightarrow}
% \DoNotIndex{\par,\PassOptionsToClass,\ProvidesClass,\renewcommand}
% \DoNotIndex{\right, \rvert, \sim, \sloppy, \stepcounter,\text}
%^^A \DoNotIndex{\textbf, \textsl,textsc, \theoremstyle, \tilde, \usebox}
%^^A \DoNotIndex{\usepackage}
%
%  ^^A Nicht alles kursiv drucken!
% \setcounter{StandardModuleDepth}{1}
%
%
% \title{Die \pack{alg-script}-Klasse}
% \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}}
%
% \publishers{\vfill\parbox{\columnwidth}{Diese Dokumentation
%       gehört zu \pack{alg-script}~\fileversion{} vom \filedate.
%  
%   Dank an die Regulars in \texttt{de.comp.text.tex},
%   die bei meinen Problemen immer geduldig weitergeholfen haben.}}
%
% \maketitle
%
% \tableofcontents
%
%  \chapter{Einleitung}
%  \section{Ziel}
%  Die Klasse \pack{alg-script} habe ich geschrieben, um damit -- wie der
%  Name andeutet -- meine Algebra-Skripte zu formatieren. Bisher (am
%  10.2.2006) gibt es -- neben dieser Dokumentation\footnote{Diese Dokumentation
%  ist kein verlässliches Beispiel für die Klasse, da hier einige der Einstellungen
%  etwas verbogen wurden. Beispielsweise ist der breitere Rand immer links und auch
%  noch etwas breiter als normal, weil hier immer die Namen der Befehle erscheinen.}
%  sowie einigen kleineren  Testdokumenten -- genau zwei mit dieser Klasse gesetzte
%  Dokumente.
%
%  Das erste ist meine Mitschrift der
%  Vorlesung LAAG I, Kapitel 0, "`Einführung in die Mengenlehre"'.
%  Ursprünglich hatte ich geplant, diese Mitschrift in Gemeinschaftsarbeit
%  weiterzuführen, aber daraus ist nichts geworden.
%
%  Das zweite Dokument ist noch nicht fertig -- es ist eine Zusammenfassung
%  des Stoffes, den ich für meine Spezialisierungsprüfung lernen muss.
%  Im Laufe des Abschreibens der Vorlesungsskripte habe ich entsprechend
%  auch die Klasse mit weiteren Befehlen ergänzt.
%
%  Als ich neulich meinem Kommilitonen Tobi davon erzählte, war er
%  ganz begeistert \ldots Er bat mich, das Skript doch online zu
%  stellen (zumindest habe ich das so verstanden). Danke für die
%  Ermutigung, Tobi.
%
%  Ich habe jetzt zumindest die Klasse (und die anderen von meinem
%  Skript verwendeten selbstgeschriebenen Pakete) soweit zurechtpoliert,
%  dass ich sie vorzeigen kann, und alles online gestellt \dots
%
%  Solange ich mein Diplom noch nicht habe, werde ich noch den
%  Computer-Account am Institut für Mathematik der HU-Berlin haben, und
%  entsprechend wird das Skript in der aktuellsten veröffentlichten
%   Version genauso wie die Klasse und die Packages bei
%      \texttt{http://www.math.hu-berlin.de/\tild{}ebermann/alg-script/}
%   zu finden sein.
%
%  \emph{Nachtrag:} Inzwischen habe ich noch ein drittes Dokument auf meiner
%   Festplatte gefunden - \emph{Grundbegriffe der Kategoriellen Algebra}, eine
%   Mitschrift einer Mini-Vorlesung von 2003. Es war noch nicht fertig, und
%   ich integriere es jetzt in meinen Spezialisierungs-Stoff, da passt es
%   gut hinein.
%
%
%  \section{Urheberrecht und Benutzungsbedingungen}
%    \changes{v0.11}{2006/01/29}{Benutzungsbedingungen + LPPL eingefügt}
%    Ich erlaube die (und ermuntere sogar zur) Verwendung der Klasse,
%    um damit eigene \LaTeX-Dokumente zu erstellen.
%    Natürlich gebe ich keine Garantie für das Funktionieren in irgendeiner
%    Form. Außerdem gibt es noch eine Einschränkung:
%
%    Die Klasse \pack{alg-script} (d.h. die Quelltext-Datei 'alg-script.dtx'
%    und das Installationsscript 'alg-script.ins' sowie die daraus generierte
%    Klassendatei 'alg-script.cls' und Dokumentation -- dieses Dokument --)
%    stehen unter der LPPL (\LaTeX\ Project Public License), Version 1.3b oder
%    später.
%
%    Der "`maintenance-status"' ist "`author-maintained"', d.h. in etwa,
%    nur ich (Paul Ebermann) darf Änderungen vornehmen und dann geänderte
%    Versionen unter selbem Namen weitergeben. Wer sonst etwas ändert, sollte
%    auch den Namen der Klasse ändern und seine Änderungen klar markieren.
%
%    \IfFileExists{\lpplfilename}^^A
%      {Eine Kopie der LPPL (auf Englisch, die Version, die beim Erstellen
%        der Doku gefunden wurde) ist im Anhang \ref{LPPL:LPPL},
%        ab Seite \pageref{LPPL:LPPL} zu finden.}^^A
%      {Es ist möglich, diese Dokumentation so zu bauen, dass eine Kopie
%       der Lizenz im Anhang eingebunden wird, dazu müsste eine Datei mit
%       Namen 'lppl.tex' vorhanden (und auffindbar) sein -- leider ist
%       das jetzt nicht der Fall. Die Datei ist bei
%       \texttt{http://www.latex-project.org/lppl/} zu finden.}
%
%  \chapter{Benutzer-Dokumentation}
%    Meine \pack{alg-script}-Klasse lädt eine Reihe weiterer
%    Pakete und definiert einige nützliche Befehle.
%
%  Viele Befehle sind maßgeschneidert für die Verwendung in
%  meinem Mengenlehre-Skript -- diese werden in zukünftigen
%  Versionen vielleicht in ein extra-Paket verschoben.
%
%  Hier eine kurze Übersicht -- leider (noch) nicht vollständig, der Rest ist
%  bei der Implementation (Kapitel \ref{implementation})
%  zu finden.
%
%  \section{Anwendung}
%    Um die Klasse zu verwenden, schreibe folgendes an den Anfang
%    deines Dokumentes:
%\begin{verbatim}
%    \documentclass{alg-script}
%\end{verbatim}
%  Vor dem Klassennamen können (in eckigen Klammern) noch
%  einige Optionen stehen - diese gelten dann auch für alle
%  geladenen Packages, und werden (sofern nicht selbst verwendet)
%  an die Basisklasse \pack{scrbook} weitergegeben. Beispiel:
%\begin{verbatim}
%    \documentclass[oldphi,draft]{alg-script}
%\end{verbatim}
%
%  \section{Optionen}
%  Diese Klasse einige Optionen.
%
%  \DescribeMacro{doc}
%  'doc' ist eigentlich nur für die Erzeugung dieser
%  Dokumentation geeignet. Es bewirkt, dass das Package \pack{doc} direkt nach
%  dem Laden der Basisklasse \pack{scrbook}, jedenfalls aber noch vor
%  dem Laden des Paketes \pack{amscd} geladen wird. Dies ist leider
%  notwendig, da sich \pack{doc} und \pack{amscd} nur in dieser Reihenfolge
%  vertragen.
%
% \DescribeMacro{oldphi}
%  'oldphi' ist für Leute, die -- anders als ich -- die ursprüngliche
%  \LaTeX-Version von '\phi', nämlich $\oldphi$ mehr mögen als $\varphi$.
%  Standardverhalten meiner Klasse ist es, $\varphi$ zu verwenden, 'oldphi'
%  schaltet das ab.
%
%  \section{Umgebungen}
%  Die Klasse definiert verschiedene neue Umgebungen. Außerdem
%  kann man natürlich die von \pack{amsmath}, \pack{amsthm}, \pack{amscd} etc.
%  definierten Umgebungen nutzen.
%
%  \subsection{Listen} \label{enum-doku}
%  Zusätzlich zu der \LaTeX-Standard-Listenumgebung 'enumerate', welche ja je
%  nach Schachtelungstiefe anders zählt, habe ich einige weitere
%  'enum*'-Umgebungen definiert.\footnote{Dafür verwende ich das
%    \pack{enumerate}-Paket von David Carlisle, welches auch das übliche
%    'enumerate' um einen optionalen Parameter erweitert -- eine Zusammenfassung
%    der Möglichkeiten findet sich im Abschnitt \ref{enum-package} im
%    Implementationsteil, Details in der Dokumentation des Packages.}
%  \DescribeEnv{enumabc}
%  'enumabc' nummeriert per (a), (b), (c):
%  \begin{enumabc}
%   \item Erster Eintrag.
%   \item Zweiter Eintrag.
%   \item Dritter Eintrag.
%  \end{enumabc}
%  \DescribeEnv{enumnum}
%  'enumnum' nummeriert per (1), (2), (3):
%  \begin{enumnum}
%   \item Erster Eintrag.
%   \item Zweiter Eintrag.
%   \item Dritter Eintrag.
%  \end{enumnum}
%  \DescribeEnv{enumiii}
%  'enumiii' nummeriert per (i), (ii), (iii):
%  \begin{enumiii}
%   \item Erster Eintrag.
%   \item Zweiter Eintrag.
%   \item Dritter Eintrag.
%  \end{enumiii}
%
%    \subsection{Sätze}
%     \DescribeEnv{satz}
%      Sätze werden in einem Kasten dargestellt, die Nummerierung erfolgt
%      automatisch pro Abschnitt ('\section').
%      \begin{verbatim}
%        \begin{satz}
%          Dies ist ein Test-Satz ohne jeden Sinn.
%        \end{satz}\end{verbatim}
%      führt zu
%      \begin{satz}
%         Dies ist ein Test-Satz ohne jeden Sinn.
%      \end{satz}
%   \subsection{Unnummerierte Sätze}
%     \DescribeEnv{satzon}
%     \begin{verbatim}
%       \begin{satzon}
%          Der vorige Satz hatte keinen Sinn.
%       \end{satzon}
%     \end{verbatim}
%     für Sätze, Bemerkungen, etc., denen Herr Kleinert
%     keine Nummer zugewiesen hatte:
%     \begin{satzon}
%        Der vorige Satz hatte keinen Sinn.
%     \end{satzon}
%    \DescribeEnv{korollar}\DescribeEnv{behauptung}^^A\DescribeEnv{awa}
%     Außerdem habe ich einige spezielle dieser nichtnumerierten
%     Sätze -- die Anwendung erfolgt genauso.
%     \begin{behauptung}
%       Das ist allgemein in diesem Abschnitt mit den
%       Beispielsätzen so der Fall.
%     \end{behauptung}
%     \begin{korollar}
%        Auch dieser Korollar ist sinnlos.
%     \end{korollar}
%     \DescribeEnv{eigsatz}
%     Weiterhin habe ich noch eine Umgebung, um Eigenschaften eines
%     eben definierten Objektes in Satzform (aber ohne Nummer) festzustellen.
%\begin{verbatim}
%    \begin{eigsatz}[iii]
%      \item $a + 0 = a$
%      \item $1 \cdot a = a$
%      \item $0 \cdot a = 0$
%    \end{eigsatz}
%\end{verbatim}
% ergibt
%    \begin{eigsatz}[iii]
%      \item $a + 0 = a$
%      \item $1 \cdot a = a$
%      \item $0 \cdot a = 0$
%    \end{eigsatz}
%  Mit dem optionalen Parameter -- möglich sind 'num', 'abc', 'iii', voreingestellt
%  ist 'num' -- kann man die Art der Liste (aus Abschnitt \ref{enum-doku}) auswählen.
%
%  \DescribeEnv{satzbem}
%  Gelegentlich werden mehrere Sätze als "`Bemerkung"' formuliert und nur
%  \emph{lokal} nummeriert. Das geht mit der Umgebung 'satzbem':
%  \begin{satzbem}
%     Diese Bemerkung wird nur innerhalb des Unterkapitels nummeriert,
%     zeigt dessen Nummer aber nicht mit an.
%  \end{satzbem}
%
%     \DescribeEnv{lemma} Lemmata werden ebenfalls nicht automatisch
%       numeriert. Mit Hilfe des optionalen Parameters kann man allerdings
%       Namenszusätze unterbringen. Ansonsten steht da nur \textsc{Lemma.}
%\begin{verbatim}
%     \begin{lemma}[ von Paul]
%        Dieses Lemma wird für den Beweis des obigen
%        Satzes nicht viel nützen.
%     \end{lemma}
%\end{verbatim}
%       \begin{lemma}[ von Paul]
%          Dieses Lemma wird für den Beweis des obigen
%          Satzes nicht viel nützen.
%       \end{lemma}
%
%  \DescribeEnv{satzgen}
%  Sollte man einmal einen Satz mit speziellen Namen benötigen,
%  kann dafür die 'satzgen'-Umgebung herhalten.\footnote{Damit wurden
%   auch die bisher genannten Satz-Umgebungen definiert.}
%\begin{verbatim}
%    \begin{satzgen}{Spezialsatz}
%       Dieser Satz dient nur als Beispiel.
%    \end{satzgen}
%\end{verbatim}
%  \begin{satzgen}{Spezialsatz}
%     Dieser Satz dient nur als Beispiel.
%  \end{satzgen}
% 
%    \subsection{Definitionen}
%     \DescribeEnv{defn}
%      Her Kleinert hatte die Definitionen zwar nicht nummeriert, aber ich habe
%      einfach einmal eine Nummerierung (pro Kapitel) eingeführt.
%\begin{verbatim}
%    \begin{defn}
%       Ein Satz heißt \textbf{sinnlos}, wenn man keine
%       vernünftige Anwendung dafür finden kann.
%    \end{defn}
%\end{verbatim}
%      \begin{defn}
%         Ein Satz heißt \textbf{sinnlos}, wenn man keine vernünftige
%         Anwendung dafür finden kann.
%      \end{defn}
%   Weitere Hilfsmittel für Definitionen sind in Abschnitt \ref{defi-makros}
%   zu finden.
% 
%    \DescribeEnv{vereinbarung}
%    Vereinbarungen funktionieren genauso, und verwenden sogar den
%    selben Zähler wie die Definitionen.
%
%    \subsection{Beispiele, Fragen, etc.}
%     \DescribeEnv{bsp}
%       \begin{verbatim}
%          \begin{bsp}
%             Beispiele werden je Abschnitt durchnummeriert.
%          \end{bsp}\end{verbatim}
%       wird zu
%       \begin{bsp}
%          Beispiele werden je Abschnitt durchnummeriert.
%       \end{bsp}
%     \DescribeEnv{frage}
%       \begin{verbatim}
%          \begin{frage}
%             Waren die Beispiel-Sätze und -Definitionen
%             in diesem Abschnitt sinnvoll?
%          \end{frage}\end{verbatim}
%       \ldots führt zu \ldots
%       \begin{frage}
%          Waren die Beispiel-Sätze und -Definitionen in diesem
%          Abschnitt sinnvoll?
%       \end{frage}
%     \DescribeEnv{fragen}
%    Mit 'fragen' kann man mehrere Fragen zusammen auflisten.
%    \begin{verbatim}
%      \begin{fragen}
%        \item erste Frage?
%        \item zweite Frage?
%        \item dritte Frage?
%      \end{fragen}\end{verbatim}
%      \begin{fragen}
%        \item erste Frage?
%        \item zweite Frage?
%        \item dritte Frage?
%      \end{fragen}
%  \DescribeEnv{antwort}
%  Es gibt natürlich auch Antworten, welche genauso
%  formatiert werden. (Oft ist es sinnvoller einen
%  Satz zu verwenden.), Fazits, Probleme, Ziele,
%  \DescribeEnv{fazit}\DescribeEnv{problem}\DescribeEnv{ziel}
%  \DescribeEnv{loesung}\DescribeEnv{loesungsidee}\DescribeEnv{achtung}
%  Lösungen, Lösungsideen und "`Achtung"'s -- alle werden genauso
%  angewandt und ergeben ähnliche Ergebnisse.
%
%    \subsection{Beweise}
%     \DescribeEnv{beweis}
%       \begin{verbatim}
%          \begin{beweis}
%             Da wir noch keinen wirklichen Satz
%             aufgestellt haben, hier nur ein Dummy-Beweis.
%             Da wir noch keinen wirklichen Satz
%             aufgestellt haben, hier nur ein Dummy-Beweis.
%             Da wir noch keinen wirklichen Satz
%             aufgestellt haben, hier nur ein Dummy-Beweis.
%             Da wir noch keinen wirklichen Satz
%             aufgestellt haben, hier nur ein Dummy-Beweis.
%             Da wir noch keinen wirklichen Satz
%             aufgestellt haben, hier nur ein Dummy-Beweis.
%             Da wir noch keinen wirklichen Satz
%             aufgestellt haben, hier nur ein Dummy-Beweis.
%          \end{beweis}\end{verbatim}
%       Man beachte die Einleitung \ldots
%       \begin{beweis}
%          Da wir noch keinen wirklichen Satz
%          aufgestellt haben, hier nur ein Dummy-Beweis.
%          Da wir noch keinen wirklichen Satz
%          aufgestellt haben, hier nur ein Dummy-Beweis.
%          Da wir noch keinen wirklichen Satz
%          aufgestellt haben, hier nur ein Dummy-Beweis.
%          Da wir noch keinen wirklichen Satz
%          aufgestellt haben, hier nur ein Dummy-Beweis.
%          Da wir noch keinen wirklichen Satz
%          aufgestellt haben, hier nur ein Dummy-Beweis.
%          Da wir noch keinen wirklichen Satz
%          aufgestellt haben, hier nur ein Dummy-Beweis.
%       \end{beweis}
%       \ldots und das QED-Zeichen am Schluss.
%
%  \section{Befehle}
%
%    \subsection{Diverse Symbole für den mathematischen Modus.}
%     \label{symboltabelle}
%  Die Aufzählung hier ist leider nicht vollständig - für eine
%  komplette Liste schaue man in Abschnitt \ref{symbole-impl}
%  im Implementationsteil.
%
%  \begin{longtable}{|c|c|p{5cm}|} 
%   \multicolumn{3}{c}{\emph{Fortsetzung von der vorigen Seite.}}
%   \\\hline
%   Symbol & Befehl  & Bedeutung \\ \hline
%   \endhead
%   \hline
%   Symbol & Befehl  & Bedeutung \\ \hline
%   \endfirsthead
%   \hline
%   \multicolumn{3}{c}{\emph{Fortsetzung nächste Seite.}}
%   \endfoot
%   \hline
%   \endlastfoot
%   $\leer$  & '\leer' & Leere Menge. Statt $\emptyset$ = '\emptyset' \\
%   $\bijekt$ & '\bijekt' & Pfeil für Bijektionen \\
%   $\C$     & '\C'       & Menge der komplexen Zahlen \\
%   $\R$     & '\R'       & Menge der reellen Zahlen \\
%   $\N$     & '\N'       & Menge der natürlichen Zahlen ohne 0 \\
%   $\No$    & '\No'      & $\No := \N \cup \{0\}$ \\
%   $\Q$     & '\Q'       & Menge der rationalen Zahlen \\
%   $\Z$     & '\Z'       & Menge der ganzen Zahlen \\
%   $\Pot$   & '\Pot'     & Potenzmenge einer Menge \\
%   $\Perm$  & '\Perm'    & Permutationsmenge \\
%   $\Pol$   & '\Pol'     & Menge der ganzzahligen Polynome n. Grades: $\Pol_n^\Z$ \\
%   $\CF$    & '\CF'      & Menge der Cauchy-Folgen \\
%   $\NF$    & '\NF'      & Menge der Nullfolgen \\
%   $\Proj{1}$  & '\Proj{1}' & Projektive reelle Gerade \\
%   $\Proj{2}$  & '\Proj{2}' & Projektive reelle Ebene \\
%   $\Zul{f}$   & '\Zul{f}'  & Menge der $f$-zulässigen Teilmengen \\
%   $\erzUG{x}$ & '\erzUG{x}'& die von $x$ erzeugte Untergruppe \\
%   $\erzUG{S}$ & '\erzUG{S}'& dito \\
%   $\konj{z}$  & '\konj{x}' & konjugiert komplexe Zahl zu $z$\\
%   $\abs{x}$   & '\abs{x}'  & Betrag von $x$ (ändert die Größe automatisch)\\
%   $\klamm{a+b}$  & '\klamm{a+b}' & runde Klammern (ändern die Größe automatisch) \\
%   $\menge{0}$    & '\menge{0}'   & Mengenklammern (ändern die Größe automatisch) \\
%   $\eckKl{\pi}$  & '\eckKl{\pi}' & größtes Ganzes von $\pi$ \\
%   $\oo$         & '\oo'          & unendlich \\
%   $\Kor$         & \verb'\Kor'        & Menge der Korrespondenzen / Korrelationen \\
%   $\Abb$         & \verb'\Abb'        & Menge der Abbildungen \\
%   $\incl$        & \verb'\incl'       & Inklusionsabbildung \\
%   $\const$       & \verb'\const'      & konstante Abbildung \\
%   $\Inj$         & \verb'\Inj'        & Menge der Injektionen \\
%   $\Surj$        & \verb'\Surj'       & Menge der Surjektionen \\
%   $\Bij$         & \verb'\Bij'        & Menge der Bijektionen \\
%   $\Trans$       & \verb'\Trans'      & Menge der transzendenten Zahlen: $\Trans_\Z(R)$ \\
%   $\Alg$         & \verb'\Alg'        & Menge der algebraischen Zahlen: $\Alg_\Z(R)$ \\
%   $\Spec$        & \verb'\Spec'       & Primspektrum eines Ringes: $\Spec(\Z)$. \\
%   $\Ext$         & \verb'\Ext'        & Menge der Extremalpunkte (siehe Bourbaki)
%                   \end{longtable}
%
%   \subsection{Definitionen von mathematischen Symbolen und Begriffen}
%    \label{defi-makros}
%
%  \DescribeMacro{\idef}\DescribeMacro{\mdef}\DescribeMacro{\defx}
%      Frisch definierte mathematische Symbole sollen oft auch in den
%      Index, und/oder am Rand der aktuellen Seite erscheinen, damit sie
%      leichter zu finden sind.
%      Deswegen habe ich die Befehle:
%\begin{verbatim}
%                   \idef{\Pot}
%                   \mdef{\Pot(A)}
%                   \defx{\Pot(A)}
%\end{verbatim}
%               für die Darstellung des Symbols '\Pot' im Index (alle Symbole sind am
%               Anfang, unter "`\ "' einsortiert), am Rand, oder an der aktuellen
%               Stelle definiert.
%               '\defx{...}' ist eigentlich überflüssig, nur der Vollständigkeit halber
%               hier enthalten.
%
%      \DescribeMacro{\imdef}\DescribeMacro{\xmdef}
%      \DescribeMacro{\xidef}\DescribeMacro{\ximdef}
%               Dann gibt es noch die Kombinationen
%\begin{verbatim}
%      \imdef{}    % Index + Rand
%      \xmdef{}    % hier + Rand
%      \xidef{}    % hier + Index
%      \ximdef{}   % hier + Index + Rand
%\end{verbatim}
%
%      \DescribeMacro{\index}\DescribeMacro{\defi}
%      Um Text (keine Symbole) in den Index aufzunehmen, verwendet man den Befehl
%      '\index'\marg{Das hier kommt in den Index}, der bei \LaTeX{} mitgeliefert wird.
%      Für Definitionen habe ich auch noch '\defi'\marg{Wort} definiert, was
%      \meta{Wort} (das können auch mehrere Wörter sein) an der aktuellen Stelle fett
%      hervorhebt und zusätzlich in den
%      Index aufnimmt. Falls im Index eine andere Form zu finden sein soll
%      (etwa wegen gramatischer Unterschiede), ist noch ein optionaler Parameter
%      möglich: '\defi'\oarg{Index-Eintrag}\marg{Text} nimmt \meta{Index-Eintrag}
%      in den Index auf und hebt \meta{Text} hervor.
%
%    \subsection{Abkürzungen bzw. Textbausteine}
%      Dann habe ich noch für einige häufig benutzte Textstücke
%      eigene Befehle definiert:
%           \begin{itemize}
%            \item   '\ubung{7}{3}' -- \ubung{7}{3} 
%            \item   '\dsfBa' -- \dsfBa 
%            \item   '\DsfBa' -- \DsfBa 
%            \item   '\oBdA' -- \oBdA 
%            \item   '\OBdA' -- \OBdA 
%           \end{itemize}
%
% \changes{v0.05}{2002/07/23}{Ich habe die Benutzerdokumentation
%                             aus 'Anleitung.tex' eingefügt
%                             (etwas abgeändert)}
% \changes{v0.11a}{2006/02/14}{Verwendung der aktuellen Version der
%                              Lizenz (mit Label) und entsprechend von pauldoc.dtx}
% \changes{v0.11a}{2006/02/14}{Index und Änderungen vertauscht.}
% 
%\StopEventually{
%   \appendix
%   \includeLicense
%   \PrintChanges
%   \PrintIndex
%  }
%
% 
% \chapter{Der Code für den Dokumentations-Treiber}
% Der folgende Code sorgt dafür, dass
% beim Ausführen von latex mit der Datei 'alg-script.dtx'
% diese Dokumentation erzeugt wird.
% \changes{v0.02}{2002/07/21}{Der Treiber-Code ist jetzt auch dokumentiert.}
% \changes{v0.04}{2002/07/22}{Der Treiber wird umgestellt, um jetzt mit der
%                             Klasse zu arbeiten.}
%    \begin{macrocode}
%<*driver>
\documentclass[draft,doc,oneside]{alg-script}
%    \end{macrocode}
% Wir machen die in der Klasse vorgenommene Einschränkung
% der Numerierung rückgängig (für die Doku). Außerdem passen
% wir die Index-Erzeugung bei '\idef' an den durch \pack{doc}
% veränderten Index-Mechanismus an. Die Angaben auf dem Rand
% werden angepasst, damit sie sich nicht mit den Makro-Namen
% überlappen.
%    \begin{macrocode}
\setcounter{secnumdepth}{4}
\renewcommand{\idef}[1] {\index{$#1$\encapchar usage}}
\renewcommand{\mdef}[1] {\marginpar{\boxed{#1}}}
%    \end{macrocode}
% Diverse Einstellungen für die Doku sind im Paket
% \pack{pauldoc} getroffen. Damit die richtige
%  Lizenz eingebunden wird, definieren wir den
%  Dateinamen.
%    \begin{macrocode}
\usepackage[chapter]{pauldoc}[2006/02/14]
\newcommand{\lpplfilename}{lppl.tex}
%    \end{macrocode}
%
%  Wir stellen noch einige Längen ein, um das Seiten-Layout
%  von \pack{ltxdoc} nachzuahmen -- das Layout von
%  \pack{alg-script} taugt nichts für die Dokumentation,
%  insbesondere, da \pack{doc} die Makronamen immer links
%  schreiben will.
%    \begin{macrocode}
\setlength{\textwidth}{355.0pt}
\setlength{\marginparwidth}{126.0pt}
\setlength{\oddsidemargin}{82.0pt}
\setlength{\evensidemargin}{82.0pt}
\setlength{\marginparpush}{0.0pt}
%    \end{macrocode}
%  Um die ziemlich lange Tabelle der Symbole in Abschnitt \ref{symboltabelle}
%  zu setzen, dient das Package \pack{longtable}.
%    \begin{macrocode}
\usepackage{longtable}
%    \end{macrocode}
%  Hier wird die Dokumentation schließlich erzeugt.
%  (Listfiles dekommentiere ich bei Bedarf, um mir die
%   Liste der verwendeten Dateien anzeigen zu lassen.)
%    \begin{macrocode}
%\listfiles
\begin{document}
  \DocInput{alg-script.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
% \chapter{Der Code der Klasse}
% \label{implementation}
%
% \section{Identifikation}
%
% Wir deklarieren zunächst die benötigte
% \LaTeX-Version und identifizieren diese Klasse.
% \changes{v0.04}{2002/07/22}{Das Package wurde zu einer Klasse umgebaut.}
%    \begin{macrocode}
%<*class>
\NeedsTeXFormat{LaTeX2e}[2001/06/01]
\ProvidesClass{alg-script}
      [2006/03/23 v0.13 Pauls Algebra-Skript-Klasse (PE)]
%</class>
%    \end{macrocode}
%
% \section{Optionen}
% \subsection{doc}
%  Falls die 'doc'-Option angegeben wird, soll das \pack{doc}-Package
%  (in \ref{doc-load}) geladen werden.
%    \begin{macrocode}
\DeclareOption{doc}{%
   \renewcommand{\vielleicht@doc}{\RequirePackage{doc}[2006/02/02]}%
}%
\newcommand{\vielleicht@doc}{}%
%    \end{macrocode}
%
% \subsection{$\oldphi$ statt $\phi$: \texttt{oldphi}}
% \begin{macro}{\@defphi} \label{oldphi}
% \changes{v0.10}{2005/11/28}{Neu: Option 'oldphi', um die Ersetzung
%                              von '\phi' durch '\varphi' abzuschalten.}
% Normalerweise tauschen wir '\phi' gegen '\varphi' aus -- 
% die Option 'oldphi' schaltet das ab. Wenn die Option gegeben
% ist, wird '\@defphi' als '{}' definiert, andernfalls als '\@newphi'.
%    \begin{macrocode}
\newcommand{\@defphi}{\@newphi}

\DeclareOption{oldphi}{
  \renewcommand{\@defphi}{}
}
%    \end{macrocode}
% Später (\ref{newphi}) wird dann '\@newphi' definiert und '\@defphi'
% aufgerufen, um die eventuelle Vertauschung vorzunehmen.
% \end{macro}
%
% \section{Geladene Pakete}
%
%\subsection{Basisklasse}
%
%  \changes{v0.11}{2006/02/08}{\pack{scrbook} statt \pack{amsbook}
%                              als Basisklasse, dafür \pack{amsmath},
%                              \pack{amsthm} und \pack{makeidx}
%                              als einzelne Packages.}
% Als Basisklasse laden wir \pack{scrbook},
% die \KOMAScript-Buchklasse. \KOMAScript
% ist in aktuellen \TeX-Distributionen enthalten -- ich
% empfehle die Lektüre des beiliegenden 'scrguide'.
%
% Wir übergeben hier die Optionen '11pt' (für die Schriftgröße),
% 'a4paper' (für die Papiergröße).
% Weiterhin werden alle Optionen übergeben, die diese
% Klasse bekommen hat, außer die selbst behandelten -- diese
% werden hier gleich ausgeführt.
%    \begin{macrocode}
  \DeclareOption*{
    \PassOptionsToClass{\CurrentOption}{scrbook}
  }
  \PassOptionsToClass{11pt,a4paper,leqno}{scrbook}
  \ProcessOptions{}
  \LoadClass{scrbook}[2004/09/16]
%    \end{macrocode}
%
%  \subsection{doc}\label{doc-load}
%  Falls die 'doc'-Klassenoption gegeben war, laden wir
%  hier das \pack{doc}-Paket -- das ist ein Hack, der leider
%  notwendig war, um die Dokumentation für diese Klasse mit
%  der Klasse selbst zu erstellen, da sich \pack{amscd}
%  (siehe \ref{amscd}) und \pack{doc} nur beim Laden in dieser
%  Reihenfolge vertragen. Wenn jemand eine bessere Lösung findet,
%  immer her damit.
%
%    \begin{macrocode}
  \vielleicht@doc
%    \end{macrocode}
%
% \subsection{\AmS-Pakete}
%  Diverse \LaTeX-Pakete werden von der American Mathematical Society
%  bereitgestellt,
%  sie sind insgesamt unter dem Namen \AmS-\LaTeX bekannt. Sie sind in jeder
%  vernünftigen \TeX-Distribution enthalten.
%
% Mehr Infos zu den einzelnen Paketen gibt es in den Doku-Dateien
% 'amsldoc.dvi', 'amsthdoc.dvi' und 'instr-l.dvi' (sollten in
%  'ams*'-Verzeichnissen unter 'texmf/doc/latex/' zu finden sein).
%
% \subsubsection{\AmS-Math}
%   \pack{amsmath} definiert eine Reihe weiterer mathematischer
%   Umgebungen, welche einige Vorteile gegenüber den in \LaTeX{}
%   eingebauten haben.
%
%  Wir übergeben 'namelimits', um bei Operatoren wie $\sin$ und $\lim$
%  die mit '^' und '_' anzugebenden Indizees/Grenzen im Display-Math-Modus
%  darüber bzw. darunter zu schreiben, nicht daneben.
%    \begin{macrocode}
  \PassOptionsToPackage{namelimits,centertags}{amsmath}
  \RequirePackage{amsmath}
%    \end{macrocode}
%
% \subsubsection{\AmS-thm}
% Das Package \pack{amsthm} erweitert den (später verwendeten)
% '\newtheorem'-Befehl, sowie definiert die 'proof'-Umgebung,
% welche wir für unsere 'beweis'-Umgebung (siehe \ref{beweis})
% benutzen.
%    \begin{macrocode}
  \RequirePackage{amsthm}
%    \end{macrocode}
%
%\subsubsection{\AmS-Symbole}
% Das Package \pack{amssymb} definiert
% einige nützliche mathematische Symbole.
% Sie sind in der "`Comphrehensive \LaTeX{} Symbol List"' ('symbols-a4')
% enthalten -- zusätzlich ist in "`Users Guide to AMSFonts"' ('amsfndoc')
% ab Seite 20 (in Version 2.2d, Januar 2002) eine Liste enthalten.
%
% \begin{macro}{\mathbb}
% \begin{macro}{\mathfrak}
% Außerdem werden von diesem Package die Befehle '\mathbb',
% für "`schöne"' Mengensymbole wie $\R, \C, \N$, und '\mathfrak'
% für Frakturbuchstaben wie $\Pot$, $\Vek V$ und $\ideal a$ definiert.
%    \begin{macrocode}
  \RequirePackage{amssymb}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Euler-Schriftart}
%  \begin{macro}{\mathcal}
% Wir wollen die Euler-Skript-Schrift für '\mathcal' verwenden.
%    \begin{macrocode}
  \RequirePackage{eucal}
%    \end{macrocode}
%  \end{macro}
%
% Beispiel der Anwendung:
%    \begin{verbatim}
% Das $\mathcal R$-Integral ist nicht
% so allgemein wie das $\mathcal L$-Integral. \end{verbatim}
% Ergebnis:
% \begin{quote}
%   Das $\mathcal R$-Integral ist nicht
%   so allgemein wie das $\mathcal L$-Integral.
% \end{quote}
%
%
%\subsubsection{Kommutative Diagramme}
% \label{amscd}
% Das \pack{amscd}-Package erlaubt einfache
% kommutative Diagramme ohne diagonale Pfeile.
%
%    \begin{macrocode}
  \RequirePackage{amscd}
%    \end{macrocode}
%
% \DescribeEnv{CD}
% Dafür wird die 'CD'-Umgebung genutzt:
% \begin{verbatim}
% \begin{CD}
%     A    &   @>f>> &  B      \\
%   @VgVV  &      &   @AA{h}A  \\
%     C    &   @<<k<&   D      
% \end{CD}\end{verbatim}
% wird zu
% \begin{equation*} \begin{CD}
%     A    &   @>f>> &  B      \\
%   @VgVV  &       &  @AA{h}A  \\
%     C    &   @<<k< &  D      
% \end{CD} \end{equation*}
% Genaueres ist in 'amsldoc.dvi' auf Seite 20 erläutert.
%
%
% \subsection{Eingabe}
% Um die direkte Eingabe von Sonderzeichen (z.B. ä, ö ü, ß)
% möglich zu machen, laden wir das \pack{inputenc}-Paket
% mit der Option \texttt{latin1}. Das heißt insbesondere, dass
% die zu verarbeitenden Dateien in ISO-8859-1 kodiert sein sollten,
% sonst kommt dabei nur Unfug heraus.
%
%    \begin{macrocode}
  \RequirePackage[latin1]{inputenc}
%    \end{macrocode}
%
% \subsection{Deutsch}
% \changes{v0.11}{2005/12/15}{Package 'babel' statt 'ngerman'}
% Wir wollen deutschen Text (und vor allem
% deutsche Bezeichnungen etwa fürs Inhaltsverzeichnis
% etc.) und die Silbentrenung der neuen deutschen
% Rechtschreibung nutzen.
%    \begin{macrocode}
  \RequirePackage[ngerman]{babel}
%    \end{macrocode}
%
% \subsection{xspace}
%  \begin{macro}{\xspace}
%  Das \pack{xspace}-Paket hilft uns bei den Definitionen einiger
%  Befehle, indem dort nach der Verwendung des Makros folgender Leerraum
%  beachtet (und nicht verschluckt) wird.
%    \begin{macrocode}
  \RequirePackage{xspace}
%    \end{macrocode}
%  \end{macro}
%
%\subsection{Neues \texttt{enumerate}}\label{enum-package}
% \begin{environment}{enumerate}
% Wir laden mit diesem Package eine
% Erweiterung der 'enumerate'-Umgebung.
%    \begin{macrocode}
  \RequirePackage{enumerate}
%    \end{macrocode}
% Es kann jetzt mit '\begin{enumerate}[(a)]  ... \end{enumerate}'
% die Art der Aufzählungszeichen (Standard: '(1)') geändert werden.
% Folgende Zeichen werden durch den Zähler angepasst:
%
% \begin{tabular}{c|l}
%       'a'        &  a b c d ... \\
%       'A'        &  A B C D ... \\
%       '1'        &  1 2 3 4 ... \\
%       'i'        &  i ii iii iv ... \\
%       'I'        &  I II III IV ... 
% \end{tabular}
%
% Einige Beispielumgebungen werden wir später (Abschnitt \ref{enum-def}) damit
% noch definieren.
% \end{environment}
%
% \subsection{Index}
% \begin{macro}{\printindex}
%  Um einen Index setzen zu können, verwenden wir
%  dieses Standard-Package.
%    \begin{macrocode}
  \RequirePackage{makeidx}
%    \end{macrocode}
% \end{macro}
%
% \changes{v0.01}{2002/07/20}{Diverse $\setminus$'usepackage'-Anweisungen
%                             eingefügt.}
%
% \section{Einige geänderte Zähler}
%
% Wir wollen die Nummerierung nur für Kapitel ('\chapter') und Abschnitt ('\section'),
% kleinere Unterteilungen nicht. (Für diese Dokumentation wurde das
%  rückgängig gemacht, daher ist der Effekt hier nicht zu beobachten.)
%    \begin{macrocode}
  \setcounter{secnumdepth}{1}
%    \end{macrocode}
%
% Ins Inhaltsverzeichnis sollen dagegen Kapitel, Abschnitte und Unterabschnitte
% ('\subsection') aufgenommen werden.
%    \begin{macrocode}
  \setcounter{tocdepth}{2}
%    \end{macrocode}
%
%
% \section{Neue Umgebungen}
%
%\changes{v0.08}{2003/02/21}{'enumabc', 'enumnum', 'enumiii' aus
%       'aufgaben.cls' kopiert und Dokumentation dafür geschrieben.}
% \subsection{Neue Aufzählungen}\label{enum-def}
%  Hier einige häufig verwendete Anwendungen des vorhin
%  (Abschnitt \ref{enum-package}) geladenen \pack{enumerate}-Packages.
%
%  \begin{environment}{enumabc}
%  \begin{environment}{enumnum}
%  \begin{environment}{enumiii}
%  Diese drei Umgebungen funktionieren exakt identisch -- sie
%   rufen jeweils die 'enumerate'-Umgebung auf, mit jeweils
%   anderem optionalen Parameter. Dieser legt die Nummerierungsweise
%   fest.
%    \begin{macrocode}
\newenvironment{enumabc}
{\begin{enumerate}[(a)]}
{\end{enumerate}}
\newenvironment{enumnum}
{\begin{enumerate}[(1)]}
{\end{enumerate}}
\newenvironment{enumiii}
{\begin{enumerate}[(i)]}
{\end{enumerate}}
%    \end{macrocode}
%  \end{environment}
%  \end{environment}
%  \end{environment}
%
% \subsection{Sätze im Kasten}
% Unsere 'satz'-Umgebung soll
% die Sätze in einem Kasten anzeigen.
% Das ist etwas aufwendiger als die üblichen
% Satz-Umgebungen.
% \begin{macro}{\satz@box}
% In '\satz@box' werden wir unsere Sätze
% zwischenspeichern.
%    \begin{macrocode}
  \newsavebox{\satz@box}
%    \end{macrocode}
% \end{macro}
%
% \begin{environment}{satzgen}
% \changes{v0.12}{2006/02/21}{Jetzt $80\%$ statt $75 \%$ der Seitenbreite,
%  und etwas weniger gezwungener Whitespace am Ende.}
% \changes{v0.13}{2006/03/21}{Jetzt wird \cs{linewidth} anstatt \cs{columnwidth} verwendet.}
% \changes{v0.13}{2006/03/21}{\cs{medskip} davor und dahinter eingefügt.}
% Wir definieren eine generische Satz-Umgebung, um später
% einfach weitere satzähnliche Konstrukte bauen zu können.
% Sie nimmt einen Parameter.
%  Der ganze Rest wird in einer LR-Box untergebracht und
%  diese dann in '\satz@box' gespeichert.
% Dann lassen wir etwas Rand und beginnen eine 'minipage'
% von $80\%$ der Spaltenbreite.  Dahinein kommt jetzt 
% zunächst der Text des Argumentes -- in einem Extra-Rahmen und in \textsc{Smallcaps}.
%    \begin{macrocode}
  \newenvironment{satzgen}[1]
  {%
    \begin{lrbox}{\satz@box}%
    \par\par\ \ %
    \begin{minipage}{0.8\linewidth}%
    \fbox{\textsc{#1.}}%
  }
%    \end{macrocode}
% Dann folgt der Text, der im Inneren der
% Umgebung auftaucht.
%  Am Ende schließen wir die Minipage ab,
%  lassen etwas Platz, und beenden die LR-Box (die,
%  wir erinnern uns,
%  in '\satz@box' gespeichert wird).
%  Danach kommt die eigentliche Ausgabe:
%  Etwas Platz, ein Rahmen mit unserer gespeicherten Box,
%  und wieder etwas Platz.
%    \begin{macrocode}
  {%
\end{minipage}\end{lrbox}%
    \par\medskip%
    \fbox{\usebox{\satz@box}}%
    \par\medskip%
  }
%    \end{macrocode}
% Das Ganze sieht jetzt in etwa so aus:
% \begin{verbatim}
%   \begin{satzgen}{Beispiel 1}
%      Dies ist ein Beispieltext
%   \end{satzgen}\end{verbatim}
% wird zu:
%
%   \begin{satzgen}{Beispiel 1}
%      Dies ist ein Beispieltext
%   \end{satzgen}
%
% \end{environment}
% Aus dieser generischen Satz-Umgebung basteln wir uns
% jetzt das, was wir benötigen.
%
%\begin{environment}{satz}
% \changes{v0.12}{2006/02/18}{Jetzt \cs{refstepcounter} statt \cs{stepcounter}
%    verwendet, so das Referenzen auf den Satz nicht nur die Abschnittsnummer
%    geben.}
% Die 'satz'-Umgebung hat eine eigene
% Zählung innerhalb jedes Abschnittes. ('\numberswithin' wird
% durch \pack{amsmath} definiert.)
% Es wird jeweils die Nummer mit ausgegeben.
%    \begin{macrocode}
  \newcounter{satz}
  \numberwithin{satz}{section}
  \newenvironment{satz}
  {
    \refstepcounter{satz}
    \begin{satzgen}{Satz \thesatz}
  }
  { \end{satzgen} }
%    \end{macrocode}
%  Ein Beispiel der Anwendung ist
%  \begin{verbatim}
%    \begin{satz}
%       Dies ist ein Test-Satz.
%    \end{satz}\end{verbatim}
% mit der Ausgabe:
%    \begin{satz}
%       Dies ist ein Test-Satz.
%    \end{satz}
%\changes{v0.03}{2002/7/21}{Erste Version der Satz-Umgebung.}
%\end{environment}
%\begin{environment}{satzbem}
% \changes{v0.12}{2006/02/21}{Neu}
% \changes{v0.12}{2006/02/23}{Zählerdefinition vereinfacht.}
% \changes{v0.13}{2006/03/07}{Zähler wird jetzt auch bei \cs{section} zurückgesetzt.}
% Die 'satzbem'-Umgebung hat eine eigene
% Zählung innerhalb jedes Unterabschnittes, gibt dessen
% Nummer aber nicht mit aus.
%    \begin{macrocode}
  \newcounter{satzbem}[subsection]
  \@addtoreset{satzbem}{section}
  \newenvironment{satzbem}
  {%
    \refstepcounter{satzbem}%
    \begin{satzgen}{Bemerkung \thesatzbem}%
  }
  {\end{satzgen}}
%    \end{macrocode}
%\end{environment}
% \begin{environment}{satzon}
%   Ein "`Satz ohne Nummer"'.
%    \begin{macrocode}
  \newenvironment{satzon}
  { \begin{satzgen}{Satz ohne Nummer} }
  { \end{satzgen} }
%    \end{macrocode}
%   Herr Kleinert hat neben seinen eigentlichen
%   (durchnumerierten) Sätzen noch diverse weitere
%   Korollare, Bemerkungen, etc. aufgeschrieben,
%   die ich -- im Mengenlehre-Skript -- alle als "`Satz ohne Nummer"'
%   ins Skript aufnehme.
% \end{environment}
%
%  Ein paar spezielle "`Sätze ohne Nummer"' habe ich für
% die späteren Vorlesungen aber trotzdem noch:
%
% \begin{environment}{behauptung}
% \changes{v0.11}{2005/12/11}{Neu eingefügt}
%   Eine Behauptung.
%    \begin{macrocode}
  \newenvironment{behauptung}
  { \begin{satzgen}{Behauptung} }
  { \end{satzgen} }
%    \end{macrocode}
% \end{environment}
% \begin{environment}{eigsatz}
%   \changes{v0.11}{2006/01/29}{Neu hinzugekommen}
%   'eigsatz' ist die Kombination von 'satzgen' mit
%   einer der 'enumXXX'-Umgebungen. Den genauen Namen
%   dieser Umgebung müssen wir uns merken, damit wir
%   die Umgebung nachher wieder beenden können.
%    \begin{macrocode}
  \newenvironment{eigsatz}[1][num]
  {%
     \renewcommand*{\@temp}{#1}%
     \begin{satzgen}{Eigenschaften}%
        \begin{enum\@temp}%
  }
  {
        \end{enum\@temp}%
     \end{satzgen}%
  }
%    \end{macrocode}
% \end{environment}
% \begin{environment}{korollar}
% \changes{v0.11}{2006/01/10}{Neu eingefügt}
%   Ein Korollar.
%    \begin{macrocode}
  \newenvironment{korollar}
  { \begin{satzgen}{Korollar} }
  { \end{satzgen} }
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{awa}
%  Das Auswahlaxiom wird speziell markiert.
%  \footnote{Diesen Satz braucht man üblicherweise nicht (und auch
%   ich nur ein einziges Mal).
%   Ich überlege daher, ihn rauszustreichen bzw.
%   in ein eigenes Paket für die entsprechende
%  Vorlesung zu verschieben.}
%    \begin{macrocode}
  \newenvironment{awa}
  { \begin{satzgen}{Auswahlaxiom} }
  { \end{satzgen} }
%    \end{macrocode}
% \end{environment}
%
%
% \begin{environment}{lemma}
% Lemmata sind ja vom Prinzip auch Sätze, sollten also
%  genauso formatiert werden. Ein optionaler Parameter
%  kann etwa eine Nummer oder ein zusätzlicher Name sein,
%  welcher nach "`Lemma"' ausgegeben wird.
% \changes{v0.11}{2006/01/25}{Jetzt mit optionalem Parameter}
% \changes{v0.11}{2006/01/25}{Jetzt kleingeschrieben (wie alle
%                             Umgebungen hier)}
%    \begin{macrocode}
  \newenvironment{lemma}[1][]
  { \begin{satzgen}{Lemma#1} }
  { \end{satzgen} }
%    \end{macrocode}
% \end{environment}
%
% \subsection{Definitionen, Beispiele, Fragen}
%
% \begin{environment}{defn}
% Definitionen werden kursiv gedruckt und innerhalb
% jedes Kapitels durchnummeriert. 
%    \begin{macrocode}
  \theoremstyle{plain} 
  \newtheorem{defn}{Definition}[chapter]
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{vereinbarung}
% Eine Vereinbarung ist ähnlich wie eine Definition zu
% handhaben, und wird daher auch genauso formatiert und
% nummeriert.
%    \begin{macrocode}
\newtheorem{vereinbarung}[defn]{Vereinbarung}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{bsp}
%   Ein Beispiel wird dagegen wie ganz normaler
%   Text formatiert. Die Nummerierung erfolgt je
%   Abschnitt.
%    \begin{macrocode}
  \theoremstyle{remark}
  \newtheorem{bsp}{Beispiel}[section]
%    \end{macrocode}
% \changes{v0.09}{2003/03/17}{Tippfehler in "`Beipiel"' zu "`Beispiel"' korrigiert.}
%  \end{environment}
%
% \begin{environment}{frage}
%   Eine Frage wird wie normaler Text formatiert,
%   und bekommt keine Nummerierung.
%    \begin{macrocode}
\newtheorem*{frage}{Frage}
%    \end{macrocode}
% \end{environment}
% \begin{environment}{fragen}
% \changes{v0.11}{2005/12/12}{Neu hinzugekommen}
%  Das ist eine Kombination einer 'frage'-artigen
%  Umgebung mit 'enumnum'.
%    \begin{macrocode}
\newtheorem*{fragen@impl}{Fragen}
\newenvironment*{fragen}
{%
  \begin{fragen@impl}%
     \begin{enumnum}%
}
{
     \end{enumnum}%
  \end{fragen@impl}%
}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{antwort}
% \changes{v0.11}{2005/12/14}{Neu}
% Zu einer Frage gehört natürlich auch eine Antwort.
%    \begin{macrocode}
\newtheorem*{antwort}{Antwort}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{problem}
%  \changes{v0.12}{2006/02/14}{Neu}
%   Analog zur Frage.
%    \begin{macrocode}
\newtheorem*{problem}{Problem}
%    \end{macrocode}
% \end{environment}
% \begin{environment}{loesung}
%  \changes{v0.12}{2006/02/14}{Neu}
% \begin{environment}{loesungsidee}
%  \changes{v0.12}{2006/02/14}{Neu}
%   Gehört zu einem Problem dazu.
%    \begin{macrocode}
\newtheorem*{loesung}{Lösung}
\newtheorem*{loesungsidee}{Lösungsidee}
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \begin{environment}{achtung}
%  \changes{v0.12}{2006/02/21}{Neu}
% \begin{environment}{warnung}
%  \changes{v0.13}{2006/03/06}{Neu}
%   Gelegentlich gibt es kritische Stellen, auf die hingewiesen werden muss \dots
%  Im Prinzip ist das nichts anderes als eine Bemerkung.
%    \begin{macrocode}
\newtheorem*{achtung}{Achtung}
\newtheorem*{warnung}{Warnung}
%    \end{macrocode}
% \end{environment}
% \end{environment}
%
% \begin{environment}{fazit}
% \changes{v0.11}{2005/12/12}{Neu hinzugekommen}
% \begin{environment}{bemerkung}
% \changes{v0.11}{2005/12/12}{Neu hinzugekommen}
% \begin{environment}{erinnerung}
% \changes{v0.11}{2005/12/12}{Neu hinzugekommen}
%   Ein Fazit wird wie normaler Text formatiert,
%   und bekommt keine Nummerierung, genauso wie eine
%   Bemerkung und eine Erinnerung.
%    \begin{macrocode}
\newtheorem*{fazit}{Fazit}
\newtheorem*{bemerkung}{Bemerkung}
\newtheorem*{erinnerung}{Erinnerung}
%    \end{macrocode}
% \end{environment}
% \end{environment}
% \end{environment}
% \begin{environment}{satzfazit}
% \changes{v0.11}{2005/12/13}{Neu hinzugekommen}
% Ein Fazit kann gelegentlich auch die Form eines
% Satzes haben, sollte dann auch wie ein solcher
% dargestellt werden.
%    \begin{macrocode}
\newenvironment{satzfazit}
{\begin{satzgen}{Fazit}}
{\end{satzgen}}
%    \end{macrocode}
% \end{environment}
%
% \begin{environment}{ziel}
% \changes{v0.11}{2006/02/07}{Neu hinzugekommen}
% Gelegentlich ist es für die Motivation ganz hilfreich, wenn man
% gesagt bekommt, wo man eigentlich hin will. Das geht mit '\begin{ziel}...\end{ziel}'.
%    \begin{macrocode}
\newenvironment*{ziel}
  {%
     \noindent\textbf{Ziel:}%
     \begin{quotation}%
     }
     {%
     \end{quotation}%
  }
%    \end{macrocode}
% \end{environment}
%
% \subsection{Beweise}
%
% \begin{environment}{beweis} \label{beweis}
% \changes{v0.11}{2006/01/23}{Jetzt mit optionalem Argument}
% \changes{v0.12}{2006/02/21}{mit Versuch, einen Seitenumbruch zu verhindern.}
% \changes{v0.12}{2006/03/15}{Jetzt doch einfach \cs{par}.}
%   Für Beweise passe ich die 'proof'-Umgebung aus
%   \pack{amsthm} geeignet an.
%    \begin{macrocode}
  \newenvironment{beweis}[1][]
  {
    \begin{proof}[Beweis#1]%
       ~\par%
  }
  {\end{proof}}
%    \end{macrocode}
% \end{environment}
%
% \section{Mathematische Symbole} \label{symbole-impl}
%  Diverse Symbole werden in den Vorlesungen verwendet.
%  Teilweise habe ich (für vorhandene Symbole) neue
%  Namen erfunden, teilweise die Symbole erst
%  zusammengesetzt.
%
% \subsection{Alternatives Symbol für kartesisches Produkt}
%
% \begin{macro}{\varprod}
%   Wir wollen neben dem normalen Symbol $\prod$ für das
%   kartesische Produkt auch das Symbol \ximdef{\varprod} verwenden
%   können. Dazu kopiere ich hier den passenden Code aus
%   \pack{txfonts}. Es wird die Schriftart 'txexa' benötigt.
%   (Falls das nicht einzeln geht, müssen die 'TX' Fonts
%     komplett installiert werden.)
%   \changes{v0.07}{2002/07/24}{Ich habe das '\varprod'-Symbol aus den
%                               'TX' Fonts eingefügt.}
%    \begin{macrocode}
  \DeclareSymbolFont{largesymbolsA}{U}{txexa}{m}{n}
  \DeclareMathSymbol{\varprod}{\mathop}{largesymbolsA}{"10}
%    \end{macrocode}
% Anwendungsbeispiel: ' \varprod_{i=1}^n M_i ' wird zu
%   $$ \varprod_{i=1}^n M_i.$$
% \end{macro}
%
% \subsection{Anderes \texttt{\protect\bslash{}phi}} ^^A : $\phi$ statt $\oldphi$}
% \begin{macro}{\@newphi}
% \begin{macro}{\oldphi}
% \begin{macro}{\phi}
% \changes{v0.10}{2005/11/28}{Neu: Ersetzung durch '\varphi'.}
% \label{newphi}
% \imdef{\varphi} Ich tausche das übliche '\phi' ($\oldphi$) gegen das
% mir besser gefallende '\varphi' ($\varphi$) aus: 
%   '\@newphi' sichert das alte '\phi' (\ximdef{\oldphi}) als '\oldphi', und
%   redefiniert dann '\phi', um '\varphi' ($\varphi$) anzuzeigen.
%    \begin{macrocode}
\newcommand{\@newphi}{%
  \newcommand{\oldphi}{}%
  \let\oldphi\phi%
  \renewcommand{\phi}{\varphi}%
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% Dann rufen wir noch '\@defphi' auf, was (je nachdem, ob die Option 'oldphi'
% gegeben wurde oder nicht, siehe \ref{oldphi}) entweder '\@newphi' aufruft oder nichts tut.
%    \begin{macrocode}
\@defphi
%    \end{macrocode}
% \end{macro}
%
% \subsection{Schönere Namen für $\ny$ und $\my$}
% \begin{macro}{\my}
% \changes{v0.10}{2005/11/29}{Neu aus aufgaben.cls kopiert (und angepasst)}
% \begin{macro}{\My}
% \changes{v0.10}{2005/11/29}{Neu aus aufgaben.cls kopiert (und angepasst)}
% \begin{macro}{\ny}
% \changes{v0.10}{2005/11/29}{Neu aus aufgaben.cls kopiert (und angepasst)}
% \begin{macro}{\Ny}
% \changes{v0.10}{2005/11/29}{Neu aus aufgaben.cls kopiert (und angepasst)}
% Die englischen Namen der griechischen Buchstaben \ximdef{\my} (mu) und \ximdef{\ny} (nu)
% passen mir nicht so sehr, daher definiere ich mir eben noch als Aliase '\my' und '\ny'
% sowie die Großbuchstaben \ximdef{\My} und \ximdef{\Ny} (welche identisch mit den
% entsprechenden lateinischen Buchstaben sind) dazu.
%    \begin{macrocode}
\newcommand{\my}{\mu}
\newcommand{\My}{M}
\newcommand{\ny}{\nu}
\newcommand{\Ny}{N}
%    \end{macrocode}
%
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Einige Pfeile}
%  \begin{macro}{\bijekt}
% Ein Pfeil\imdef{\bijekt} mit einer Tilde drüber, wie er
% für Bijektionen (bzw. Isomorphismen) verwendet wird.
%    \begin{macrocode}
  \DeclareRobustCommand*{\bijekt}
  { \tilde{\longrightarrow}\hspace{0.3em} }
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\surj}
%    \changes{v0.11}{2005/12/04}{Neu hinzugefügt (auch in aufgaben.cls vorhanden)}
%    Ein Pfeil\imdef{\surj} mit doppelter Spitze, wie er
%    für Surjektionen (bzw. Epimorphismen) verwendet wird.
%    \begin{macrocode}
  \DeclareRobustCommand*{\surj}
  { \twoheadrightarrow }
%    \end{macrocode}
%  \end{macro}
%  \begin{macro}{\inj}
%    \changes{v0.11}{2005/12/04}{Neu hinzugefügt (auch in aufgaben.cls vorhanden)}
%    Ein Pfeil\imdef{\inj} mit einem Haken am Ende, wie er
%    für Injektionen (bzw. Monomorphismen) verwendet wird.
%    \begin{macrocode}
  \DeclareRobustCommand*{\inj}
  { \hookrightarrow }
%    \end{macrocode}
%  \end{macro}
% \begin{macro}{\gdw}
% \changes{v0.11}{2005/12/15}{Jetzt mit '\ensuremath', geht also auch im Textmodus.}
%  Das ist ein\imdef{\gdw} "`genau-dann-wenn"'-Pfeil.
%  Der Name '\gdw' ist einfach schneller zu schreiben
%  und ein Leser des Quelltextes weiß gleich die Bedeutung.
%    \begin{macrocode}
  \DeclareRobustCommand*{\gdw}
  {\ensuremath{\Leftrightarrow}\xspace}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\folgt}
% \changes{v0.10}{2005/11/29}{Neu aus aufgaben.cls kopiert (und angepasst)}
% \begin{macro}{\folgtx}
% \changes{v0.10}{2005/11/29}{Neu aus aufgaben.cls kopiert (und angepasst)}
%  Das ist ein Pfeil für Folgerungen -- '\folgt' \imdef{\folgt} \imdef{\folgtx}
% kann im Text- oder im Mathe-Modus verwendet werden. Für die 'align'-Umgebung
% ist '\folgtx' geeignet (am Anfang einer Zeile), dahinter wird viel Platz gelassen.
%    \begin{macrocode}
\newcommand{\folgt}{\ensuremath{\Rightarrow}}
\newcommand{\folgtx}{\Rightarrow\quad}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsection{Bekannte Zahlenmengen}
%    \changes{v0.11}{2005/12/12}{Diverse Symbol-Kommandos sind jetzt robust, damit sie die Index-Erstellung überleben.}
%
% \begin{macro}{\C}
%  Die Menge\imdef{\C} der komplexen Zahlen.
%    \begin{macrocode}
  \DeclareRobustCommand*{\C}{ \mathbb{C} }
%    \end{macrocode}
% \end{macro}

%  \begin{macro}{\R} Die Menge\imdef{\R} der reellen Zahlen.
%    \begin{macrocode}
  \DeclareRobustCommand*{\R}{\mathbb{R}}
%    \end{macrocode}\end{macro}

%  \begin{macro}{\N} Die Menge\imdef{\N} der natürlichen Zahlen (ohne $0$).
%    \begin{macrocode}
  \DeclareRobustCommand*{\N}{\mathbb{N}}
%    \end{macrocode}\end{macro}
%  \begin{macro}{\No} Die Menge\imdef{\No} der natürlichen Zahlen (mit $0$).
%    Dieses Symbol kann auch im Textmodus benutzt werden.
%    \begin{macrocode}
  \DeclareRobustCommand*{\No} { \ensuremath{\N_0} }
%    \end{macrocode}\end{macro}
%  \begin{macro}{\Q} Die Menge\imdef{\Q} der rationalen Zahlen.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Q} { \mathbb{Q} }
%    \end{macrocode}\end{macro}
%  \begin{macro}{\Z} Die Menge\imdef{\Z} der ganzen Zahlen.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Z}{\mathbb{Z}}
%    \end{macrocode}\end{macro}
%
% \subsection{Weitere Mengen}
%
% \begin{macro}{\Aff} Der affine Raum bestimmter Dimension zu einem Körper
% '\Aff_k^n' \imdef{\Aff_n^k} wird mit '\Aff' gebildet.
%    \begin{macrocode}
\DeclareRobustCommand*{\Aff}{\mathbb{A}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Pot} Die Potenzmenge \imdef{\Pot} einer Menge.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Pot} { \mathfrak{P} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Perm}
% Die Menge aller Permutationen \imdef{\Perm} einer Menge.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Perm} { \mathfrak{S} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Pol} Polynommengen.
%  Als Beispiel: '$\Pol_n^\Z$' wird zu $\Pol_n^\Z$ (die
%  Menge aller Polynome mit ganzzahligen Koeffizienten
%  und Grad $n$).
%    \begin{macrocode}
  \DeclareRobustCommand*{\Pol} { \mathcal{P} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\CF}
% Die Menge der Cauchy-Folgen \imdef{\CF} in
% einem normierten Raum
%    \begin{macrocode}
  \DeclareRobustCommand*{\CF} { \mathfrak{C} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\NF}
% Die Menge der Nullfolgen \imdef{\NF} in einem normierten Raum.
%    \begin{macrocode}
  \DeclareRobustCommand*{\NF} { \mathfrak{N} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Proj}
%   Projektive reelle Gerade -- '\Proj{1}'\imdef{\Proj1} --
%   oder Ebene  -- '\Proj{2}'\imdef{\Proj2}.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Proj}[1]{\mathbb{P}_\R^#1}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Zul}
%  Menge der $f$-zulässigen Teilmengen des Definitionsbereiches von $f$:
%  '\Zul{f}'\imdef{\Zul{f}}.
%  (Siehe Beweis vom Fixpunktlemma von Bourbaki.)
%    \begin{macrocode}
  \DeclareRobustCommand*{\Zul}[1]{\mathfrak{Z}_{#1}}
%    \end{macrocode}
% \end{macro}
%
% \subsection{Klammern \& Co.}
% Diese Makros nehmen alle ein Argument,
% welches dann irgendwie in die Ausgabe eingebaut wird.
% Die Größe passt sich dabei an, wenn nötig.
%
% \begin{macro}{\erzUG}
% Die von einem Element $a$ \imdef{\erzUG{a}} oder einer Menge $S$ \imdef{\erzUG{S}}
% in einer Gruppe erzeugte Untergruppe '\erzUG{a}' bzw '\erzUG{S}'.
%    \begin{macrocode}
  \DeclareRobustCommand*{\erzUG}[1]
     {\left\langle #1 \right\rangle}
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\konj}
%   Die zu einer komplexen Zahl $x$\imdef{\konj{x}}
%   konjugiert komplexe Zahl '\konj{x}'.
%    \begin{macrocode}
  \DeclareRobustCommand*{\konj}[1] { \overline{#1} }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\abs}
%   Der absolute Betrag\imdef{\abs{x}} einer (reellen oder
% komplexen) Zahl $x$ ist '\abs{x}'.
%    \begin{macrocode}
  \DeclareRobustCommand*{\abs}[1] { \left\lvert #1 \right\rvert }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\klamm}
%   Einfach nur runde Klammern\imdef{\klamm{x}} um einen Term
%   $x$: '\klamm{x}'
%    \begin{macrocode}
  \DeclareRobustCommand*{\klamm}[1] { \left( #1 \right) }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\menge}
%   Für Mengen\imdef{\menge{1}} brauchen wir entsprechend Mengenklammern: '\menge{1}'.
%   Etwas aufwendiger: '$\menge{x \in N \mid x > 2}$'
%   wird zu $\menge{x \in N \mid x > 2}$.
%    \begin{macrocode}
  \DeclareRobustCommand*{\menge}[1]{\left\{ #1 \right\} }
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\einsbis}
%   \changes{v0.12}{2006/02/18}{Neu}
%   Häufig benötigter Spezialfall: \imdef{\einsbis{n}} '\einsbis{n}'.
%    \begin{macrocode}
\newcommand*{\einsbis}[1]{\menge{1, \dots, #1}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\menget}
%   \changes{v0.11}{2006/01/31}{Neu aus 'aufgaben.cls' kopiert.}
%   Falls in den Mengenklammern nur einfacher Text stehen soll
%   (also nichts mathematisches), ist '\menget' geeignet.
%    \begin{macrocode}
\newcommand*{\menget}[1]{\menge{\text{#1}}}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\rightmid}
% \begin{macro}{\leftmid}
% \begin{macro}{\mengemid}
% \changes{v0.11}{2005/12/14}{Neu}
% '\rightmid' malt einen senkrechten Strich in ausreichender Höhe rechts neben das Argument,
% '\leftmid' links daneben. '\mengemid' zeigt zwei Argumente in einer (ausreichend großen)
% Mengenklammer sowie einen ausreichend großen senkrechten Strich dazwischen.
%    \begin{macrocode}
  \DeclareRobustCommand*{\rightmid}[1]{\left. #1 \,\right| }
  \DeclareRobustCommand*{\leftmid}[1]{\left|\, #1 \right. }
  \DeclareRobustCommand*{\mengemid}[2]{%
     \menge{ \left. #1 \vphantom{#2} \,\right| #2}
  }
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\eckKl}
%  Für verschiedene Zwecke\imdef{\eckKl{x}} (etwa das größte Ganze einer reellen Zahl,
%  oder eine Äquivalenzklasse einer Ä-Relation) werden eckige Klammern
%  benötigt: '\eckKl{x}'.
%    \begin{macrocode}
  \DeclareRobustCommand*{\eckKl}[1]{\left[ #1 \right] }
%    \end{macrocode}
% \end{macro}
%
%  \subsection{Operatoren mit Namen}
%
% Einige Operatoren, bei denen üblicherweise der Name
% hingeschrieben wird, für die Verwendung im mathematischen
% Modus. Diese Namen werden so nicht wie üblich in Schräg-Schrift,
% sondern in Roman angezeigt. Bei der Verwendung
% kommen oft noch Indizees und/oder Klammern mit
% "`Parametern"' dazu.
%
% Für die Mathematische Bedeutung bitte ich im Skript
% nachzulesen, die kurzen Bemerkungen und der Index
% sollten ausreichen, die Stelle zu finden.
%
% \begin{macro}{\Kor}
% Menge der Korrespondenzen/Korrelationen
%    \begin{macrocode}
  \DeclareMathOperator{\Kor}{Kor}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Abb}
% Menge der Abbildungen
%    \begin{macrocode}
  \DeclareMathOperator{\Abb}{Abb}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\incl}
% Inklusionsabbildung
%    \begin{macrocode}
  \DeclareMathOperator{\incl}{incl}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\const}
% Konstante Abbildung
%    \begin{macrocode}
  \DeclareMathOperator{\const}{const}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Inj}
% Menge der Injektionen
%    \begin{macrocode}
  \DeclareMathOperator{\Inj}{Inj}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Surj}
% Menge der Surjektionen
%    \begin{macrocode}
  \DeclareMathOperator{\Surj}{Surj}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Bij}
% Menge der Bijektionen
%    \begin{macrocode}
  \DeclareMathOperator{\Bij}{Bij}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Trans}
% Menge der transzendenten Zahlen
%    \begin{macrocode}
  \DeclareMathOperator{\Trans}{Trans}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Alg}
% Menge der algebraischen Zahlen.
%    \begin{macrocode}
  \DeclareMathOperator{\Alg}{Alg}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Spec}
% Primspektrum eines Ringes
%    \begin{macrocode}
  \DeclareMathOperator{\Spec}{Spec}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Specm}
% \changes{v0.11}{2006/02/04}{Neu dazu}
% Maximalspektrum eines Ringes
%    \begin{macrocode}
  \DeclareMathOperator{\Specm}{Specm}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Ext}
% Menge der Extremalpunkte. (Siehe Beweis zum Fixpunktlemma von Bourbaki.)
%    \begin{macrocode}
  \DeclareMathOperator{\Ext}{Ext}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Mod}
% Die Menge der Modul-Strukturen auf einer Gruppe (über einem Ring)
%    \begin{macrocode}
  \DeclareMathOperator{\Mod}{Mod}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Hom}
% Menge von Homomorphismen (einer Gruppe, eines Ringes, eines Vektorraumes, etc.)
%    \begin{macrocode}
  \DeclareMathOperator{\Hom}{Hom}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\End}
%  Menge von Endomorphismen einer algebraischen Struktur.
%    \begin{macrocode}
  \DeclareMathOperator{\End}{End}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Fix}
%   Menge der Fixpunkte.
%    \begin{macrocode}
  \DeclareMathOperator{\Fix}{Fix}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\Transl}
%   Menge von Translationen.
%    \begin{macrocode}
  \DeclareMathOperator{\Transl}{Transl}
%    \end{macrocode}
% \end{macro}
%
%
%
% \subsection{Weitere Symbole}
%  (Doku fehlt noch.)
%    \begin{macrocode}
\DeclareRobustCommand*{\ohne}{\setminus}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareRobustCommand*{\oo}{\infty}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareRobustCommand*{\leer}{\varnothing}
%    \end{macrocode}
% \begin{macro}{\kringel}
%  \changes{v0.11}{2006/01/31}{Neu aus 'aufgaben.cls' kopiert.}
%   Die Verkettung zweier Funktionen \xmdef{f \kringel g}\idef{\kringel} wird
%   "`eff Kringel geh"' ausgesprochen, also wollen wir sie auch
%   'f \kringel g' schreiben können.
%    \begin{macrocode}
\DeclareRobustCommand*{\kringel}{\circ}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\disjU}
% Die Vereinigung zweier disjunkter\imdef{\disjU} Mengen: $A \disjU B$.
% \changes{v0.11}{2006/01/25}{Jetzt als \cmd{\mathop}, daher mit richtigem Abständen.}
% ^^A \show\mathop{}
%    \begin{macrocode}
\DeclareRobustCommand*{\disjU}{\mathop{\dot\cup}}
%    \end{macrocode}
% \end{macro}
%
% \section{Hilfsmittel für Definitionen}
%   In einer Vorlesung werden regelmäßig neue Begriffe
%   und Symbole definiert. Dafür habe ich ein paar
%   zusätzliche Befehle entwickelt.
%
% \begin{macro}{\mdef}
%   '\mdef{x}' zeigt ein Symbol am Rand (engl. "`margin"') einem Kästchen an.
%   Dabei wird (durch das verwendete '\boxed') automatisch
%   in den mathematischen Modus gewechselt.
%   Das ganze wird jeweils zur Seite hin geschoben (am linken Rand nach
%   rechts, am rechten Rand nach links), damit nicht so eine große Lücke
%   vorhanden ist.
%    \begin{macrocode}
  \newcommand*{\mdef}[1]
  { \marginpar[\hfill\boxed{#1}]{\boxed{#1}\hfill} }
%    \end{macrocode}
% Demonstrationen davon waren auf den vorhergehenden
% Seiten zu sehen.
% \end{macro}
%
% \begin{macro}{\defx{}}
%   '\defx' sollte eigentlich '\xdef' heißen, aber das war schon
%   für irgend etwas anderes vergeben. Der Befehl wechselt einfach
%   nur in den mathematischen Modus (oder bleibt da) und gibt
%   das Argument aus. Der Befehl ist nur aus Vollständigkeitsgründen
%   (siehe die Benenung der folgenden Befehle) vorhanden.
%    \begin{macrocode}
  \newcommand*{\defx}[1] {\ensuremath{ #1 }}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\idef}
%  '\idef' nimmt sein Argument in den Index auf.
%  Die Symbole tauchen dort ganz am Anfang auf, ziemlich
%  willkürlich geordnet.
%    \begin{macrocode}
  \newcommand*{\idef}[1]{\index{ @$#1$}}
%    \end{macrocode}
% \end{macro}
%
% Die nächsten Befehle sind einfach nur Kombinationen
% dieser drei Befehle.
%
% \begin{macro}{\xmdef}
% '\xmdef' zeigt das Symbol an der aktuellen Stelle und am Rand.
%    \begin{macrocode}
  \newcommand*{\xmdef}[1] {\defx{#1}\mdef{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ximdef}
% \changes{v0.10}{2005/11/29}{Überflüssige Leerzeichen in der Definition
%                             (und damit in der Ausgabe) entfernt.}
%   Hiermit wird ein Symbol an der aktuellen Stelle, am Rand
%   und im Index gezeigt.
%    \begin{macrocode}
  \newcommand*{\ximdef}[1]
  {%
     \defx{#1}%
     \mdef{#1}%
     \idef{#1}%
  }
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\imdef}
%   '\imdef' zeigt das Symbol im Index und am Rand.
%    \begin{macrocode}
  \newcommand*{\imdef}[1]{\idef{#1}\mdef{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\xidef}
%   Was fehlt noch? -- Richtig, dieser Befehl zeigt das Symbol
%   hier und im Index.
%    \begin{macrocode}
  \newcommand*{\xidef}[1]{\defx{#1}\idef{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\defi} \oarg{indextext}\marg{text}
%   \changes{v0.11}{2006/02/04}{Jetzt mit optionalem Argument, daher \cs{defin} überflüssig.}
%   Wir geben zunächst \meta{text} fettgedruckt aus.
%    \begin{macrocode}
  \newcommand*{\defi}[2][\empty]%
  {%
    \textbf{#2}%
%    \end{macrocode}
%   Danach überprüfen wir, ob \meta{indextext} angegeben wurde.
%   Falls ja, nehmen wir diesen in den Index auf, sonst \meta{text}.
%    \begin{macrocode}
    \ifx#1\empty%
       \index{#2}%
    \else%
       \index{#1}%
    \fi%
  }
%    \end{macrocode}
% \end{macro}
% 
% \begin{macro}{\defin}
%  \changes{v0.10}{2005/11/29}{Neu hinzugekommen}
%  \changes{v0.11}{2006/02/04}{Jetzt überflüssig (da \cs{defi} jetzt einen
%      optionalen Parameter hat).}
%  Eine leichte Abwandlung davon ist '\defin', welches den ersten Parameter
%  fett druckt und den zweiten in den Index aufnimmt.
%
% Inzwischen ist dieser Befehl überflüssig, weil '\defi' einen optionalen
% Parameter versteht -- entsprechend verwendet die Definition von '\defin'
% auch '\defi'.
%    \begin{macrocode}
  \newcommand*{\defin}[2]{%\textbf{#1}\index{#2}
      \defi[#2]{#1}%
}
%    \end{macrocode}
% \end{macro}
%
% \section{Textbausteine}
%  Für einige häufig verwendete Texte habe ich mir Bausteine
%  definiert.
%
% \begin{macro}{\ubung}
%   Verweise auf Übungsaufgaben werden (z.B.) per
%   '\ubung{2}{3}' erledigt, das Ergebnis ist
%   \begin{quote}
%      \ubung{2}{3}
%   \end{quote}
%    \begin{macrocode}
  \newcommand*{\ubung}[2]{Übungsaufgabe #2 in Serie #1}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DsfBa}
%   Während Herr Kleinert an der Tafel nur "`D.s.f.B.ä."' anschrieb,
%   gönnen wir uns hier den Luxus, das auszuschreiben: '\DsfBa'
%   ergibt "`\DsfBa{}"'.
%    \begin{macrocode}
  \newcommand*{\DsfBa}
  {Dann sind folgende Bedingungen äquivalent:\xspace}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\dsfBa}
%   Wir haben auch eine Variante, falls die Klausel mitten im Satz vorkommt:
%   \dsfBa
%    \begin{macrocode}
  \newcommand*{\dsfBa}
  {dann sind folgende Bedingungen äquivalent:\xspace}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\oBdA}
%   Ein (besonders in Beweisen) häufig verwendeter Begriff ist
%   '\oBdA', also \oBdA.
%    \begin{macrocode}
  \newcommand*{\oBdA}{ohne Beschränkung der Allgemeinheit\xspace}
%    \end{macrocode}
% \end{macro}
% \begin{macro}{\OBdA}
%   Falls das am Satzanfang vorkommt, muss es natürlich
%   großgeschrieben werden.
%    \begin{macrocode}
  \newcommand*{\OBdA}{Ohne Beschränkung der Allgemeinheit\xspace}
%    \end{macrocode}
% \end{macro}
%
% \section{Vermischtes}
%
% \begin{macro}{\Vek}
%   \changes{v0.11}{2005/12/12}{jetzt robust.}
% \begin{macro}{\ideal}
%   \changes{v0.11}{2006/01/10}{neu}
%   Vektoren und Vektorräume werden bei Herrn Kleinert
%   immer in altdeutscher Schrift geschrieben. Daher
%   hier z.B. '\Vek V'\imdef{\Vek V} für einen Vektorraum.
%   Die gleiche Formatierung gilt für Ideale\imdef{\ideal a}
%   in Ringen.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Vek}[1]{\mathfrak{#1}}
  \DeclareRobustCommand*{\ideal}[1]{\mathfrak{#1}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\thesection}
%   '\thesection'\  wird von diversen Befehlen für die
%   Ausgabe der Nummerierung der Abschnitte benutzt.
%   Wir wollen hier die Kapitelnummer mit ausgeben,
%   deswegen definieren wir diesen Befehl hier neu.
%    \begin{macrocode}
  \renewcommand{\thesection} {\thechapter.\arabic{section}}
%    \end{macrocode}
% \end{macro}
%
% Da die standardmäßige Silbentrennung von \LaTeX{} bei einigen
% Wörtern versagt, hier die Abhilfe:
%    \begin{macrocode}
  \hyphenation{Schroe-der}
%    \end{macrocode}
%
% \begin{macro}{\tild}
%  \changes{v0.12}{2006/02/21}{Jetzt mit \cs{xspace},
%      damit bei Bedarf ein Leerzeichen gelassen wird.}
%   Um auch im Textmodus bequem eine Tilde verwenden zu können,
%   wechseln wir einfach in den mathematischen Modus und
%   nehmen da das passende Symbol.
%    \begin{macrocode}
  \DeclareRobustCommand*{\tild}{$\sim$\xspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Aussage} 
%  Dieses Makro wird in Kapitel 0 bei den logischen Symbolen
%  verwendet.\footnote{Auch dieses Makro wird nur an
%     einer Stelle verwendet und ist damit ein Abschusskandidat.}
%   Es wird in spizen Klammern und schräggedruckt
%  das Wort "`Aussage"' und dann das Argument (1 oder 2) gedruckt.
%  Beispiel: '$\Aussage{1}$' wird zu $\Aussage{1}$.
%    \begin{macrocode}
  \DeclareRobustCommand*{\Aussage}[1]
       {\erzUG{\text{\textsl{Aussage#1}}}}
%    \end{macrocode}
% \end{macro}
%
%  Beim Setzen der Wörter soll lieber etwas mehr Luft gelassen
%  werden, als dass die Wörter über den Rand ragen (und \TeX{} sich
%  dann beschwert).
%    \begin{macrocode}
  \sloppy
%    \end{macrocode}
%  Die einzelnen Seiten sollen lieber mit unterschiedlich hohen
%  unteren Enden des Textes ausgestattet werden, als die Lücken
%  dazwischen zu dehnen.
%    \begin{macrocode}
  \raggedbottom
%    \end{macrocode}
% Wir wollen einen Index aller Symbole, definierten Wörter, etc.
% anlegen.
%    \begin{macrocode}
  \makeindex
%    \end{macrocode}
%
% \changes{v0.06}{2002/07/23}{Fertig ...}
% \section{Der Schluss}
%  Am Ende sagen wir \TeX, dass die Eingabe-Datei
%  zu Ende ist.
%    \begin{macrocode}
\endinput
%</class>
%    \end{macrocode}
%  Damit ist dann unsere Klasse zu Ende.
%
%\Finale
%\endinput


%%% Folgendes ist nur für meinen Editor.
%%%
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
