% \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 % % \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} % % \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} % % \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}[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}[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}{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}{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 % % \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}} % % \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}} % % \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 } % % \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 } % % \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$} % % \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} }{} % % \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} % % \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 % % \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