summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bgteubner/source/bgteucls.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/bgteubner/source/bgteucls.dtx')
-rw-r--r--macros/latex/contrib/bgteubner/source/bgteucls.dtx7004
1 files changed, 7004 insertions, 0 deletions
diff --git a/macros/latex/contrib/bgteubner/source/bgteucls.dtx b/macros/latex/contrib/bgteubner/source/bgteucls.dtx
new file mode 100644
index 0000000000..eb4e28defb
--- /dev/null
+++ b/macros/latex/contrib/bgteubner/source/bgteucls.dtx
@@ -0,0 +1,7004 @@
+% \iffalse meta comment
+%
+% bgteubner class bundle
+%
+% bgteucls.dtx
+% Copyright 2003--2015 Harald Harders
+%
+% This program may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your opinion) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% Additional conditions to the license:
+%
+% If you modify a renamed copy of the files `bgteubner.cls' or
+% `bgteucls.dtx', you have to preserve some information in the
+% PDF /Creator entry. The following data have to remain:
+% - The name `bgteubner.cls',
+% - a hint that this class has been developed for the `Springer
+% Vieweg Verlag, Wiesbaden, Germany (now Springer Vieweg Verlag)'.
+%
+% This program consists of all files listed in manifest.txt.
+%
+% \section{Gemeinsame Daten}
+%
+% \begin{macrocode}
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<class>\ProvidesClass{bgteubner}
+%<version>\ProvidesFile{bgteuversion.tex}
+%<cdcover>\ProvidesFile{cdcover.tex}
+%<driver>\ProvidesFile{bgteucls.dtx}
+%<class|version|cdcover|driver> [2015/05/17 v2.11 Springer Vieweg Verlag]
+% \end{macrocode}
+%
+%<*driver>
+\documentclass[english,ngerman,a4paper]{ltxdoc}
+\usepackage{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{numprint}
+\usepackage[num]{isodate}
+\usepackage{longtable}
+\newlength{\tempdima}%
+\makeatletter
+\renewenvironment{table}[1][]{%
+ \@float{table}[#1]%
+ \centering%
+ \setlength{\tempdima}{\abovecaptionskip}%
+ \setlength{\abovecaptionskip}{\belowcaptionskip}%
+ \setlength{\belowcaptionskip}{\tempdima}%
+ }{%
+\end@float
+}
+\makeatother
+\EnableCrossrefs
+\CodelineIndex
+\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
+\DoNotIndex{\@badmath,\@centercr,\@cite}
+\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+\DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
+\DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint}
+\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+\DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet,\MessageBreak}
+\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+\DoNotIndex{\fbox,\csname,\endcsname,\def,\edef,\empty,\ ,\@tempa}
+\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
+\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
+\DoNotIndex{\input,\@tempb,\n}
+\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
+\DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength}
+\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+\DoNotIndex{\wd,\xiipt,\year,\z@}
+\DoNotIndex{\string,\",\def,\newcommand,\renewcommand,\DeclareRobustCommand}
+\DoNotIndex{\DeclareMathOperator,\multiput,\put,\value,\thispagestyle}
+\DoNotIndex{\tiny,\footnotesize,\small,\normalfont,\large,\Large,\LARGE}
+\DoNotIndex{\huge,\Huge,\RequirePackageWithOptions,\write}
+\DoNotIndex{\textheight,\textwidth}
+\CodelineNumbered
+\RecordChanges
+\CheckSum{4924}
+\input{bgteuversion}
+\GetFileInfo{bgteuversion.tex}
+\begin{document}
+ \title{Die \texttt{bgteubner}"=Dokumentklasse\thanks{Diese Datei hat die
+ Versionsnummer \fileversion\ mit der letzten Änderung am
+ \filedate.}}
+ \author{Harald Harders\\\texttt{harald.harders@gmx.de}}
+ \date{Dateidatum \filedate, übersetzt am \today}
+ \DocInput{bgteucls.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \maketitle
+% \begin{abstract}
+% \noindent
+% Diese Dokumentklasse bietet die notwendige Umgebung für Bücher des
+% Springer Vieweg Verlags (vormals Vieweg+Teubner Verlags bzw. B.\,G.\
+% Teubner Verlag).
+% Ihre Verwendung wird in einem gesonderten Dokument, das unter den
+% Namen \verb|bgteubner.pdf| bzw.\
+% \verb|bgteubner-cm.pdf| verfügbar ist, beschrieben.
+% Hier wird nur die Implementierung erläutert.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section*{Copyright (in der englischen Originalformulierung)}
+%
+% Copyright 2003--2015 Harald Harders.
+%
+% This program may be distributed and/or modified under the
+% conditions of the \LaTeX\ Project Public License, either version~1.3
+% of this license or (at your opinion) any later version.
+% The latest version of this license is in
+% \begin{verbatim}
+%http://www.latex-project.org/lppl.txt\end{verbatim}
+% and version~1.3 or later is part of all distributions of \LaTeX\
+% version 1999/12/01 or later.
+%
+% Additional conditions to the license:
+%
+% If you modify a renamed copy of the files ``|bgteubner.cls|'' or
+% ``|bgteucls.dtx|'', you have to preserve some information in the
+% PDF |/Creator| entry. The following data have to remain:
+% \begin{itemize}
+% \item The name ``|bgteubner.cls|'',
+% \item a hint that this class has been developed for the ``Springer
+% Vieweg Verlag, Wiesbaden, Germany''.
+% \end{itemize}
+%
+% This program consists of all files listed in |manifest.txt|.
+%
+% \StopEventually{\PrintChanges \PrintIndex}
+%
+% \changes{2.11}{2015/05/17}{Make sure that \LaTeX\ also compiles if
+% recent changes in scrbook are present.}%
+% \changes{2.10}{2015/05/15}{Adapt class to support hyperref and imakeidx}%
+% \changes{2.10}{2015/05/15}{Fix PDF string issue if hyperref is loaded}%
+% \changes{2.10}{2015/05/15}{Adapt class to current scrbook version}%
+% \changes{2.10}{2015/05/15}{Fix bug in title page which made footnotes to
+% disappear}%
+% \changes{2.02}{2012/04/07}{Use autolanguage feature of numprint.sty}%
+% \changes{2.02}{2012/04/07}{Adapted to Springer Vieweg Verlag}%
+% \changes{2.01}{2011/12/29}{Added macro \cs{emphindex} for important index
+% entryies}%
+% \changes{2.00}{2008/05/04}{Adapted to Vieweg+Teubner Verlag}%
+% \changes{1.40}{2008/04/27}{Adapted \cs{signature} for multiline texts}%
+% \changes{1.39}{2008/04/15}{Indentation after the preface title fixed}%
+% \changes{1.38}{2006/04/20}{Bug in Bib\TeX\ styles
+% (format.crossref.editor) fixed}%
+% \changes{1.37}{2005/10/31}{Typeset abbreviated forenames with small
+% space between them}%
+% \changes{1.37}{2005/10/31}{Add new BiB\TeX\ style with abbreviated
+% forenames and long keywords}%
+% \changes{1.36}{2005/10/28}{Fix bug using crossref with books in
+% biliography}%
+% \changes{1.36}{2005/10/28}{Fix sorting problem in the biliography}%
+% \changes{1.36}{2005/10/28}{Introduce \cs{btxlastname} for formatting
+% lastnames}%
+% \changes{1.35}{2005/04/16}{Allow to number \cs{paragraph} and
+% \cs{subparagraph}}%
+% \changes{1.33}{2004/11/19}{Avoiod to use the \texttt{calc} package
+% since it causes problems with many other packages}%
+% \changes{1.14}{2003/12/17}{Avoid usage of \cs{bgteubnerfileversion}
+% and \cs{bgteubnerfiledate}}%
+% \changes{1.10}{2003/10/30}{Einige Meldungen in englisch}%
+% \changes{1.10}{2003/10/30}{Alle eingerückten Umgebungen mit
+% geringerem Einzug}%
+%
+% \section{Bekannte Probleme}
+%
+% \begin{itemize}
+% \item Vertikal spacings in |important|, |important*|,
+% |longimportant|, and |longimportant*| environments is not
+% optimal. When using environments as |align|, |example|,
+% |subexercise| at the begin or end of the environment, unwanted,
+% additional space is added. I don't know how to solve this
+% problem.
+% \end{itemize}
+%
+% \section{Dateikopf}
+%
+% \begin{macrocode}
+%<*class>
+\typeout{^^J^^JDokumentklasse zum Erstellen von Buechern fuer den
+ Springer Vieweg Verlag, Wiesbaden}%
+\typeout{(vormals Vieweg+Teubner Verlag, B. G. Teubner Verlag).}%
+\typeout{Erstellt im Auftrag des B. G. Teubner Verlags von}%
+\typeout{Harald Harders (harald.harders@gmx.de).^^J}%
+\typeout{Beachten Sie die Dokumentation in den unterschiedlichen
+ Versionen:}%
+\typeout{\space\space bgteubner.pdf (Times, 17cm x 24cm)}%
+\typeout{\space\space
+ bgteubner-cm.pdf (European Computer Modern, 17cm x 24cm).}%
+\typeout{^^JDocument class to produce books for the Springer Vieweg
+ Verlag, Wiesbaden, Germany}%
+\typeout{(formerly Vieweg+Teubner Verlag, B. G. Teubner Verlag).}%
+\typeout{Made by Harald Harders (harald.harders@gmx.de).}%
+\typeout{Documentation is available in German only.^^J^^J}%
+% \end{macrocode}
+%
+% \section{Fehler statt Warnung bei alten Paketen}
+%
+% Weil fast alle Nutzer Warnungen nicht beachten, soll bei alten
+% Paketen ein Fehler statt einer Warnung ausgegeben werden.
+% Diese Warnung wird im Befehl \cs{@onefilewithoptions} erzeugt.
+% Bei Paketen, die der Autor selbst lädt, soll wieder nur eine Warnung
+% erzeugt werden.
+%
+% \begin{macro}{\@onefilewithoptions}
+% Den Originalbefehl sichern und am Ende der Klasse wieder
+% restaurieren.
+% \begin{macrocode}
+\newcommand\hhcls@onefilewithoptions{}
+\let\hhcls@onefilewithoptions\@onefilewithoptions
+\AtEndOfClass{\let\@onefilewithoptions\hhcls@onefilewithoptions}
+% \end{macrocode}
+% Die Definition von \cs{@onefilewithoptions} aus |latex.ltx|, nur mit
+% einem Fehler statt einer Warnung.
+% \begin{macrocode}
+\def\@onefilewithoptions#1[#2][#3]#4{%
+ \@pushfilename
+ \xdef\@currname{#1}%
+ \global\let\@currext#4%
+ \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
+ \let\CurrentOption\@empty
+ \@reset@ptions
+ \makeatletter
+ \def\reserved@a{%
+ \@ifl@aded\@currext{#1}%
+ {\@if@ptions\@currext{#1}{#2}{}%
+ {\@latex@error
+ {Option clash for \@cls@pkg\space #1}%
+ {The package #1 has already been loaded
+ with options:\MessageBreak
+ \space\space[\@ptionlist{#1.\@currext}]\MessageBreak
+ There has now been an attempt to load it
+ with options\MessageBreak
+ \space\space[#2]\MessageBreak
+ Adding the global options:\MessageBreak
+ \space\space
+ \@ptionlist{#1.\@currext},#2\MessageBreak
+ to your \noexpand\documentclass declaration may fix this.%
+ \MessageBreak
+ Try typing \space <return> \space to proceed.}}}%
+ {\@pass@ptions\@currext{#2}{#1}%
+ \global\expandafter
+ \let\csname ver@\@currname.\@currext\endcsname\@empty
+ \InputIfFileExists
+ {\@currname.\@currext}%
+ {}%
+ {\@missingfileerror\@currname\@currext}%
+ \let\@unprocessedoptions\@@unprocessedoptions
+ \csname\@currname.\@currext-h@@k\endcsname
+ \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
+ \@undefined
+ \@unprocessedoptions}
+ \@ifl@ter\@currext{#1}{#3}{}%
+ {\@latex@error
+ {You have requested,\on@line,
+ version\MessageBreak
+ `#3' of \@cls@pkg\space #1,\MessageBreak
+ but only version\MessageBreak
+ `\csname ver@#1.\@currext\endcsname'\MessageBreak
+ is available}{%
+ The bgteubner class is more restrictive with old packages than^^J%
+ standard LaTeX. Please update the specified package. New^^J%
+ packages may be downloaded from CTAN, e.g., ftp://ftp.dante.de.}}%
+ \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
+ \@popfilename
+ \@reset@ptions}%
+ \reserved@a}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Global festgelegte Klassenoptionen}
+%
+% Weiterreichen der notwendigen Optionen an die Dokumentklasse
+% |scrbook|, die als Basis für die |bgteubner|"=Klasse dient.
+%
+% Einstellen der Größen für Kapitel"= und Abschnittsüberschriften:
+% \begin{macrocode}
+\PassOptionsToClass{headings=small}{scrbook}
+% \end{macrocode}
+% Literaturverzeichnis, Stichwortverzeichnis, Abbildungs"= und
+% Tabellenverzeichnis erscheinen im Inhaltsverzeichnis:
+% \begin{macrocode}
+\PassOptionsToClass{bibliography=totoc,index=totoc,listof=totoc}{scrbook}
+% \end{macrocode}
+% Formeln linksbündig mit Einzug:
+% \begin{macrocode}
+\PassOptionsToClass{fleqn}{scrbook}
+\PassOptionsToPackage{fleqn}{amsmath}
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{Integralgrenzen ober- und unterhalb des
+% Symbols}%
+% Grenzen an Integralen in abgesetzten Formeln ober- und unterhalb des
+% Symbols.
+% \begin{macrocode}
+\PassOptionsToPackage{intlimits}{amsmath}
+% \end{macrocode}
+% Kapitel"= und Abschnittsnummern ohne Punkt am Ende:
+% \begin{macrocode}
+\PassOptionsToClass{numbers=noenddot}{scrbook}
+% \end{macrocode}
+% Leere Seiten sollen ganz leer sein, auch keine Seitenzahl:
+% \begin{macrocode}
+\PassOptionsToClass{cleardoublepage=empty}{scrbook}
+% \end{macrocode}
+% Keine Linie unter dem Kolumnentitel:
+% \begin{macrocode}
+\PassOptionsToClass{headsepline=false}{scrbook}
+% \end{macrocode}
+% Kein Präfix vor Kapitelnummern im Anhang:
+% \begin{macrocode}
+\PassOptionsToClass{appendixprefix=false}{scrbook}
+% \end{macrocode}
+% Tabellen erhalten Über"= anstatt Unterschriften:
+% \begin{macrocode}
+\PassOptionsToClass{captions=tableheading}{scrbook}
+% \end{macrocode}
+% Optionen an Typearea weiterreichen. Kolumnentitel ist in Satzspiegel
+% enthalten.
+% \begin{macrocode}
+\PassOptionsToPackage{pagesize,headinclude}{typearea}
+% \end{macrocode}
+%
+% \section{Optionale Parameter beim Aufruf der \texttt{bgteubner}"=Klasse}
+%
+% Definition von möglichen Optionen, die vom Benutzer angegeben werden
+% können.
+%
+% \subsection{Globale Einstellungen des Buchlayouts}
+%
+% Wahl der Seitengröße:
+% \begin{macrocode}
+\newif\ifhhcls@dinafuenf
+\DeclareOption{a5paper}{\hhcls@dinafuenftrue}
+\DeclareOption{a5}{\hhcls@dinafuenftrue}
+\DeclareOption{17x24paper}{\hhcls@dinafuenffalse}
+\DeclareOption{17x24}{\hhcls@dinafuenffalse}
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Allow Y\,\&\,Y MathTime to be used}%
+% Schriftfamilie wählen:
+% \begin{macrocode}
+\newif\ifhhcls@times
+\newif\ifhhcls@mathtime
+\DeclareOption{times}{\hhcls@timestrue}
+\DeclareOption{mathtime}{\hhcls@timestrue\hhcls@mathtimetrue}
+\DeclareOption{cm}{\hhcls@timesfalse}
+% \end{macrocode}
+% Kolumnentitel außen oder innen auf den Seiten?
+% \begin{macrocode}
+\newif\ifhhcls@headingoutside
+\DeclareOption{headingoutside}{\hhcls@headingoutsidetrue}
+\DeclareOption{headinginside}{\hhcls@headingoutsidefalse}
+% \end{macrocode}
+% Inhaltsverzeichnis einrücken?
+% \begin{macrocode}
+\newif\ifhhcls@tocindent
+\DeclareOption{tocindent}{\hhcls@tocindenttrue}
+\DeclareOption{tocleft}{\hhcls@tocindentfalse}
+% \end{macrocode}
+% Vektoren normal, fett oder unterstrichen?
+% \begin{macrocode}
+\DeclareOption{arrowvec}{\PassOptionsToPackage{arrow}{hhtensor}}
+\DeclareOption{boldvec}{\PassOptionsToPackage{bold}{hhtensor}}
+\DeclareOption{ulinevec}{\PassOptionsToPackage{uline}{hhtensor}}
+% \end{macrocode}
+% Soll es grau hinterlegte Boxen für wichtige Formeln geben?
+% \begin{macrocode}
+\newif\ifhhcls@greybox
+\DeclareOption{greybox}{\hhcls@greyboxtrue}
+\DeclareOption{graybox}{\hhcls@greyboxtrue}
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{Schriftgröße in theoremartigen Umgebungen
+% einstellbar}%
+% Schriftgröße in theoremartigen Umgebungen:
+% \begin{macrocode}
+\newif\ifhhcls@theoremsmall
+\DeclareOption{smalltheorem}{\hhcls@theoremsmalltrue}
+\DeclareOption{normaltheorem}{\hhcls@theoremsmallfalse}
+% \end{macrocode}
+%
+% \subsection{Entwurfsstadium}
+%
+% \changes{1.10}{2003/10/30}{Layoutraster entfernt}%
+% Angabe des Übersetzungsdatums in der Fußzeile und Markierung von
+% überfüllten Zeilen für Entwurfskontrollen:
+% \begin{macrocode}
+\newif\ifhhcls@entwurf
+\newif\ifhhcls@titlepage
+\DeclareOption{draft}{\hhcls@entwurftrue\hhcls@titlepagetrue}
+\DeclareOption{titlepage}{\hhcls@titlepagetrue}
+% \end{macrocode}
+% \changes{1.30}{2004/04/10}{Ignore class option `epsfigures'}%
+% The option |epsfigures| that enabled to include eps figures for dvi
+% output is not necessary anymore.
+% \begin{macrocode}
+%\newif\ifhhcls@epsfigures
+%\hhcls@epsfiguresfalse
+%\DeclareOption{epsfigures}{\hhcls@epsfigurestrue}
+\DeclareOption{epsfigures}{%
+ \ifpdf
+ \ClassWarning{bgteubner}{Class option `epsfigures' ignored
+ for pdf output}%
+ \else
+ \ClassWarning{bgteubner}{Class option `epsfigures' ignored for dvi
+ output. eps figures are now included without this option}%
+ \fi
+}
+% \end{macrocode}
+%
+% \subsection{Aufgaben und Lösungen}
+%
+% Fügt die Aufgaben, die mit der Umgebung |aufgabe| erzeugt wurden, in
+% das Inhaltsverzeichnis ein:
+% \begin{macrocode}
+\newif\if@exercisetotoc
+\DeclareOption{exercisetotoc}{\@exercisetotoctrue}
+% \end{macrocode}
+% Fügt die Aufgaben und Lösungen, die mit den Umgebungen |exercise|,
+% bzw.\ |answer| erzeugt wurden, in das Inhaltsverzeichnis ein:
+% \begin{macrocode}
+\newif\if@answertotoc
+\DeclareOption{answertotoc}{\@exercisetotoctrue\@answertotoctrue}
+% \end{macrocode}
+% Which publisher?
+% \begin{macrocode}
+\newcommand\hhcls@publisher{}
+\DeclareOption{springervieweg}{\def\hhcls@publisher{%
+ Springer Vieweg Verlag\quad Wiesbaden%
+}}
+\DeclareOption{viewegteubner}{\def\hhcls@publisher{%
+ Vieweg+Teubner\quad Stuttgart $\cdot$ Leipzig $\cdot$ Wiesbaden%
+}}
+\DeclareOption{bgteubner}{\def\hhcls@publisher{%
+ B.~G.\ Teubner\quad Stuttgart $\cdot$ Leipzig $\cdot$ Wiesbaden%
+}}
+% \end{macrocode}
+%
+% \subsection{Defaulteinstellungen und Ausführen der Klassenoptionen}
+%
+% Defaulteinstellungen:
+% \begin{macrocode}
+\ExecuteOptions{times,headingoutside,17x24,tocindent,%
+ normaltheorem,springervieweg}
+% \end{macrocode}
+% Optionen ausführen:
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+% Schriftgröße 10\,pt:
+% \begin{macrocode}
+\PassOptionsToClass{fontsize=10pt}{scrbook}
+% \end{macrocode}
+%
+% \section{Laden der Klasse und der Pakete}
+%
+% Die |scrbook|"=Klasse laden.
+% Es muss eine Version vom angegebenen Datum oder neuer sein, da
+% ältere Versionen noch nicht alle notwendigen Funktionen unterstützen.
+% \begin{macrocode}
+\LoadClass{scrbook}[2011/06/16]
+% \end{macrocode}
+% Warnung bei der Änderung der Schrift für die Kopf- und Fußzeile
+% ausschalten.
+% \begin{macrocode}
+\let\scr@fnt@wrn@pagehead=\@undefined
+\let\scr@fnt@wrn@pagefoot=\@undefined
+% \end{macrocode}
+% Bugs in \LaTeXe\ beheben:
+% \begin{macrocode}
+\RequirePackage{fixltx2e}[2000/09/24]
+% \end{macrocode}
+% Weitere Zeichen im Mathe"= und im Textmodus:
+% \begin{macrocode}
+\RequirePackage{wasysym}[2003/05/31]
+% \end{macrocode}
+% Die Integralzeichen von wasysym wieder löschen, damit
+% \verb|amsmath.sty| sie wieder vernünftig definieren kann.
+% This has to be done before the first call of the |amsmath| package since
+% it will be loaded only once.
+% \changes{1.34}{2005/01/07}{Remove \texttt{wasysym} integrals before
+% \texttt{amsmath} is loaded}%
+% \begin{macrocode}
+\let\iint=\@undefined
+\let\iiint=\@undefined
+\let\iiiint=\@undefined
+% \end{macrocode}
+% Erweiterte Mathematikbefehle:
+% \begin{macrocode}
+\RequirePackage{amsmath}[2000/07/18]
+\RequirePackage{amsfonts}[2001/10/25]
+\RequirePackage{amssymb}[2002/01/22]
+% \end{macrocode}
+% Pakete, die gutes Tabellenlayout erlauben:
+% \begin{macrocode}
+\RequirePackage{booktabs}[2003/03/28]
+\RequirePackage{array}[1998/05/13]
+\RequirePackage{longtable}[2000/10/22]
+% \end{macrocode}
+% T1"=Schriftkodierung. Führt zu besserer Silbentrennung und erlaubt
+% die Verwendung einiger zusätzlicher Schriftschnitte und "~größen.
+% \begin{macrocode}
+\RequirePackage[T1]{fontenc}[2001/06/05]
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Allow Y\,\&\,Y MathTime to be used}%
+% \changes{1.30}{2004/04/10}{Use bold instead of bold extended with Times}%
+% Times ist als Schrift gewählt:
+% \begin{macrocode}
+\ifhhcls@times
+ \ifhhcls@mathtime
+ \RequirePackage[slantedgreek,mtbold]{mathtime}[1999/03/29]
+ \else
+ \RequirePackage[slantedGreek]{mathptmx}[2003/03/02]
+ \fi
+ \RequirePackage[scaled=0.92]{helvet}[2003/03/02]
+ \RequirePackage{courier}[2003/03/02]
+ \renewcommand\bfdefault{b}
+% \end{macrocode}
+% Dummybefehl definieren, um Übersetzungsfehler zu vermeiden.
+% \begin{macrocode}
+ \newcommand\newstylenums{}
+% \end{macrocode}
+% \cs{,} im Mathemodus restaurieren.
+% \begin{macrocode}
+ \thinmuskip=3mu
+% \end{macrocode}
+% Computer Modern ist gewählt:
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% \changes{1.06}{2003/10/12}{Paket \texttt{hfoldsty} statt
+% \texttt{hfo} laden}%
+% Minuskelziffern (\oldstylenums{0123456789}) im Textmodus. Verwendung
+% des Pakets |hfoldsty.sty|, das ein besseres Kerning als |eco.sty|
+% für die französischen Anführungszeichen hat.
+% \begin{macrocode}
+ \RequirePackage[origtt]{hfoldsty}[2003/10/12]
+% \end{macrocode}
+% \changes{1.04}{2003/09/23}{Rücksetzen der Schreibmaschinenschrift
+% auf Original nicht mehr nötig}%
+% Bei Schreibmaschinenschrift (Monospaced) dennoch keine
+% Minuskelziffern und keine Ligaturen (nicht mehr nötig mit der neuen
+% |hfoldsty|"=Version).
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Generate warning in case of using
+% \cs{oldstylenums}}%
+% Der Befehl \cs{oldstylenums} ist in jedem Fall Quatsch:
+% \begin{macrocode}
+\renewcommand*\oldstylenums{%
+ \ClassWarning{bgteubner}{\string\oldstylenums\space is ignored}%
+}
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Rearrange \texttt{textcomp} and
+% \texttt{mathcomp}}%
+% \changes{1.20}{2004/03/07}{Switch \texttt{mathcomp} glyphs to the
+% same font as text is}%
+% Additional glyphs in math and in text mode.
+% |mathcomp| has to be loaded after switching to the text fonts, i.e.,
+% |mathptmx| etc.
+% \begin{macrocode}
+\RequirePackage{textcomp}[2001/06/05]
+\RequirePackage[rmdefault]{mathcomp}[2001/01/07]
+\ifhhcls@times
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Substitute Text and Math Companion
+% symbols by using \texttt{ptmxcomp.sty}}%
+% Many Text and Math Companion symbols have to be replaced or
+% corrected.
+% \begin{macrocode}
+ \RequirePackage{ptmxcomp}[2004/03/07]
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Warning for not existing bold math}%
+% \changes{1.30}{2004/04/10}{Error rather than a warning for using not
+% existing bold math}%
+% If using Times without MathTime, bold math is undefined. Redefine
+% \cs{boldmath} to generate a warning.
+% \begin{macrocode}
+ \ifhhcls@mathtime
+ \else
+ \renewcommand*\boldmath{%
+ \ClassError{bgteubner}{With the base font Times, bold math is
+ undefined\MessageBreak
+ (when not using MathTime math extensions)}{%
+ Avoid using bold math or buy the MathTime and MathTimePlus
+ fonts by Y\&Y.}%
+ }
+ \fi
+\fi
+% \end{macrocode}
+% Teilbilder mit Nummerierung a, b, c\dots:
+% \begin{macrocode}
+\RequirePackage[hang,RaggedRight]{hhsubfigure}[2003/09/14]
+% \end{macrocode}
+% Trennungen teilweise auch im Flattersatz ermöglichen:
+% \begin{macrocode}
+\RequirePackage{ragged2e}[2003/01/26]
+% \end{macrocode}
+% Integralzeichen usw.\ in mehr Größen, ist bei der Verwendung von
+% \verb|mathptmx| nicht nötig:
+% \begin{macrocode}
+\ifhhcls@times
+\else
+ \RequirePackage{exscale}[1997/06/16]
+\fi
+% \end{macrocode}
+% Befehle zum Einbinden von Grafiken:
+% \begin{macrocode}
+\RequirePackage{graphicx}[1999/02/16]
+% \end{macrocode}
+% Falls graue Kästen zugelassen sind, muss auch Farbe ins Spiel
+% kommen. Aus Konsistenzgründen wird das Paket immer geladen.
+% \begin{macrocode}
+\RequirePackage{color}[1999/02/16]
+% \end{macrocode}
+% Ebenso für lange Kisten.
+% \begin{macrocode}
+\RequirePackage{framed}[2003/07/19]
+% \end{macrocode}
+% Tensorbefehle:
+% \begin{macrocode}
+\RequirePackage{hhtensor}[2003/10/09]
+% \end{macrocode}
+% Befehle zur Erzeugung eines Stichwortverzeichnisses:
+% \begin{macrocode}
+\RequirePackage{makeidx}[2000/03/29]
+% \end{macrocode}
+% Kompakte Aufzählungen:
+% \begin{macrocode}
+\RequirePackage{mdwlist}[1996/05/02]
+\RequirePackage{paralist}[2002/03/18]
+% \end{macrocode}
+% \changes{1.03}{2003/09/18}{\texttt{ifthen}-Paket explizit laden}%
+% Das \verb|ifthen|"=Paket explizit laden.
+% \begin{macrocode}
+\RequirePackage{ifthen}[2001/05/26]
+% \end{macrocode}
+% Herausfinden, ob PDF oder DVI erzeugt wird:
+% \begin{macrocode}
+\RequirePackage{ifpdf}[2001/06/14]
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Redeclare uppercase Greek letters for
+% MathTime font}%
+% Normalerweise schreibt \LaTeX\ große griechische Buchstaben im
+% mathematischen Modus aufrecht, was aber im mathematischen Satz
+% inkonsistent ist.
+% Das Paket |fixmath| behebt dieses Problem.
+% Dadurch wird aber auch das große Delta $\Delta$ kursiv
+% gedruckt.
+% Wenn es als Differenz verwendet wird, soll es aufrecht sein.
+% Dies wird durch Verwendung von \cs{D} ($\Delta$) erreicht.
+%
+% With |mathptmx|, |fixmath| is not necessary.
+% With |mathtime|, the letters have to be redefined ``by hand''.
+% \begin{macrocode}
+\ifhhcls@times
+ \ifhhcls@mathtime
+ \DeclareMathSymbol\Gamma {\mathalpha}{letters}{0}
+ \DeclareMathSymbol\Delta {\mathalpha}{letters}{1}
+ \DeclareMathSymbol\Theta {\mathalpha}{letters}{2}
+ \DeclareMathSymbol\Lambda {\mathalpha}{letters}{3}
+ \DeclareMathSymbol\Xi {\mathalpha}{letters}{4}
+ \DeclareMathSymbol\Pi {\mathalpha}{letters}{5}
+ \DeclareMathSymbol\Sigma {\mathalpha}{letters}{6}
+ \DeclareMathSymbol\Upsilon {\mathalpha}{letters}{7}
+ \DeclareMathSymbol\Phi {\mathalpha}{letters}{8}
+ \DeclareMathSymbol\Psi {\mathalpha}{letters}{9}
+ \DeclareMathSymbol\Omega {\mathalpha}{letters}{10}
+ \DeclareMathSymbol\upGamma {\mathord}{letters}{48}
+ \DeclareMathSymbol\upDelta {\mathord}{letters}{49}
+ \DeclareMathSymbol\upTheta {\mathord}{letters}{50}
+ \DeclareMathSymbol\upLambda {\mathord}{letters}{51}
+ \DeclareMathSymbol\upXi {\mathord}{letters}{52}
+ \DeclareMathSymbol\upPi {\mathord}{letters}{53}
+ \DeclareMathSymbol\upSigma {\mathord}{letters}{54}
+ \DeclareMathSymbol\upUpsilon{\mathord}{letters}{55}
+ \DeclareMathSymbol\upPhi {\mathord}{letters}{56}
+ \DeclareMathSymbol\upPsi {\mathord}{letters}{57}
+ \DeclareMathSymbol\upOmega {\mathord}{letters}{127}
+ \fi
+\else
+ \RequirePackage{fixmath}[2000/04/11]
+\fi
+% \end{macrocode}
+% Internationale Unterstützung laden.
+% Es muss eine Version vom angegebenen Datum oder neuer sein,
+% da ältere Versionen |\frenchspacing| noch nicht im deutschen Text
+% eingeschaltet haben.
+% \begin{macrocode}
+\RequirePackage{babel}[2001/03/01]
+% \end{macrocode}
+% Zeilenabstand in der |advanced|"=Umgebung erhöhen:
+% \begin{macrocode}
+\RequirePackage{setspace}[2000/12/01]
+% \end{macrocode}
+% Paket für relative Schriftgrößenveränderungen laden.
+% \begin{macrocode}
+\RequirePackage{relsize}[1999/11/01]
+% \end{macrocode}
+% \changes{1.03}{2003/09/18}{\texttt{slantsc} bei Times nicht laden}%
+% Paket für kursive Kapitälchen.
+% Allerdings nur, wenn European Computer Modern verwendet wird, weil
+% für Times keine kursiven Kapitälchen zur Verfügung stehen, sonst
+% einen Ersatzbefehl für \cs{noscshape} definieren.
+% Dieser schaltet allerdings von Kapitälchen immer auf aufrechte
+% Schrift um, da es ja nur aufrechte Kapitälchen gibt.
+% \begin{macrocode}
+\ifhhcls@times
+ \DeclareRobustCommand\noscshape{%
+ \not@math@alphabet\noscshape\relax
+ \ifthenelse{\equal{\f@shape}{\scdefault}}{%
+ \fontshape\updefault
+ }{%
+ }%
+ \selectfont
+ }
+\else
+ \RequirePackage{slantsc}[2003/09/17]
+\fi
+% \end{macrocode}
+% \changes{1.06}{2003/10/12}{Paket \texttt{ginpenc} statt
+% \texttt{hhinputenc} laden}%
+% Einen Befehl definieren, der den Eingabezeichensatz bestimmt.
+% Das wird gemacht, da Babel ansonsten die Standarddefinitionen für
+% Umlaute (|\"a| usw.) verwendet.
+% Das Paket setzt diese für deutsche Sprache auf |"a| usw.,
+% wodurch Makeindex eine korrekte Sortierung erreicht:
+% \begin{macrocode}
+\RequirePackage{ginpenc}[2003/09/29]
+% \end{macrocode}
+% Warnungen ganz am Ende der Logdatei ausgeben:
+% \begin{macrocode}
+\RequirePackage{warning}[2001/08/17]
+% \end{macrocode}
+% Verbieten, die Umgebungen |eqnarray|, |eqnarray*| und |$$| zu
+% verwenden:
+% \begin{macrocode}
+\RequirePackage[all]{onlyamsmath}[2001/10/04]
+% \end{macrocode}
+% Zahlen automatisch nach jeweils drei Stellen sperren und automatisch
+% Exponentialteile sowie korrekte Dezimalzeichen erzeugen:
+% \begin{macrocode}
+\RequirePackage[sepfour,autolanguage]{numprint}[2003/11/09]
+% \end{macrocode}
+% Kolumnentitel umstellen können:
+% \begin{macrocode}
+\RequirePackage{scrpage2}[2002/11/01]
+% \end{macrocode}
+% Internationale Unterstützung für Literaturverzeichnisse:
+% \begin{macrocode}
+\RequirePackage[fixlanguage]{babelbib}[2003/07/28]
+% \end{macrocode}
+% Warnung für Fußnoten, die umbrochen werden, ausgeben:
+% \begin{macrocode}
+\RequirePackage{fnbreak}[2003/04/03]
+% \end{macrocode}
+% \changes{1.05}{2003/09/25}{Ältere \texttt{subfloat}"=Version
+% erlaubt, die Unterschiede sind nur marginal}%
+% Mehrere Fließumgebungen mit der gleichen Nummer erlauben:
+% \begin{macrocode}
+\RequirePackage[countmax]{subfloat}[2002/12/16]
+% \end{macrocode}
+% Für die Verzeichnisse wird |multicol| benötigt.
+% \begin{macrocode}
+\RequirePackage{multicol}[2000/07/10]
+% \end{macrocode}
+% Optischen Randausgleich aktivieren.
+%
+% \changes{2.11}{2015/05/17}{Remove \cs{ifpdfoutput} before loading
+% pdfcprot}%
+% Since both \verb|scrbook| and \verb|pdfcprot| define \cs{ifpdfoutput} remove
+% this macro first (according to hint in log file).
+% \begin{macrocode}
+\let\ifpdfoutput\relax
+\RequirePackage[activate]{pdfcprot}[2002/02/27]
+% \end{macrocode}
+%
+% \section{Prüfen, ob \textsc{pdf}\LaTeX\ verwendet wird}
+%
+% \changes{1.30}{2004/04/10}{Test if \textsc{pdf}\LaTeX\ is used}%
+% Test if \textsc{pdf}\LaTeX\ is used.
+% \begin{macrocode}
+\ifpdftex{}{%
+ \ClassError{bgteubner}{Ordinary latex used to compile this
+ document.\MessageBreak
+ Please use pdflatex. If you need dvi output\MessageBreak
+ use pdflatex and include `\string\pdfoutput=0' as first
+ line\MessageBreak
+ of your document}{The execution of latex is stopped immediately.}%
+ \stop
+}
+% \end{macrocode}
+% \changes{1.30}{2004/04/10}{Do not redefine \cs{includegraphics}}%
+% Print a warning if dvi output is used.
+% \begin{macrocode}
+\ifpdf
+\else
+ \addglobalwarning{%
+ \ClassWarningNoLine{bgteubner}{%
+ Output format is DVI, not PDF.\MessageBreak
+ If possible, use PDF output}%
+ }%
+\fi
+% \end{macrocode}
+% \begin{macro}{\iftimes}
+% \begin{macro}{\ifmathtime}
+% \changes{1.20}{2004/03/07}{Command to test on MathTime}%
+% Befehl definieren, der sagt, ob Times oder MathTime verwendet wird.
+% If MathTime is used, both, \cs{iftimes} and \cs{ifmathtime} are
+% true.
+% \begin{macrocode}
+\newcommand\iftimes[2]{\ifhhcls@times #1\else #2\fi}
+\newcommand\ifmathtime[2]{%
+ \ifhhcls@times
+ \ifhhcls@mathtime
+ #1%
+ \else%
+ #2%
+ \fi
+ \else
+ #2%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \changes{1.12}{2003/11/13}{Problem with \texttt{float.sty} solved}%
+% Da das |float|"=Paket erwartet, dass der Befehl
+% \cs{float@addtolists} noch nicht definiert ist.
+% Mit diesem Trick wird der Befehl vor dem Laden des Pakets gelöscht
+% und danach wieder vervollständigt.
+% \begin{macrocode}
+\BeforePackage{float}{%
+ \newcommand*\hhcls@float@addtolists{}%
+ \let\hhcls@float@addtolists=\float@addtolists
+ \let\float@addtolists=\undefined}
+\AfterPackage{float}{%
+ \let\hhclsflt@float@addtolists=\float@addtolists
+ \renewcommand\float@addtolists[1]{%
+ \hhclsflt@float@addtolists{#1}%
+ \hhcls@float@addtolists{#1}%
+ }%
+% \end{macrocode}
+% \begin{macro}{\listof}
+% \changes{1.12}{2003/11/13}{Lists for new floats get the same layout
+% as other lists, using \texttt{float.sty}}%
+% Redefine the \cs{listof} command in order to get the same layout as
+% other lists.
+% \begin{macrocode}
+ \renewcommand*\listof[2]{%
+ \begingroup%
+ \@ifundefined{ext@#1}{%
+ \float@error{#1}%
+ }{%
+ \@namedef{l@#1}{\@dottedtocline{1}{0em}{2.9em}}%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \float@listhead{#2}%
+ \small
+ \setlength{\parskip}{\z@}%
+ \@starttoc{\@nameuse{ext@#1}}%
+ \if@restonecol\twocolumn\fi
+ }%
+ \endgroup
+ }%
+% \end{macrocode}
+% \end{macro}
+% \changes{1.12}{2003/11/13}{Redeclare captions of user-defined floats
+% when using \texttt{float.sty}}%
+% Use the same style for the captions of user-defined floats.
+% \begin{macrocode}
+ \floatstyle{komabelow}
+}
+% \end{macrocode}
+%
+% \section{Das Aussehen des Dokuments gestalten}
+%
+% \subsection{Papiergröße einstellen}
+%
+% \begin{macro}{\paperwidth}
+% \begin{macro}{\paperheight}
+% Papiergröße, Satzspiegel und Bindungskorrektur einstellen:
+% \begin{macrocode}
+\ifhhcls@dinafuenf
+ \setlength{\paperwidth}{148mm}
+ \setlength{\paperheight}{210mm}
+ \areaset[7mm]{115mm}{174mm}
+\else
+ \setlength{\paperwidth}{170mm}
+ \setlength{\paperheight}{240mm}
+ \areaset[7mm]{135mm}{200mm}
+\fi
+% \end{macrocode}
+% Befehl definieren, der sagt, ob DIN-A\,5 verwendet wird:
+% \begin{macrocode}
+\newcommand\ifafive[2]{\ifhhcls@dinafuenf #1\else #2\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% Der \cs{areaset}"=Befehl erzeugt Texthöhen, die nicht unbedingt
+% einem Vielfachen des Zeilenabstandes betragen.
+% Das wird hier korrigiert.
+% Die Zeilenzahl wird gerundet, wobei die Grenze zum Aufrunden bei 0,4
+% statt normalerweise 0,5 liegt.
+% Es funktioniert so, dass solange \cs{baselineskip} zu
+% \cs{textheight} addiert wird, bis es größer als der alte Wert minus
+% 0,6\cs{baselineskip} ist.
+% \begin{macrocode}
+\begingroup
+\newdimen\gammel
+\gammel=\textheight
+\advance\gammel by -0.6\baselineskip
+\textheight0mm
+\@whiledim\textheight<\gammel
+ \do{\global\advance\textheight by \baselineskip}
+\endgroup
+% \end{macrocode}
+% Daten nochmal ausgeben (kopiert aus typearea.sty).
+% \begin{macrocode}
+\ClassInfo{bgteubner}{%
+ These are the values describing the layout:\MessageBreak
+ BCOR\space=\space\the\ta@bcor\MessageBreak
+ \string\paperwidth\space\space\space\space\space\space=%
+ \space\the\paperwidth\MessageBreak
+ \space\string\textwidth\space\space\space\space\space\space=%
+ \space\the\textwidth\MessageBreak
+ \space\string\evensidemargin\space=%
+ \space\the\evensidemargin\MessageBreak
+ \space\string\oddsidemargin\space\space=%
+ \space\the\oddsidemargin\MessageBreak
+ \string\paperheight\space\space\space\space\space=%
+ \space\the\paperheight\MessageBreak
+ \space\string\textheight\space\space\space\space\space=%
+ \space\the\textheight\MessageBreak
+ \space\string\topmargin\space\space\space\space\space\space=%
+ \space\the\topmargin\MessageBreak
+ \space\string\headheight\space\space\space\space\space=%
+ \space\the\headheight\MessageBreak
+ \space\string\headsep\space\space\space\space\space\space\space\space=%
+ \space\the\headsep\MessageBreak
+ \space\string\topskip\space\space\space\space\space\space\space\space=%
+ \space\the\topskip\MessageBreak
+ \space\string\footskip\space\space\space\space\space\space\space=%
+ \space\the\footskip\MessageBreak
+ \space\string\baselineskip\space\space\space=%
+ \space\the\baselineskip\MessageBreak
+ }
+% \end{macrocode}
+%
+% \subsection{Umbrucheinstellungen und Abstände}
+%
+% Schusterjungen und Hurensöhne:
+% \begin{macrocode}
+\clubpenalty=100
+\widowpenalty=400
+% \end{macrocode}
+% Nur eine Zeile über abgesetzten Formeln (Standard: 50)
+% \begin{macrocode}
+\displaywidowpenalty=50
+% \end{macrocode}
+% Seitenumbruch in Trennung (Standard: 100)
+% \begin{macrocode}
+\brokenpenalty=400
+% \end{macrocode}
+% Strafe in Textformeln nach Relation (Standard: 500)
+% \begin{macrocode}
+\relpenalty=700
+% \end{macrocode}
+% Strafe in Textformeln nach binären Operatoren (+,-,...) (Standard: 700)
+% \begin{macrocode}
+\binoppenalty=2000
+% \end{macrocode}
+% \begin{macro}{\parindent}
+% Absatzeinzug auf den Zeilenabstand setzen:
+% \begin{macrocode}
+\setlength{\parindent}{\baselineskip}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\frenchspacing}
+% \changes{1.02}{2003/09/17}{In allen englischen Dialekten
+% \cs{frenchspacing} verwenden}%
+% Auch in englischen Texten kein zusätzlicher Abstand nach
+% Satzendezeichen.
+% \begin{macrocode}
+\addto\extrasamerican{\frenchspacing}%
+\addto\noextrasamerican{\nonfrenchspacing}%
+\addto\extrasbritish{\frenchspacing}%
+\addto\noextrasbritish{\nonfrenchspacing}%
+\addto\extrasbritish{\frenchspacing}%
+\addto\noextrasbritish{\nonfrenchspacing}%
+\addto\extrascanadian{\frenchspacing}%
+\addto\noextrascanadian{\nonfrenchspacing}%
+\addto\extrasUKenglish{\frenchspacing}%
+\addto\noextrasUKenglish{\nonfrenchspacing}%
+\addto\extrasUSenglish{\frenchspacing}%
+\addto\noextrasUSenglish{\nonfrenchspacing}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Kapitel- und Abschnittsüberschriften formatieren}
+%
+% Für jede Ebene eine Länge definieren:
+% \begin{macrocode}
+\newlength{\hhcls@chapterindent}%
+\newlength{\hhcls@sectionindent}%
+\newlength{\hhcls@subsectionindent}%
+\newlength{\hhcls@subsubsectionindent}%
+\newlength{\hhcls@paragraphindent}%
+\newlength{\hhcls@subparagraphindent}%
+% \end{macrocode}
+% Für die Kapitelüberschrift den Einzug festlegen.
+% Vor |\begin{document}| kann das durch den Nutzer noch verändert
+% werden (sollte aber nicht).
+% \begin{macrocode}
+\setlength{\hhcls@chapterindent}{3.9199em}%
+% \end{macrocode}
+% Am |\begin{document}| den Einzug für die anderen Ebenen kopieren:
+% \begin{macrocode}
+\AtBeginDocument{%
+ \setlength{\hhcls@sectionindent}{\hhcls@chapterindent}%
+ \setlength{\hhcls@subsectionindent}{\hhcls@chapterindent}%
+ \setlength{\hhcls@subsubsectionindent}{\hhcls@chapterindent}%
+ \setlength{\hhcls@paragraphindent}{\hhcls@chapterindent}%
+ \setlength{\hhcls@subparagraphindent}{\hhcls@chapterindent}%
+}
+% \end{macrocode}
+% Schriftart der Kapitel- und Abschnittsüberschriften, mathematische
+% Zeichen werden passend fett gedruckt, falls nicht Vektoren und
+% Matrizen fett ausgezeichnet werden.
+% \begin{macrocode}
+\setkomafont{sectioning}{\normalcolor\normalfont\bfseries
+ \iftensor@bold\else\mathversion{bold}\fi}
+% \end{macrocode}
+% \begin{macro}{\chapterformat}
+% Formatierung der Kapitelüberschriften mit dem oben angegebenen
+% Einzug. Die Zahl wird in eine Box fester breite linksbündig
+% geschrieben:
+% \begin{macrocode}
+\renewcommand*\chapterformat{%
+ \makebox[\hhcls@chapterindent][l]{%
+ \chapappifchapterprefix{\ }\thechapter\autodot}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\othersectionlevelsformat}
+% Formatierung der Abschnittsüberschriften mit dem oben angegebenen
+% Einzug sowie mit definierbaren Pre"= und Postfixen für die
+% Abschnittsnummer.
+% Die Pre- und Postfixe werden normalerweise nur für andere
+% Überschriften wie z.\,B.\ für Beispiele, Aufgaben oder Lösungen
+% benötigt.
+% Die allgemeine Deklaration ist aber am einfachsten und praktischsten:
+% \begin{macrocode}
+\DeclareRobustCommand*\othersectionlevelsformat[1]{%
+ \makebox[\csname hhcls@#1indent\endcsname][l]{%
+ \csname prefix#1\endcsname\csname the#1\endcsname\autodot
+ \csname postfix#1\endcsname}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\prefixsection}
+% \begin{macro}{\prefixsubsection}
+% \begin{macro}{\prefixsubsubsection}
+% \begin{macro}{\prefixparagraph}
+% \begin{macro}{\prefixsubparagraph}
+% Definition leerer Prefixe zu den Überschriften.
+% Das wäre nicht notwendig, da das Konstrukt mit |\csname| und
+% |\endcsname| unbekannte Befehle ignoriert.
+% Die Definition macht den Code aber sauberer.
+% \begin{macrocode}
+\def\prefixsection{}%
+\def\prefixsubsection{}%
+\def\prefixsubsubsection{}%
+\def\prefixparagraph{}%
+\def\prefixsubparagraph{}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Inhaltsverzeichnis}
+%
+% Einzüge im Inhaltsverzeichnis festlegen:
+% \begin{macrocode}
+\ifhhcls@tocindent
+ \newlength{\hhcls@tocindentlength}
+ \settowidth{\hhcls@tocindentlength}{0.}
+ \renewcommand*\l@section{%
+ \@dottedtocline{1}{1\hhcls@tocindentlength}{2.3em}}
+ \renewcommand*\l@subsection{%
+ \@dottedtocline{2}{2\hhcls@tocindentlength}{3.2em}}
+ \renewcommand*\l@subsubsection{%
+ \@dottedtocline{3}{3\hhcls@tocindentlength}{4.1em}}
+ \renewcommand*\l@paragraph{%
+ \@dottedtocline{4}{4\hhcls@tocindentlength}{5.0em}}
+ \renewcommand*\l@subparagraph{%
+ \@dottedtocline{5}{5\hhcls@tocindentlength}{5.9em}}
+\else
+ \renewcommand*\l@section{\@dottedtocline{1}{0em}{2.3em}}
+ \renewcommand*\l@subsection{\@dottedtocline{2}{0em}{3.2em}}
+ \renewcommand*\l@subsubsection{\@dottedtocline{3}{0em}{4.1em}}
+ \renewcommand*\l@paragraph{\@dottedtocline{4}{0em}{5.0em}}
+ \renewcommand*\l@subparagraph{\@dottedtocline{5}{0em}{5.9em}}
+\fi
+% \end{macrocode}
+%
+% \subsection{Anhang}
+%
+% \begin{macro}{\appendixmore}
+% Falls Mediävalziffern verwendet werden, sollen die Anhangsbuchstaben
+% etwas kleiner gedruckt werden.
+% Außerdem automatische Erzeugung der Überschrift \emph{Anhang} am
+% Anfang des Anhangs.
+% \changes{1.32}{2004/08/19}{Move \cs{ifhhcls@times} outside
+% definition of \cs{appendixmore}}%
+% \begin{macrocode}
+\ifhhcls@times
+ \def\appendixmore{%
+ \addpart{\appendixname}%
+ }
+\else
+ \def\appendixmore{%
+ \renewcommand*\thechapter{\textsc{\@alph\c@chapter}}%
+ \addpart{\appendixname}%
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Description-Umgebung}
+%
+% Schriftart für description-Umgebung:
+% \begin{macrocode}
+\setkomafont{descriptionlabel}{\normalcolor\normalfont\rmfamily\bfseries
+ \iftensor@bold\else\mathversion{bold}\fi}
+% \end{macrocode}
+% \begin{macro}{\headfont}
+%
+% \subsection{Kolumnentitel}
+%
+% Schriftart für die Kolumnentitel festlegen (nicht kursiv):
+% \changes{1.32}{2004/08/19}{Remove \cs{rmfamily} from pagehead since
+% \cs{normalfont} does that already}%
+% \begin{macrocode}
+\setkomafont{pagehead}{\normalfont\normalcolor\small}
+% \end{macrocode}
+% \end{macro}
+% Kolumnentitel formatieren:
+% \begin{macrocode}
+\pagestyle{scrheadings}
+\renewcommand*\partpagestyle{empty}
+\renewcommand*\chapterpagestyle{empty}
+\renewcommand*\indexpagestyle{empty}
+\clearscrheadfoot
+\ifhhcls@headingoutside
+ \rohead[\pagemark]{\headmark\makebox[\hhcls@chapterindent][r]{\pagemark}}
+ \lehead[\pagemark]{\makebox[\hhcls@chapterindent][l]{\pagemark}\headmark}
+\else
+ \ohead[\pagemark]{\pagemark}
+ \ihead{\headmark}
+\fi
+% \end{macrocode}
+%
+% \subsection{Guillemets als Anführungszeichen}
+%
+% \begin{macro}{\flqq}
+% \begin{macro}{\frqq}
+% \begin{macro}{\flq}
+% \begin{macro}{\frq}
+% \changes{1.30}{2004/04/10}{Redefine quotation marks to allow math
+% mode and kerning}%
+% Redefine quotation marks in order to allow kerning (fix bug in
+% babel.sty).
+% \begin{macrocode}
+\ProvideTextCommand{\flqq}{T1}{%
+ \textormath{\guillemotleft}{\mbox{\guillemotleft}}}
+\ProvideTextCommand{\flqq}{OT1}{%
+ \textormath{\guillemotleft}{\mbox{\guillemotleft}}}
+\ProvideTextCommandDefault{\flqq}{\UseTextSymbol{OT1}\flqq}
+\ProvideTextCommand{\frqq}{T1}{%
+ \textormath{\guillemotright}{\mbox{\guillemotright}}}
+\ProvideTextCommand{\frqq}{OT1}{%
+ \textormath{\guillemotright}{\mbox{\guillemotright}}}
+\ProvideTextCommandDefault{\frqq}{\UseTextSymbol{OT1}\frqq}
+\ProvideTextCommand{\flq}{T1}{%
+ \textormath{\guilsinglleft}{\mbox{\guilsinglleft}}}
+\ProvideTextCommand{\flq}{OT1}{%
+ \textormath{\guilsinglleft}{\mbox{\guilsinglleft}}}
+\ProvideTextCommandDefault{\flq}{\UseTextSymbol{OT1}\flq}
+\ProvideTextCommand{\frq}{T1}{%
+ \textormath{\guilsinglright}{\mbox{\guilsinglright}}}
+\ProvideTextCommand{\frq}{OT1}{%
+ \textormath{\guilsinglright}{\mbox{\guilsinglright}}}
+\ProvideTextCommandDefault{\frq}{\UseTextSymbol{OT1}\frq}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\glqq}
+% \begin{macro}{\grqq}
+% \begin{macro}{\glq}
+% \begin{macro}{\grq}
+% Französische Anführungsstriche als Anführungszeichen verwenden.
+% \begin{macrocode}
+ \let\glqq=\frqq
+ \let\grqq=\flqq
+ \let\glq=\frq
+ \let\grq=\flq
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Literaturverweise}
+%
+% \begin{environment}{thebibliography}
+% Flattersatz im Literaturverzeichnis und kleine Schrift:
+% \begin{macrocode}
+\renewenvironment{thebibliography}[1]{%
+ \setchapterpreamble{\bibpreamble}%
+ \bib@heading%
+ \list{\@biblabel{\@arabic\c@enumiv}}{%
+ \settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand*\theenumiv{\@arabic\c@enumiv}%
+ }%
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \setlength\RaggedRightRightskip{\z@\@plus 6em}%
+ \small\RaggedRight
+ \sfcode`\.=\@m
+}{
+ \def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist
+}
+% \end{macrocode}
+% \end{environment}
+% Im Literaturverzeichnis die Blöcke nur durch ein einfaches
+% Leerzeichen trennen.
+% Dadurch wird das weite Auseinanderziehen verhindert.
+% \begin{macrocode}
+\renewcommand*\newblock{\ }
+% \end{macrocode}
+% \begin{macro}{\@bibitem}
+% \begin{macro}{\@lbibitem}
+% Literaturangaben sollen in Majuskelziffern geschrieben werden:
+% \begin{macrocode}
+\def\@bibitem#1{\stepcounter{\@listctr}%
+\item[{[\newstylenums{\the\value{\@listctr}}]}]\if@filesw
+ \immediate\write\@auxout
+ {\string\bibcite{#1}{%
+ \string\newstylenums{\the\value{\@listctr}}}}\fi\ignorespaces}
+\def\@lbibitem[#1]#2{\item[\@biblabel{\newstylenums{#1}}\hfill]\if@filesw
+ {\let\protect\noexpand
+ \immediate\write\@auxout{%
+ \string\bibcite{#2}{\protect\newstylenums{#1}}}}\fi\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Literaturverweise nicht umbrechbar:
+% \begin{macrocode}
+\def\@citex[#1]#2{%
+ \let\@citea\@empty
+ \@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{,\,}%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}%
+ \G@refundefinedtrue
+ \@latex@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\hbox{\csname b@\@citeb\endcsname}}}}{#1}%
+}
+% \end{macrocode}
+% \begin{macro}{\btxISBN}
+% \begin{macro}{\btxISSN}
+% Die Zeichenketten ISBN und ISSN etwas kleiner schreiben:
+% \begin{macrocode}
+\renewcommand\btxISBN{\acro{ISBN}}
+\renewcommand\btxISSN{\acro{ISSN}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\printISBN}
+% \changes{1.10}{2003/10/30}{Umbruch in ISBN verhindern}%
+% \begin{macrocode}
+\ifhhcls@times
+% \end{macrocode}
+% Umbruch verhindern für Times:
+% \begin{macrocode}
+ \newcommand\printISBN[1]{\mbox{#1}}
+\else
+% \end{macrocode}
+% Falls Mediävalziffern verwendet werden, Ausgabe der ISBN mit
+% verkleinertem X und verhindertem Umbruch:
+% \begin{macrocode}
+ \newcommand\printISBN[1]{%
+ \mbox{\expandafter\hhcls@printISBN#1\@empty\@empty}%
+ }
+% \end{macrocode}
+% \end{macro}
+% Drucken eines "`X"' in einer ISBN, in Kapitälchen.
+% \begin{macrocode}
+ \newcommand\hhcls@printISBNx[1]{\acro{#1}}
+% \end{macrocode}
+% Dieser Befehl durchsucht die ISBN nach ``x'' oder ``X'' und druckt
+% diese gesondert:
+% \begin{macrocode}
+ \def\hhcls@printISBN#1#2\@empty{%
+ \begingroup
+ \edef\hhcls@argeins{#1}%
+ \edef\hhcls@argzwei{#2}%
+ \def\hhcls@argX{X}%
+ \def\hhcls@argx{x}%
+ \ifx\hhcls@argeins\hhcls@argX
+ \hhcls@printISBNx{#1}%
+ \else
+ \ifx\hhcls@argeins\hhcls@argx
+ \hhcls@printISBNx{#1}%
+ \else
+ #1%
+ \fi
+ \fi
+ \ifx\hhcls@argzwei\@empty
+ \else
+ \hhcls@printISBN#2\@empty
+ \fi
+ \endgroup
+ }
+\fi
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{ISSN formatieren}%
+% In der Bibliographie umschalten:
+% \begin{macrocode}
+\setbibliographyfont{ISBN}{\printISBN}
+\setbibliographyfont{ISSN}{\printISBN}
+% \end{macrocode}
+%
+% \section{Tabellen}
+%
+% Irgendein Spaltentyp mit Ausrichtung am Dezimalzeichen:
+% \begin{macrocode}
+\newcolumntype{d}[1]{D{.}{,}{#1}}
+% \end{macrocode}
+%
+% \section{Fließumgebungen}
+%
+% \subsection{Platzierung}
+%
+% Bilder und Tabellen nur oben auf der Seite oder auf gesonderten Seiten:
+% \begin{macrocode}
+\renewcommand\fps@figure{tp}
+\renewcommand\fps@table{tp}
+% \end{macrocode}
+%
+% \begin{macro}{\floatpagefraction}
+% Fließumgebungen erst auf eine eigene Seite packen, wenn sie
+% mindestens 75\,\%\ der Seite in Anspruch nehmen:
+% \begin{macrocode}
+\renewcommand{\floatpagefraction}{0.75} % Default: 0.5
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\topfraction}
+% Bildplatzierung oben bis 75\,\%\ der Seite zulassen:
+% \begin{macrocode}
+\renewcommand{\topfraction}{0.75} % Default: 0.7
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bottomfraction}
+% Bildplatzierung unten bis 35\,\%\ der Seite zulassen:
+% \begin{macrocode}
+\renewcommand{\bottomfraction}{0.35} % Default: 0.3
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\textfraction}
+% Textanteil muss mindestens 20\,\%\ betragen:
+% \begin{macrocode}
+\renewcommand{\textfraction}{0.2} % Default: 0.2
+% \end{macrocode}
+% \end{macro}
+% Höchstens zwei Bilder oben:
+% \begin{macrocode}
+\setcounter{topnumber}{2} % Default: 2
+% \end{macrocode}
+% Höchstens ein Bild unten:
+% \begin{macrocode}
+\setcounter{bottomnumber}{1} % Default: 1
+% \end{macrocode}
+% Höchstens drei Bilder insgesamt:
+% \begin{macrocode}
+\setcounter{totalnumber}{3} % Default: 3
+% \end{macrocode}
+%
+% \subsection{Bugfix für Platzierung im Text}
+%
+% Fließumgebungen verhindern eine Silbentrennung im folgenden Wort.
+% Diese Definition behebt das Problem
+% (von Heiko Oberdiek, oberdiek@uni-freiburg.de):
+% \begin{macrocode}
+\g@addto@macro\end@float{%
+ \ifnum\@floatpenalty<\z@
+ \ifnum\@floatpenalty<-\@Mii
+ \else
+ \ifhmode
+ \if@ignore
+ \penalty\@M
+ \hskip\z@skip
+ \fi
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \subsection{Abstände}
+%
+% Abstand zwischen zwei Fließumgebungen:
+% \begin{macrocode}
+\setlength\floatsep{18\p@ \@plus 10\p@ \@minus 2\p@}
+% \end{macrocode}
+% Abstand zwischen einer Fließumgebung und dem Text:
+% \begin{macrocode}
+\setlength\textfloatsep{14\p@ \@plus 20\p@ \@minus 4\p@}
+% \end{macrocode}
+% Abstände auf Fließumgebungsseiten:
+% \begin{macrocode}
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{18\p@ \@plus 1fil}
+\setlength\@fpbot{0\p@ \@plus 2fil}
+% \end{macrocode}
+%
+% \subsection{Bildunter"= und Tabellenüberschriften}
+%
+% Hängender Einzug:
+% \begin{macrocode}
+\setcaphanging
+% \end{macrocode}
+% Schriftart für Bildunterschriften:
+% \begin{macrocode}
+\setkomafont{caption}{\normalfont\normalcolor\small\RaggedRight}
+% \end{macrocode}
+% \begin{macro}{\germanfigurename}
+% Definition eines Befehls, der den Namen der Bildunterschriften ändert:
+% \begin{macrocode}
+\newcommand*\germanfigurename[1]{\gdef\hhcls@germanfigurename{#1}}
+% \end{macrocode}
+% \end{macro}
+% Setzen der Bildunterschriften auf "`Bild"':
+% \begin{macrocode}
+\germanfigurename{Bild}
+% \end{macrocode}
+% Dem Paket |babel.sty| erzählen, dass für die deutsche Sprache immer
+% |\hhcls@germanfigurename| als Bildunterschrift dienen soll:
+% \begin{macrocode}
+\addto\captionsgerman{\renewcommand*\figurename{\hhcls@germanfigurename}}%
+\addto\captionsngerman{\renewcommand*\figurename{\hhcls@germanfigurename}}%
+\addto\captionsaustrian{\renewcommand*\figurename{\hhcls@germanfigurename}}%
+\addto\captionsnaustrian{\renewcommand*\figurename{\hhcls@germanfigurename}}%
+% \end{macrocode}
+%
+% \subsection{Schriftart in Bildern}
+%
+% Schriftbefehle einrichten, die in der Art von KOMA"=Script mit
+% \cs{setkomafont} verändert werden können.
+% \begin{macrocode}
+\newcommand*\@floatfont{\normalfont\normalcolor\normalsize}
+\newcommand*\scr@fnt@float{\@floatfont}
+% \end{macrocode}
+% Einen Befehl umdefinieren, der am Anfang jeder Fließumgebung
+% ausgeführt wird. Leider definiert schon |setspace| daran herum.
+% \begin{macrocode}
+\@ifpackageloaded{setspace}{%
+ \def\@xfloat #1[#2]{%
+ \latex@xfloat #1[#2]%
+ \def\baselinestretch{\setspace@singlespace}%
+ \scr@fnt@float
+ }%
+}{%
+ \def\@floatboxreset{%
+ \reset@font
+ \scr@fnt@float
+ \@setminipage
+ }%
+}%
+% \end{macrocode}
+% Schriftgröße in Fließumgebungen verringern.
+% \begin{macrocode}
+\setkomafont{float}{\normalfont\normalcolor\small}%
+% \end{macrocode}
+% Auch in |longtable|"=Umgebungen kleinere Schrift:
+% \begin{macrocode}
+\newcommand\hhcls@longtable{}
+\let\hhcls@longtable\longtable
+\renewcommand\longtable{\small\hhcls@longtable}
+% \end{macrocode}
+%
+% \subsection{Verzeichnisse}
+%
+% \begin{macrocode}
+\renewcommand*\l@figure{\@dottedtocline{1}{0em}{2.9em}}
+% \end{macrocode}
+% \begin{macrocode}
+\let\l@table\l@figure
+% \end{macrocode}
+%
+%
+% \subsection{Subfigures}
+%
+% \begin{macro}{\subfigtopskip}
+% \begin{macro}{\subfigbottomskip}
+% \begin{macro}{\subfigcapmargin}
+% Keine Abstände um Subfigures. Die müssen dann von Hand gemacht werden:
+% \begin{macrocode}
+\renewcommand{\subfigtopskip}{0pt}
+\renewcommand{\subfigbottomskip}{0pt}
+\renewcommand{\subfigcapmargin}{0pt}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subcapsize}
+% Bei Subfigures die gleiche Schriftgröße wie bei normalen
+% Bildunterschriften:
+% \begin{macrocode}
+\renewcommand{\subcapsize}{\small}
+% \end{macrocode}
+% \end{macro}
+% Abstand zwischen Bild und Bildunterschrift:
+% \begin{macrocode}
+\setlength{\subfigcapskip}{8pt}
+% \end{macrocode}
+% \begin{macro}{\subcapfont}
+% Schriftart der Bildunterunterschriften. Zusätzlich Flattersatz.
+% \begin{macrocode}
+\renewcommand{\subcapfont}{\rmfamily\RaggedRight}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subcaplabelfont}
+% Schriftart für die Labels:
+% \begin{macrocode}
+\renewcommand{\subcaplabelfont}{\rmfamily}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\thesubfigure}
+% Formatierung der Subfigure"=Nummer in Verweisen:
+% \begin{macrocode}
+\renewcommand*{\thesubfigure}{\,\alph{subfigure}}
+\renewcommand*{\@@thesubfigure}{\alph{subfigure}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@thesubfigure}
+% Formatierung der Subfigure"=Nummer in Bildunterschriften:
+% \begin{macrocode}
+\renewcommand{\@thesubfigure}{%
+ {\subcapsize\subcaplabelfont\alph{subfigure}:}\space}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Subfloats}
+%
+% Nummerierung bei wiederholten Bildern und Tabellen:
+% \begin{macrocode}
+\renewcommand*\thesubfloatfigure{%
+ \themainfigure\,(\arabic{subfloatfigure}/\arabic{subfloatfiguremax})}
+\renewcommand*\thesubfloattable{%
+ \themaintable\,(\arabic{subfloattable}/\arabic{subfloattablemax})}
+% \end{macrocode}
+%
+% \subsection{Bilder und Tabellen zählen}
+%
+% Bilder zählen:
+% \begin{macrocode}
+\newcounter{bilderzahl}%
+\g@addto@macro\endfigure{%
+ \stepcounter{bilderzahl}%
+}%
+% \end{macrocode}
+% Tabellen zählen:
+% \begin{macrocode}
+\newcounter{tabellenzahl}%
+\g@addto@macro\endtable{%
+ \stepcounter{tabellenzahl}%
+}%
+% \end{macrocode}
+% Ausgabe der Werte:
+% \begin{macrocode}
+\AtEndDocument{%
+ \immediate\write\@auxout{%
+ \string\gdef\string\hhclsbilderzahl{\thebilderzahl}^^J%
+ \string\gdef\string\hhclstabellenzahl{\thetabellenzahl}^^J%
+ \string\gdef\string\hhclsaufgabenzahl{\theaufgabenzahl}}%
+}
+\addglobalwarning{%
+ \typeout{^^JNumber of figures: \thebilderzahl}%
+ \typeout{Number of tables: \thetabellenzahl}%
+ \typeout{Number of exercises: \theaufgabenzahl^^J}%
+}%
+% \end{macrocode}
+%
+% \subsection{Verzeichnisse}
+%
+% \begin{macro}{\listoffigures}
+% Verzeichnis der Bilder (kleinere Schrift):
+% \begin{macrocode}
+\@ifundefined{BeforeStartingTOC}{%
+ \ClassWarningNoLine{bgteubner}{Koma-Script macro
+ \string\BeforeStartingTOC\space not defined.\MessageBreak
+ Using workaround for \string\listoffigures. \MessageBreak
+ You should consider updating Koma-Script.}%
+ \renewcommand*\listoffigures{%
+ \begingroup%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \lof@heading%
+ \small
+ \@parskipfalse\@parskip@indent%
+ \@starttoc{lof}%
+ \if@restonecol\twocolumn\fi
+ \endgroup
+ }
+}{%
+ \BeforeStartingTOC[lof]{\small}
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\listoftables}
+% Verzeichnis der Tabellen (kleinere Schrift):
+% \begin{macrocode}
+\@ifundefined{BeforeStartingTOC}{%
+ \ClassWarningNoLine{bgteubner}{Koma-Script macro
+ \string\BeforeStartingTOC\space not defined.\MessageBreak
+ Using workaround for \string\listoftables.\MessageBreak
+ You should consider updating Koma-Script.}%
+ \renewcommand*\listoftables{%
+ \begingroup
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \lot@heading%
+ \small
+ \@parskipfalse\@parskip@indent%
+ \@starttoc{lot}%
+ \if@restonecol\twocolumn\fi
+ \endgroup
+ }
+}{%
+ \BeforeStartingTOC[lot]{\small}
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Index}
+%
+% Schreiben, wie Index erzeugt wird.
+% \begin{macrocode}
+\newcommand\hhcls@makeindex{}
+\let\hhcls@makeindex=\makeindex
+\renewcommand\makeindex{%
+ \hhcls@makeindex
+ \addglobalwarning{%
+ \typeout{^^JGenerate index by using^^J%
+ \space\space`makeindex -c -g -s bgteubner.ist \jobname'.^^J%
+ Have a look to the log file `\jobname.ilg'.^^J}%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\hhcls@germanindexname}
+% Name des Index:
+% \begin{macrocode}
+\newcommand*\hhcls@germanindexname{Stichwortverzeichnis}
+% \end{macrocode}
+% \end{macro}
+% Dem Paket |babel.sty| erzählen, dass für die deutsche Sprache immer
+% |\hhcls@germanindexname| als Titel für das Sachwortverzeichnis dienen soll:
+% \begin{macrocode}
+\addto\captionsgerman{\renewcommand*\indexname{\hhcls@germanindexname}}%
+\addto\captionsngerman{\renewcommand*\indexname{\hhcls@germanindexname}}%
+\addto\captionsaustrian{\renewcommand*\indexname{\hhcls@germanindexname}}%
+\addto\captionsnaustrian{\renewcommand*\indexname{\hhcls@germanindexname}}%
+% \end{macrocode}
+% Am Ende ein Sachwortverzeichnis erstellen:
+% \begin{macrocode}
+\AtEndDocument{\printindex}
+% \end{macrocode}
+% Set size for lists.
+% \begin{macrocode}
+\newcommand\listsfont{\footnotesize}
+% \end{macrocode}
+% \begin{environment}{theindex}
+% Indexumgebung redefinieren, damit Flattersatz und kleinere Schrift
+% verwendet werden. Außerdem gegenüber |\RaggedRight| eine größere
+% "`Flatterung"' zulassen, um Overful hboxes zu vermeiden:
+% \begin{macrocode}
+\renewenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 20\p@
+ \setchapterpreamble{\index@preamble}%
+ \idx@heading%
+ \thispagestyle{\indexpagestyle}%
+ \par
+ \parindent\z@
+ \setlength{\parskip}{\z@ \@plus .3\p@}%
+ \setlength{\parfillskip}{\z@ \@plus 1fil}%
+ \let\item\@idxitem
+ \setlength\RaggedRightRightskip{\z@\@plus 4em}%
+% \end{macrocode}
+% Boolean einführen, der prüfen hilft, ob der richtige Indexstil
+% verwendet wurde.
+% \begin{macrocode}
+ \newif\ifhhclsiscorrectindex
+ \RaggedRight\listsfont}
+ {\ifhhclsiscorrectindex
+ \else
+% \end{macrocode}
+% Der Autor hat einen nicht zulässigen Indexstil verwendet:
+% \begin{macrocode}
+ \ClassError{bgteubner}{You have not used the correct index
+ style\MessageBreak
+ `bgteubner.ist' for the class `bgteubner.cls'}{%
+ You have to use the style bgteubner.ist:^^J%
+ Generate index by using^^J%
+ \space\space`makeindex -c -g -s bgteubner.ist \jobname'.^^J%
+ Have a look to the log file `\jobname.ilg'.}%
+ \fi
+ \if@restonecol\onecolumn\else\clearpage\fi}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\@idxitem}
+% Hängender Einzug mit 30\,pt:
+% \begin{macrocode}
+\renewcommand*\@idxitem{\par\hangindent 24\p@}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subitem}
+% Ein "`--"' vor Untereinträgen:
+% \begin{macrocode}
+\renewcommand*\subitem{\@idxitem \quad --\;}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subsubitem}
+% Zwei "`--"' vor Unter"=Untereinträgen:
+% \begin{macrocode}
+\renewcommand*\subsubitem{\@idxitem \quad --\;--\;}
+% \end{macrocode}
+% \end{macro}
+%
+% Befehle für Seitenbereiche, Verwendung z.\,B.\ \verb_\index{Moin|ff}_.
+%
+% \begin{macro}{\f}
+% Ein einfaches "`f"' angehängt:
+% \begin{macrocode}
+\newcommand*\f[1]{#1\,f}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ff}
+% Ein einfaches "`ff"' angehängt:
+% \begin{macrocode}
+\newcommand*\ff[1]{#1\,ff}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\textbff}
+% \begin{macro}{\textbfff}
+% Die beiden Befehle in fett:
+% \begin{macrocode}
+\newcommand*\textbff[1]{\textbf{#1\,f}}%
+\newcommand*\textbfff[1]{\textbf{#1\,ff}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subind}
+% Wenn mit \verb_|see_ auf andere Indexeinträge mit Unterpunkten
+% verwiesen wird, soll \cs{subind} statt einem Komma verwendet werden:
+% \begin{macrocode}
+\newcommand\subind{\,--\,\hskip\z@skip}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\emphindex}
+% \changes{2.01}{2011/12/25}{Added macro \cs{emphindex} for important index
+% entryies}%
+% Macro for generating bold page references in the index. May be
+% redefined if hyperref is used.
+% \begin{macrocode}
+\newcommand*\emphindex[1]{\textbf{#1}}%
+% \end{macrocode}
+% \end{macro}
+% In case the package \verb|imakeidx.sty| is loaded, prevent it from changing
+% the theindex environment.
+% \begin{macrocode}
+\BeforePackage{imakeidx}{%
+ \PassOptionsToPackage{original}{imakeidx}
+}
+% \end{macrocode}
+%
+% \section{Fußnoten}
+%
+% Formatierung der Fußnoten. Hängender Einzug, Fußnotenmarkierung
+% nicht hochgestellt, Versalziffern:
+% \begin{macrocode}
+\deffootnote{1.5em}{1.5em}{\normalfont\newstylenums{\thefootnotemark}\enspace}
+% \end{macrocode}
+% \changes{1.02}{2003/09/17}{\cs{normalfont} in Fußnoten aufrufen}%
+% Fußnoten im Flattersatz:
+% \begin{macrocode}
+\addtokomafont{footnote}{\normalfont\RaggedRight}
+% \end{macrocode}
+% Fußnotenmarkierung im Text in Versalziffern:
+% \begin{macrocode}
+\deffootnotemark{\textsuperscript{\newstylenums{\thefootnotemark}}}
+% \end{macrocode}
+% Abstand der Fußnoten vom Text?
+% \begin{macrocode}
+\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
+% \end{macrocode}
+%
+% \section{Zusätzliche Textbefehle}
+%
+% \begin{macro}{\acro}
+% \changes{1.01}{2003/09/16}{\cs{acro} für European Computer Modern
+% serifenlos sowie kursive Schreibmaschinenschrift mit
+% \cs{textsmaller} statt \cs{textsc}}%
+% Großbuchstabige Abkürzungen in Kapitälchen setzen:
+% \begin{macrocode}
+\ifhhcls@times
+ \DeclareRobustCommand\acro[1]{\textsmaller{\MakeUppercase{#1}}}
+\else
+ \DeclareRobustCommand\acro[1]{%
+ \ifthenelse{\equal{\f@family}{hfor}\or\equal{\f@family}{cmr}}{%
+ \textsc{\MakeLowercase{#1}}%
+ }{%
+ \ifthenelse{\(\equal{\f@family}{hfott}\or\equal{\f@family}{cmtt}\)%
+ \and\equal{\f@shape}{n}}{%
+ \textsc{\MakeLowercase{#1}}%
+ }{%
+ \textsmaller{\MakeUppercase{#1}}%
+ }%
+ }%
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\person}
+% Personennamen:
+% \begin{macrocode}
+\newcommand\person{}%
+\let\person=\emph
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\new}
+% Neu eingeführte Begriffe:
+% \begin{macrocode}
+\newcommand\new{}%
+\let\new=\emph
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\engl}
+% Englische Begriffe:
+% \begin{macrocode}
+\newcommand\engl{}%
+\let\engl=\emph
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\qed}
+% \changes{1.10}{2003/10/30}{Befehl \cs{qed} eingeführt}%
+% Ende eines Beweises:
+% \begin{macrocode}
+\newcommand*\qed{%
+ \hskip 1em plus 1fill\rule{0pt}{1ex}\hskip\z@skip
+ \hglue 0pt plus 1fill\mbox{\qedname}}
+% \hskip 1em plus 1fill\rule{0.05mm}{1ex}\hskip\z@skip
+% \rule{0.05mm}{1ex}\hglue 0pt plus 1fill\qedname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\qedname}
+% Text, der von \cs{qed} gesetzt wird:
+% \begin{macrocode}
+\newcommand*\qedname{\rule{1ex}{1ex}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Mathematik}
+%
+% \subsection{Zusätzliche mathematische Befehle}
+%
+% \begin{macro}{\tr}
+% Spur (tr):
+% \begin{macrocode}
+\newcommand*\tr{\mathop{\operator@font tr}\nolimits}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\e}
+% Eulerkonstante:
+% \begin{macrocode}
+\newcommand*\e{\mathop{\operator@font e}\nolimits}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\d}
+% Differentialoperator:
+%
+% For some reason, since texlive 2011, the original \cs{d} macro is
+% redefined later again. This can be overcome by redefining \cs{d} at
+% \cs{begin{document}}.
+% \changes{2.01}{2011/12/29}{Fix later redefinition of \cs{d} for
+% usage in math mode}%
+% \begin{macrocode}
+\let\origd=\d
+\AtBeginDocument{
+ \renewcommand*\d{%
+% \end{macrocode}
+% Das |\relax| ist notwendig, weil |\ifmmode| sonst nicht in der
+% |align|"=Umgebung funktionieren würde.
+% \begin{macrocode}
+ \relax\ifmmode
+ \mathrm{d}%
+ \else
+ \expandafter\origd
+ \fi
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\D}
+% Differenzenoperator:
+% \begin{macrocode}
+\newcommand*\D{\ensuremath{\upDelta}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\grad}
+% Gradient:
+% \begin{macrocode}
+\newcommand*\grad{\mathop{\operator@font grad}\nolimits}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{cases*}
+% Fallunterscheidung mit schließender Klammer:
+% \begin{macrocode}
+\newenvironment{cases*}{%
+ \matrix@check\cases\env@cases
+}{%
+ \endarray\right\rbrace%
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\equivalent}
+% Entspricht-Zeichen:
+% \begin{macrocode}
+\newcommand*\equivalent{\ensuremath{\mathrel{\widehat{=}}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{nomathindent}
+% Innerhalb dieser Umgebung ist der mathematische Einzug verringert
+% oder gelöscht.
+% \begin{macrocode}
+%\newcommand*\nomathindent[1][1.0]{\rule{-#1\mathindent}{0mm}}
+\newenvironment{nomathindent}[1][1.0]{%
+ \addtolength{\mathindent}{-#1\mathindent}%
+ \ignorespaces
+}{\ignorespacesafterend}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\vec}
+% \begin{macro}{\matr}
+% \begin{macro}{\tens}
+% \changes{1.06}{2003/10/12}{Befehl \cs{tensor} in \cs{tens} umbenannt}%
+% \changes{1.20}{2004/03/07}{MathTime font has original bold math. Use
+% if available}%
+% Befehl für Matrizen und Vektoren.
+% Falls Fettdruck bei Times, gibt es keine richtige fette Schrift.
+% "`Poor Man's Bold als Ersatz"'.
+% \begin{macrocode}
+\iftensor@bold
+ \ifhhcls@times
+ \ifhhcls@mathtime
+ \else
+ \addglobalwarning{%
+ \ClassWarningNoLine{bgteubner}{The combination of the main font
+ Times\MessageBreak
+ with bold vectors (option <boldvec>)\MessageBreak
+ leads to ugly results in some cases}}%
+ \renewcommand*\vec[1]{\ensuremath{\pmb{#1}}}
+ \renewcommand*\matr[1]{\ensuremath{\pmb{#1}}}
+ \renewcommand*\tens[2]{\ensuremath{\pmb{#1}}}
+ \fi
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\tensor}
+% Einen Befehl \cs{tensor} erzeugen, der dem Nutzer sagt, dass der
+% Befehl in \cs{tens} umbenannt wurde.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \providecommand*\tensor{%
+ \ClassError{bgteubner}{\string\tensor\space command used instead
+ of \string\tens\space command (see help by pressing h)}{%
+ Because of some name clashes, the \string\tensor\space command
+ had to be renamed to \string\tens. Please change all calls
+ inside your document.}%
+ \tens
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Formatierung}
+%
+% Zeilenumbrüche zwischen Zeilen in abgesetzten Formeln erlauben:
+% \begin{macrocode}
+\allowdisplaybreaks
+% \end{macrocode}
+% Bug von |amsmath| beheben, der Labels auf Normalschrift zwingt:
+% \begin{macrocode}
+\def\maketag@@@#1{\hbox{\m@th#1}}
+% \end{macrocode}
+%
+% Komma im Mathemodus als Dezimalzeichen verwenden, von
+% Donald Arseneau (asnd@triumf.ca):
+% \begin{macrocode}
+\mathchardef\mathcomma\mathcode`\,
+\mathcode`\,=32768 % "8000
+%
+\begingroup
+\catcode`\_=12
+\catcode`\,=\active
+\@firstofone{%
+\endgroup
+%
+ \edef\DC@char{\meaning_}
+ \def\DC@parse#1 _{\def\DC@parse##1#1 ##2##3\delimiter{##2}}
+ \expandafter\DC@parse\DC@char
+ \toks@={\expandafter\DC@parse\meaning\DC@char}
+ \edef\DC@test{9<2\the\toks@ \DC@char.\delimiter}
+%
+ \DeclareRobustCommand\ActiveComma{\futurelet\DC@char\DC@docomma}
+ \def\DC@docomma{%
+ \ifnum\DC@test \mathord \fi
+ \mathcomma
+ }
+ \let,\ActiveComma
+}
+% \end{macrocode}
+%
+% \section{Glossar, Abkürzungs- und Formelverzeichnisse}%
+%
+% Die Behandlung von solchen Verzeichnissen wurde aus dem
+% |nomencl|"=Paket, Version~v3.1a vom 13.\,12.~2000,
+% weiterentwickelt.
+%
+% Zunächst werden Befehle definiert, die das At"=Zeichen (@) in
+% Argumenten finden und verarbeiten können.
+% Da in der Klassendatei das @ eine besondere Bedeutung hat, muss dies
+% zunächst auf den Standardwert wie im Text umgeschaltet werden.
+% \begin{macrocode}
+\makeatother
+% \end{macrocode}
+% \begin{macro}{\ifhasat}
+% Dieser Befehl hat drei Argumente, wenn das erste ein @ enthält, wird
+% das zweite Argument ausgeführt, andernfalls das dritte.
+% \begin{macrocode}
+\newcommand*\ifhasat[1]{%
+ \expandafter\csname @ifhasat\expandafter\endcsname#1@\end
+}
+% \end{macrocode}
+% Routine, die die Arbeit für \cs{ifhasat} erledigt.
+% \begin{macrocode}
+\expandafter\def\csname @ifhasat\endcsname#1@#2\end{%
+ \ifx\relax#2\relax
+ \expandafter\csname @secondoftwo\expandafter\endcsname
+ \else
+ \expandafter\csname @firstoftwo\expandafter\endcsname
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\beforeat}
+% Ähnlich wie \cs{ifhasat}, übernimmt aber nur ein Argument und gibt
+% den Teil vor dem @ zurück.
+% \begin{macrocode}
+\newcommand*\beforeat[1]{%
+ \expandafter\csname @beforeat\expandafter\endcsname#1@\end
+}
+\expandafter\def\csname @beforeat\endcsname#1@#2\end{#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\afterat}
+% Ähnlich wie \cs{ifhasat}, übernimmt aber nur ein Argument und gibt
+% den Teil nach dem @ zurück.
+% \begin{macrocode}
+\newcommand*\afterat[1]{%
+ \ifhasat{#1}{\expandafter\csname hh@afterat\expandafter\endcsname#1\end}{}%
+}
+\expandafter\def\csname hh@afterat\endcsname#1@#2\end{#2}
+% \end{macrocode}
+% \end{macro}
+% Zurückschalten des @ auf den Wert innerhalb der Klassendefinition.
+% \begin{macrocode}
+\makeatletter
+% \end{macrocode}
+% Prefix vor Einträge, um die Sortierung korrekt zu gestalten. Siehe
+% dazu die Dokumentation zu |nomencl.sty|. Standardmäßig
+% ausgeschaltet, um |makeindex| zu ermöglichen, Zeichen einzufügen.
+% \begin{macrocode}
+\def\hhcls@gloprefix{}
+% \end{macrocode}
+% Lösche die von der Formatdatei erzeugten Glossar"=Befehle.
+% \begin{macrocode}
+\let\glossary=\@undefined
+\let\makeglossary=\@undefined
+% \end{macrocode}
+% \begin{macro}{\makeglossary}
+% Definiere einen Befehl \cs{makeglossary}, der einen neuen Typ
+% Glossar einrichtet.\sloppypar
+% Standardmäßig wird ein Glossar erzeugt, für den neue Einträge mit
+% \cs{glossary\{\meta{Eintrag}\}\{\meta{Erklärung}\}} generiert
+% werden. Dann werden die Dateien \cs{\meta{\cs{jobname}}.glo} und
+% \cs{jobname.gls} verwendet.
+% Wird ein optionales Argument mit \cs{makeglossary[\meta{Name}]}
+% übergeben, wird ein neuer Glossartyp eingerichtet, für den Einträge
+% mit dem Befehl
+% \cs{glossary\meta{Name}\{\meta{Eintrag}\}\{\meta{Erklärung}\}}
+% generiert werden. Es werden die Dateien
+% \cs{jobname.\meta{Name}} und
+% \cs{jobname.\meta{Name}s} verwendet.
+% \begin{macrocode}
+\newcommand*\makeglossary[1][\@empty]{%
+% \end{macrocode}
+% Speicher die Dateiendungen für die von \LaTeX und die von makeindex
+% erzeugten Dateien in den Makros \cs{hhcls@gloname} und
+% \cs{hhcls@\meta{Name}glsname}.
+% \begin{macrocode}
+ \edef\hhcls@gloname{glo#1}%
+ \expandafter\edef\csname hhcls@#1glsname\endcsname{gls#1}%
+% \end{macrocode}
+% Ein paar Ausgaben zur Information.
+% \begin{macrocode}
+ \typeout{^^JNew glossary type \string\glossary#1 with file
+ extensions `\hhcls@gloname' and `\csname hhcls@#1glsname\endcsname'.}%
+ \typeout{Writing glossary file `\jobname.\hhcls@gloname'.^^J}%
+% \end{macrocode}
+% Am Ende des Übersetzungslaufs wird dem Anwender mitgeteilt, wie er
+% die Glossare erzeugen kann.
+% \begin{macrocode}
+ \addglobalwarning{%
+ \typeout{^^JGenerate glossary type \string\glossary#1 by using^^J%
+ \space\space`makeindex -c -g -s bgteuglo.ist -o
+ \jobname.\csname hhcls@#1glsname\endcsname\space
+ -t \jobname.\hhcls@gloname lg \jobname.\hhcls@gloname'^^J%
+ or^^J%
+ \space\space`makeindex -c -g -s bgteuglochar.ist -o
+ \jobname.\csname hhcls@#1glsname\endcsname\space
+ -t \jobname.\hhcls@gloname lg \jobname.\hhcls@gloname'.^^J%
+ Have a look to the log file `\jobname.\hhcls@gloname lg'^^J.}%
+ }%
+% \end{macrocode}
+% Überprüfen, ob es den Befehl schon gibt, damit nicht doppelt
+% definiert wird.
+% \begin{macrocode}
+ \@ifundefined{glossary#1}{%
+% \end{macrocode}
+% \begin{macro}{\glossary}
+% Definition des Befehls, der im Text verwendet wird, also
+% \cs{glossary} oder \cs{glossary\meta{Name}}. Dieser Befehl ist
+% zerbrechlich, darf also nicht in Bildunterschriften etc.\ verwendet
+% werden. Dies ist aber keine Einschränkung, da ja im Glossar keine
+% Verweise auf Seiten oder andere Dinge gemacht werden.
+% Wird als erstes Argument ein zusätzliches optionales Arguemnt
+% angegeben, wird der Inhalt dem Eintrag statt des normalerweise
+% verwendeten "`a"' vorangestellt, um die Sortierung zu
+% beeinflussen. Ebenso ist aber auch die Verwendung von |blah@fasel|
+% wie beim Index möglich.
+% \begin{macrocode}
+ \expandafter\def\csname glossary#1\endcsname{%
+% \end{macrocode}
+% Den Ausgabekanal an \cs{@hhcls@glossary} weiterreichen.
+% \begin{macrocode}
+ \def\hhcls@tmpoutputfile{\csname hhcls@glossaryfile#1\endcsname}%
+% \end{macrocode}
+% Die eigentliche Arbeit wird von \cs{@hhcls@glossary} übernommen.
+% \begin{macrocode}
+ \protect\@hhcls@glossary
+ }%
+% \end{macrocode}
+% \end{macro}
+% Festlegen und öffnen der Ausgabedatei.
+% \begin{macrocode}
+ \expandafter\newwrite\csname hhcls@glossaryfile#1\endcsname
+ \immediate\openout\csname hhcls@glossaryfile#1\endcsname=%
+ \jobname.\hhcls@gloname%
+% \end{macrocode}
+% \begin{macro}{\glossarypreamble}
+% Definieren der Präambel des Glossars. Per Default wird ein neues,
+% unnummeriertes Kapitel mit der Überschrift
+% \cs{glossary\meta{Name}name} angefangen. Für den normalen Glossar
+% \cs{glossary} ist diese durch |babel.sty| definiert. Bei anderen
+% Glossartypen \cs{glossary\meta{Name}} muss der Anwender dies selbst
+% erledigen, indem er mit
+% \cs{newcommand}\cs{glossary\meta{Name}name\{\meta{Titel}\}} einen
+% Befehl erzeugt.
+% Der Anwender kann auch den Befehl \cs{glossary\meta{Name}preamble}
+% umdefinieren, um beispielsweise nur einen Abschnitt zu beginnen oder
+% zusätzlichen Text zu platzieren.
+% \begin{macrocode}
+ \expandafter\def\csname glossary#1preamble\endcsname{%
+ \@ifundefined{glossary#1name}{%
+% \end{macrocode}
+% Wenn \cs{glossary\meta{Name}name} nicht definiert ist, einen Fehler
+% ausgeben und \emph{\bfseries ????} als Titel verwenden.
+% \begin{macrocode}
+ \ClassError{bgteubner}{No title for glossary type `#1'
+ defined}{You have to define a title for the glossary type by
+ doing^^J%
+ \space\space\space\space%
+ \string\newcommand\string\glossary #1name{<Name>}.}%
+ \addchap{\itshape ????}%
+ }{%
+% \end{macrocode}
+% Titel als Kapitelnamen ausgeben.
+% \begin{macrocode}
+ \addchap{\csname glossary#1name\endcsname}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\printglossary}
+% Befehl \cs{printglossary\meta{Name}}, der ein automatisch erzeugtes
+% Glossar ausgibt. Wird ein optionales Argument angegeben, verändert
+% sich die Spaltenbreite der Einträge.
+% \begin{macrocode}
+ \expandafter\def\csname printglossary#1\endcsname{%
+ \@ifnextchar[%
+ {\csname @printglossary#1\endcsname}%
+ {\csname @printglossary#1\endcsname[\glossarylabelwidth]}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@printglossary}
+% Der interne Befehl, der von \cs{printglossary\meta{Name}} aufgerufen
+% wird.
+% \begin{macrocode}
+ \expandafter\def\csname @printglossary#1\endcsname[##1]{%
+ \begingroup
+% \end{macrocode}
+% Breite aus dem Argument setzen.
+% \begin{macrocode}
+ \setlength{\glossarylabelwidth}{##1}%
+% \end{macrocode}
+% Preambel umkopieren.
+% \begin{macrocode}
+ \def\hhcls@glossarypreamble{\csname glossary#1preamble\endcsname}%
+% \end{macrocode}
+% Die erzeugte Datei mit der enthaltenen |theglossary|"=Umgebung laden.
+% \begin{macrocode}
+ \@input@{\jobname.\csname hhcls@#1glsname\endcsname}%
+ \endgroup
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ }{%
+% \end{macrocode}
+% Ist der Glossartyp schon definiert, eine Fehlermeldung ausgeben.
+% \begin{macrocode}
+ \ClassError{bgteubner}{Glossary type `#1' already defined}{You
+ have tried to define the glossary type `#1' twice}}%
+}
+\@onlypreamble\makeglossary
+% \end{macrocode}
+% \end{macro}
+% Defaulteinstellung für diejenigen, die nicht mit automatisch
+% erzeugten Verzeichnissen arbeiten und direkt in den Quelltext eine
+% |theglossary|"=Umgebung schreiben.
+% \begin{macrocode}
+\def\hhcls@glossarypreamble{\addchap{\glossaryname}}%
+% \end{macrocode}
+% Ein Befehl aus dem |nomencl|"=Paket, bei dem ich nicht weiß, was er
+% genau tut. Behalte ich lieber, wie es ist.
+% \begin{macrocode}
+\def\hhcls@glo@verb{\expandafter\strip@prefix\meaning}
+% \end{macrocode}
+% Dieser Befehl stellt fest, ob ein Präfix zur Sortierung angegeben
+% wurde oder nicht.
+% \begin{macrocode}
+\def\@hhcls@glossary{%
+ \@bsphack
+ \begingroup
+ \@sanitize
+ \@ifnextchar[%
+ {\@@@hhcls@glossary}{\@@@hhcls@glossary[\hhcls@gloprefix]}%
+}%
+% \end{macrocode}
+% \begin{macro}{\@@@hhcls@glossary}
+% Das eigentliche Schreiben des Eintrags in die Ausgabedatei.
+% \begin{macrocode}
+\def\@@@hhcls@glossary[#1]#2#3{%
+ \def\@tempa{#2}\def\@tempb{#3}%
+% \end{macrocode}
+% Wenn das Argument ein @ enthält, eine andere Behandlung verwenden.
+% \begin{macrocode}
+ \ifhasat{#2}{%
+% \end{macrocode}
+% Ist ein @ enthalten, den Eintrag fast unverändert in die Ausgabedatei
+% schreiben. Es wird nur der Präfix vorgeschaltet und der Teil nach
+% dem @ in geschweifte Klammern gesetzt, um Probleme zu verhindern,
+% wenn eine eckige Klammer enthalten ist.
+% \begin{macrocode}
+ \protected@write\hhcls@tmpoutputfile{}%
+ {\string\glossaryentry{#1\beforeat{#2}@{\afterat{#2}}]
+% \hhcls@glo@verb\@tempb
+ \@tempb
+ |glossarypage}{\thepage}%
+ }%
+ }{%
+% \end{macrocode}
+% Ist kein @ enthalten, wird der Eintrag verdoppelt und mit @ in die
+% Datei geschrieben.
+% \begin{macrocode}
+ \protected@write\hhcls@tmpoutputfile{}%
+ {\string\glossaryentry{%
+ #1\@tempa @{\@tempa}]
+ \@tempb
+% #1\hhcls@glo@verb\@tempa @{\hhcls@glo@verb\@tempa}]
+% \hhcls@glo@verb\@tempb
+ |glossarypage}{\thepage}%
+ }%
+ }%
+ \endgroup
+ \@esphack}
+% \end{macrocode}
+% \end{macro}
+% Breite der Einträge in den Verzeichnissen definieren.
+% \begin{macrocode}
+\newlength{\glossarylabelwidth}
+\setlength{\glossarylabelwidth}{3em}
+% \end{macrocode}
+% Einträge linksbündig.
+% \begin{macrocode}
+\def\glossarylabel#1{#1\hfil}
+% \end{macrocode}
+% \begin{environment}{theglossary}
+% Die Umgebung, die die Ausgabe der Verzeichnisse vornimmt.
+% Im optionalen Argument kann der Defaultwert der Präambel
+% überschrieben werden. Das ist nützlich, wenn man |theglossary|
+% direkt verwendet.
+% \begin{macrocode}
+\newenvironment{theglossary}[1][\@empty]{%
+ \def\tuetel{#1}%
+ \def\tueteluet{\@empty}%
+% \end{macrocode}
+% Verzeichnisse zweispaltig setzen.
+% \begin{macrocode}
+ \begin{multicols}{2}[%
+% \end{macrocode}
+% Schriftgrößen umstellen.
+% \begin{macrocode}
+ \let\size@section\normalsize
+ \let\size@subsection\small
+ \let\size@subsubsection\small
+ \small
+% \end{macrocode}
+% Präambel ausgeben.
+% \begin{macrocode}
+ \ifx\tuetel\tueteluet
+ \hhcls@glossarypreamble
+ \else
+ #1%
+ \fi
+ ]%
+% \end{macrocode}
+% Layout innerhalb der Liste.
+% \begin{macrocode}
+ \setlength{\columnsep}{20pt}%
+ \listsfont
+% \end{macrocode}
+% Liste beginnen. Falls ein \cs{item} ohne Argument in eckigen
+% Klammern verwendet wird, einen Fehler ausgeben, denn das macht hier
+% wirklich keinen Sinn.
+% \begin{macrocode}
+ \begin{list}{\ClassError{bgteubner}{No symbol given for
+ \string\item}{In the `theglossary' environment, you have to
+ specify a symbol^^J%
+ for each \string\item\space using \string\item[<symbol>], e.g.^^J%
+ \space\space\space\space
+ \string\item[{$\string\sigma_{\string\mathrm{max}}$}] Maximal
+ stress^^J%
+ \space\space\space\space
+ \string\item[DIN] Deutsches Institut f"ur Normung}}{%
+ \setlength{\labelwidth}{\glossarylabelwidth}%
+ \leftmargin\labelwidth
+ \advance\leftmargin by \labelsep
+ \let\makelabel\glossarylabel%
+% \end{macrocode}
+% Absatzabstand nicht dehnbar, um nicht die Zeilen zu weit auseinander
+% zu ziehen.
+% \begin{macrocode}
+ \parsep\z@%
+ \parskip\z@%
+% \parsep\z@ \@plus\p@%
+% \parskip\z@ \@plus\p@%
+ \setlength{\itemsep}{0pt}%
+ \newif\ifhhclsiscorrectglossary
+ \RaggedRight
+ }%
+ }{%
+% \end{macrocode}
+% Ende der Liste.
+% \begin{macrocode}
+% \ifhhclsiscorrectglossary
+% \else
+% \ClassError{bgteubner}{You have not used the correct glossary
+% style\MessageBreak
+% `bgteuglo.ist' or `bgteuglochar.ist' for the class
+% `bgteubner.cls'}{%
+% You have to use one of the style `bgteuglo.ist' or
+% `bgteuglochar.ist'.^^J%
+% Have a look to the file \jobname.log to learn which command
+% line to use.}%
+% \fi
+ \end{list}%
+ \end{multicols}%
+ \ignorespacesafterend
+ \noindentnextpar\par
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\glossarypage}
+% Befehl, der die Seitenzahlen in den theoremartigen Verzeichnissen
+% ignoriert.
+% \begin{macrocode}
+\def\glossarypage#1{}
+\def\glossarypagedelim{}
+\def\glossarypagerange{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\glossarynewchar}
+% Zeichen für einen neuen Buchstaben im Glossar:
+% \begin{macrocode}
+\newcommand\glossarynewchar[1]{%
+ \indexspace
+ \item [\textbf{#1}]\strut
+ \@nobreaktrue\nopagebreak
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Anderer Kram}
+%
+% Testen, ob beidseitig (zu Debug"=Zwecken):
+% \begin{macrocode}
+\if@twoside
+\else
+ \ClassError{bgteubner}{One-side format chosen}{You may not print a
+ book with one-side format.}
+\fi
+% \end{macrocode}
+% \changes{1.14}{2003/12/17}{New command \cs{GetFileInfo} (from
+% \texttt{url.sty})}%
+% \begin{macro}{\GetFileInfo}
+% Get file version and date (from |doc.sty|).
+% \begin{macrocode}
+\providecommand*\GetFileInfo[1]{%
+ \def\filename{#1}%
+ \def\@tempb##1 ##2 ##3\relax##4\relax{%
+ \def\filedate{##1}%
+ \def\fileversion{##2}%
+ \def\fileinfo{##3}}%
+ \edef\@tempa{\csname ver@#1\endcsname}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\version}
+% Überprüfung, ob das Dokument mit der geforderten Version übersetzt wird:
+% \begin{macrocode}
+\newcommand*\version[1]{%
+ \begingroup
+ \GetFileInfo{bgteubner.cls}%
+ \ifx\hhcls@tmp\fileversion
+ \typeout{^^JVersion of the class `bgteubner.cls'
+ (\fileversion) is identical^^J%
+ with the wanted version.^^J}%
+ \else
+ \typeout{^^JVersion of the class `bgteubner.cls'
+ (\fileversion) differs from wanted version (#1).^^J}%
+ \addglobalwarning{\ClassWarningNoLine{bgteubner}{The version, wanted in
+ the document (#1),\MessageBreak
+ differs from the used version of the
+ `bgteubner.cls'\MessageBreak
+ class (\fileversion)}}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\frontmatter}
+% \changes{1.01}{2003/09/16}{Römische Seitenzahlen für European
+% Computer Modern in Kapitälchen statt Versalien}%
+% Buch fängt mit Seite~5 an:
+% \begin{macrocode}
+\newcommand\hhcls@frontmatter{}
+\let\hhcls@frontmatter=\frontmatter
+\renewcommand\frontmatter[1][5]{%
+ \hhcls@frontmatter
+ \ifhhcls@times
+ \pagenumbering{Roman}%
+ \else
+ \renewcommand\thepage{\textsc{\roman{page}}}%
+ \fi
+ \setcounter{page}{5}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\backmatter}
+% \cs{backmatter} ignorieren.
+% \begin{macrocode}
+\renewcommand*\backmatter{\ClassWarning{bgteubner}{The
+ \string\backmatter\space command is ignored}}
+% \end{macrocode}
+% \end{macro}
+% Dinge, die im Entwurfsmodus getan werden:
+% \begin{macrocode}
+\ifhhcls@entwurf
+% \end{macrocode}
+% Warnung am Ende, dass man nicht vergisst, den Entwurfsmodus
+% auszuschalten:
+% \begin{macrocode}
+ \addglobalwarning{%
+ \ClassWarningNoLine{bgteubner}{Leave out the class option
+ <draft>\MessageBreak
+ for the final version}%
+ }
+% \end{macrocode}
+% \begin{macro}{\now}
+% Zeit berechnen (aus time.sty):
+% \begin{macrocode}
+ \newcommand*\now{{%
+ \def\Time{3}%
+ \def\Hour{4}%
+ \def\Minute{5}%
+ \count\Time=\time\relax
+ \count\Hour=\count\Time\relax
+ \divide\count\Hour by 60\relax%%hours past midnight
+ \count\Minute=\count\Hour\relax
+ \multiply\count\Minute by -60\relax
+ \advance\count\Minute by \count\Time\relax %%minutes past hour
+ \the\count\Hour\relax:%
+ \ifnum\count\Minute<10
+ 0%
+ \fi
+ \the\count\Minute\relax
+ }}
+% \end{macrocode}
+% \end{macro}
+% Fußzeilen anpassen:
+% \begin{macrocode}
+ \ifoot[{\rmfamily \"Ubersetzt: \today, \now}]{%
+ {\rmfamily \"Ubersetzt: \today, \now}}
+% \end{macrocode}
+% Warnung bei übervollen Zeilen anschalten:
+% \begin{macrocode}
+ \overfullrule5mm
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\noindentnextpar}
+% Dieser Befehl löscht im nächsten Absatz den Absatzeinzug:
+% \begin{macrocode}
+\newcommand*\noindentnextpar{%
+ \global\everypar{%
+% \end{macrocode}
+% Einzug auf Null setzen:
+% \begin{macrocode}
+ \setbox0\lastbox
+% \end{macrocode}
+% Für die folgenden Absätze diese Einstellung wieder löschen:
+% \begin{macrocode}
+ \global\everypar{}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bigskip}
+% Befehl |\bigskip| für Abschnittswechsel so ändern, dass danach kein
+% Einzug gesetzt wird. Außerdem den Abstand anpassen:
+% \begin{macrocode}
+\newcommand\hhcls@bigskip{}
+\let\hhcls@bigskip=\bigskip
+\renewcommand\bigskip{\par\hhcls@bigskip\noindentnextpar}
+\setlength{\bigskipamount}{18.0pt plus 6.0pt minus 6.0pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\medskip}
+% Befehl |\medskip| für Abschnittswechsel so ändern, dass danach kein
+% Einzug gesetzt wird. Außerdem den Abstand anpassen:
+% \begin{macrocode}
+\newcommand*\hhcls@medskip{}
+\let\hhcls@medskip\medskip
+\renewcommand{\medskip}{\par\hhcls@medskip\noindentnextpar}
+\setlength{\medskipamount}{9.0pt plus 3.0pt minus 3.0pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\smallskip}
+% Befehl |\smallskip| für Abschnittswechsel so ändern, dass danach kein
+% Einzug gesetzt wird. Außerdem den Abstand anpassen:
+% \begin{macrocode}
+\newcommand*\hhcls@smallskip{}
+\let\hhcls@smallskip\smallskip
+\renewcommand{\smallskip}{\par\hhcls@smallskip\noindentnextpar}
+\setlength{\smallskipamount}{4.5pt plus 1.5pt minus 1.5pt}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\gliederungsfehler}
+% Fehlerausgaben in den Umgebungen, wenn Gliederungsbefehle verboten sind:
+% \begin{macrocode}
+\newcommand*\gliederungsfehler[1]{%
+ \renewcommand{\part}{\ClassError{bgteubner}{\string\part\space
+ used inside #1 environment}{%
+ Inside the #1 environment,^^J\string\part,
+ \string\addpart, \string\chapter, \string\addchap,
+ \string\section\space, and \string\subsection\space
+ ^^Jmay not be used.
+ ^^J\string\subsubsection\space and \string\paragraph\space
+ are allowed.}}%
+ \renewcommand{\addpart}{\ClassError{bgteubner}{\string\addpart\space
+ used inside #1 environment}{%
+ Inside the #1 environment,^^J\string\part,
+ \string\addpart, \string\chapter, \string\addchap,
+ \string\section\space, and \string\subsection\space
+ ^^Jmay not be used.
+ ^^J\string\subsubsection\space and \string\paragraph\space
+ are allowed.}}%
+ \renewcommand{\chapter}{\ClassError{bgteubner}{\string\chapter\space
+ used inside #1 environment}{%
+ Inside the #1 environment,^^J\string\part,
+ \string\addpart, \string\chapter, \string\addchap,
+ \string\section\space, and \string\subsection\space
+ ^^Jmay not be used.
+ ^^J\string\subsubsection\space and \string\paragraph\space
+ are allowed.}}%
+ \renewcommand{\addchap}{\ClassError{bgteubner}{\string\addchap\space
+ used inside #1 environment}{%
+ Inside the #1 environment,^^J\string\part,
+ \string\addpart, \string\chapter, \string\addchap,
+ \string\section\space, and \string\subsection\space
+ ^^Jmay not be used.
+ ^^J\string\subsubsection\space and \string\paragraph\space
+ are allowed.}}%
+ \renewcommand{\section}{\ClassError{bgteubner}{\string\section\space
+ used inside #1 environment}{%
+ Inside the #1 environment,^^J\string\part,
+ \string\addpart, \string\chapter, \string\addchap,
+ \string\section\space, and \string\subsection\space
+ ^^Jmay not be used.
+ ^^J\string\subsubsection\space and \string\paragraph\space
+ are allowed.}}%
+ \renewcommand{\subsection}{\ClassError{bgteubner}{\string\subsection\space
+ used inside #1 environment}{%
+ Inside the #1 environment,^^J\string\part,
+ \string\addpart, \string\chapter, \string\addchap,
+ \string\section\space, and \string\subsection\space
+ ^^Jmay not be used.
+ ^^J\string\subsubsection\space and \string\paragraph\space
+ are allowed.}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{hhcls@quotation}
+% Eine eigene quotation-Umgebung für interne Belange:
+% \begin{macrocode}
+\newlength{\hhcls@leftmargin}%
+\newlength{\hhcls@rightmargin}%
+\newenvironment{hhcls@quotation}[3][\@empty]{%
+ \edef\hhcls@tmpa{#1}%
+ \ifx\hhcls@tmpa\@empty
+ \setlength{\hhcls@rightmargin}{#2}%
+ \else
+ \setlength{\hhcls@rightmargin}{#1}%
+ \fi
+ \setlength{\hhcls@leftmargin}{#2}%
+ \begin{list}{}{%
+ \listparindent\parindent%
+ \itemindent0em%
+ \leftmargin\hhcls@leftmargin%
+ \rightmargin\hhcls@rightmargin
+ \parsep\z@ \@plus\p@}%
+ \begin{spacing}{#3}%
+ \item\relax
+ }{%
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{Abstände am Ende der Umgebung korrigiert}%
+% \begin{macrocode}
+ \end{spacing}%
+ \removelastskip
+ \end{list}%
+ }%
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{quotation}
+% \changes{1.10}{2003/10/30}{\texttt{quotation}"=Umgebung angepasst}%
+% \changes{1.20}{2004/03/07}{\texttt{quotation} environment with
+% correct margins}%
+% |quotation|"=Umgebung ohne Einrückung im ersten Absatz, größerer
+% Absatzeinzug.
+% \begin{macrocode}
+\renewenvironment{quotation}{%
+ \list{}{%
+ \listparindent \parindent
+ \itemindent \z@
+ \leftmargin \hhcls@leftmargin
+ \rightmargin \hhcls@rightmargin
+ \parsep \z@ \@plus\p@}%
+ \item\relax
+}{%
+ \endlist
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{quote}
+% \changes{1.20}{2004/03/07}{\texttt{quote} environment with
+% correct margins}%
+% |quote| environment with correct margins in |important| environment.
+% \begin{macrocode}
+\renewenvironment{quote}{%
+ \list{}{%
+ \leftmargin \hhcls@leftmargin
+ \rightmargin \hhcls@rightmargin
+ }%
+ \item\relax
+}{%
+ \endlist
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\setmargin}
+% Befehl zum Setzen von Einrücken bei den vielen Umgebungen:
+% \begin{macrocode}
+\newcommand*\setmargin[1]{%
+ \edef\@setmarginname{#1}%
+ \@setmargin}
+\newcommand*\@setmargin[2][\@empty]{%
+ \edef\hhcls@tmp{#1}%
+ \ifx\hhcls@tmp\@empty
+ \setlength{%
+ \expandafter\csname\@setmarginname @lmargin\endcsname}{#2}%
+ \else
+ \setlength{%
+ \expandafter\csname\@setmarginname @lmargin\endcsname}{#1}%
+ \fi
+ \setlength{%
+ \expandafter\csname\@setmarginname @rmargin\endcsname}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\leftmargin}
+% Einrückung aller eingerückten Umgebungen.
+% \changes{1.10}{2003/10/30}{Einrückung aller Umgebungen angepasst}%
+% \changes{1.09}{2003/10/28}{Einrückung aller Umgebungen erneut
+% angepasst}%
+% \begin{macrocode}
+\setlength{\leftmargini}{1.75\parindent}
+\setlength{\leftmargin}{\leftmargini}
+\setlength{\hhcls@leftmargin}{\leftmargini}
+\setlength{\labelwidth}{\leftmargini}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Advanced"=Umgebung}
+%
+% Einzüge, standardmäßig links und rechts auf |\leftmargin|:
+% \begin{macrocode}
+\newlength{\advanced@lmargin}
+\newlength{\advanced@rmargin}
+\setmargin{advanced}{\leftmargini}
+% \end{macrocode}
+% \begin{macro}{\advancedfont}
+% Schriftart innerhalb der advanced"=Umgebung:
+% \begin{macrocode}
+\newcommand\advancedfont{\footnotesize}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\advancedspacing}
+% Zeilenabstand innerhalb advanced"=Umgebung:
+% \begin{macrocode}
+\ifhhcls@times
+ \newcommand\advancedspacing{1.18}
+\else
+ \newcommand\advancedspacing{1.12}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\advancednamefont}
+% \begin{macro}{\noadvancedname}
+% \begin{macro}{\advancedname}
+% Name der Umgebung, falls nicht definiert, wird nichts angezeigt:
+% \begin{macrocode}
+\newcommand*\advancednamefont{\bfseries%
+ \iftensor@bold\else\mathversion{bold}\fi}
+\newcommand*\noadvancedname{\gdef\advancedname{}}
+\noadvancedname
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{environment}{advanced}
+% Definition der Advanced"=Umgebung:
+% \begin{macrocode}
+\newenvironment{advanced}{%
+% \end{macrocode}
+% Kapitel"= und Abschnittsüberschriften bis |\subsection| verbieten:
+% \begin{macrocode}
+ \gliederungsfehler{advanced}%
+% \end{macrocode}
+% Schriftarten für kleine Abschnittsüberschriften festlegen:
+% \begin{macrocode}
+ \let\size@subsubsection\advancedfont
+ \let\size@paragraph\advancedfont
+ \let\size@subparagraph\advancedfont
+% \end{macrocode}
+% Die eigentliche Umgebung starten:
+% \begin{macrocode}
+% \bigskip
+ \begin{hhcls@quotation}[\advanced@rmargin]{\advanced@lmargin}{%
+ \advancedspacing}%
+% \end{macrocode}
+% Schriftart in der Advanced"=Umgebung
+% \begin{macrocode}
+ \advancedfont
+% \end{macrocode}
+% Falls vorhanden, die Inline"=Überschrift anzeigen:
+% \begin{macrocode}
+ \ifx\advancedname\empty
+ \else
+ {\advancednamefont\advancedname}~%
+ \fi
+% \end{macrocode}
+% Leerzeichen am Anfang ignorieren:
+% \begin{macrocode}
+ \ignorespaces
+ }{%
+% \end{macrocode}
+% Ende der Umgebung:
+% \begin{macrocode}
+ \end{hhcls@quotation}%
+% \bigskip
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken. Damit das funktioniert, muss die
+% |hhcls@quotation|"=Umgebung zwingend mit
+% \cs{begin\{hhcls@quotation\}}\ldots\cs{end\{hhcls@quotation\}}
+% aufgerufen werden, da sonst die Änderung lokal bleibt.
+% \begin{macrocode}
+ \noindentnextpar\par
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \section{Beliebige theoremartige Umgebungen}
+%
+% \changes{1.10}{2003/10/30}{Schriftgröße in theoremartigen Umgebungen
+% einstellbar}%
+% Sollen Theoreme kleine oder normale Schrift haben?
+% \begin{macrocode}
+\ifhhcls@theoremsmall
+% \end{macrocode}
+% \begin{macro}{\theoremfont}
+% Schriftgröße in Theoremen, einheitlich:
+% \begin{macrocode}
+ \def\theoremfont{\small}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\theoremspacing}
+% Zeilenabstand innerhalb der Theoreme, einheitlich:
+% \begin{macrocode}
+ \ifhhcls@times
+ \newcommand\theoremspacing{1.12}
+ \else
+ \newcommand\theoremspacing{1.06}
+ \fi
+\else
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\theoremfont}
+% Schriftgröße in Theoremen, einheitlich:
+% \begin{macrocode}
+ \def\theoremfont{\normalsize}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\theoremspacing}
+% Zeilenabstand innerhalb der Theoreme, einheitlich:
+% \begin{macrocode}
+ \newcommand\theoremspacing{1.0}
+\fi
+% \end{macrocode}
+% \end{macro}
+% Einzug der Theoreme links und rechts, einheitlich:
+% \changes{1.13}{2003/12/16}{Use variable margins for theorem-like
+% environments}%
+% \begin{macrocode}
+\newlength{\theorem@lmargin}
+\newlength{\theorem@rmargin}
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{Einrückung der Theoremüberschriften
+% automatisch erhöhen, fall nötig}%
+% Einrückung der Theoremsüberschrift.
+% Die unterschiedlichen Maße sind nötig, um die Einrückung automatisch
+% erhöhen zu können, falls eine Überschrift zu lang ist.
+% \cs{theorem@indent@min} ist das Minimalmaß und der Default,
+% \cs{theorem@indent} ist die aktuell verwendete Länge, und
+% \cs{theorem@indent@max} ist die maximal auftretende Breite.
+% \begin{macrocode}
+\newlength{\theorem@indent@min}
+\setlength{\theorem@indent@min}{7.8398em}
+\newlength{\theorem@indent}
+\setlength{\theorem@indent}{\theorem@indent@min}
+\newlength{\theorem@indent@max}
+% \end{macrocode}
+% Nach dem Übersetzungslauf wird kontrolliert, ob eine
+% Theoremsüberschrift zu lang war, so dass beim nächsten Lauf die
+% korrekte Länge verwendet werden kann.
+% \begin{macrocode}
+\AtEndDocument{%
+% \end{macrocode}
+% Die maximal auftretende Breite ist größer als das definierte
+% Minimum.
+% \begin{macrocode}
+ \ifdim\theorem@indent@max>\theorem@indent@min
+% \end{macrocode}
+% Im nächsten Lauf muss dann die aktuell größte Breite verwendet
+% werden.
+% \begin{macrocode}
+ \immediate\write\@auxout{%
+ \string\global\string\theorem@indent=\the\theorem@indent@max}%
+% \end{macrocode}
+% Die größte Breite ist größer als der aktuell verwendete Wert.
+% Die Breite hat sich also erhöht $\longrightarrow$ Warnung.
+% \begin{macrocode}
+ \ifdim\theorem@indent@max>\theorem@indent
+ \addglobalwarning{%
+ \ClassWarningNoLine{bgteubner}{Indentation for theorem
+ titles has been increased.\MessageBreak
+ Rerun to adjust the indentation}%
+ }%
+ \else
+% \end{macrocode}
+% Die größte Breite ist kleiner als der aktuell verwendete Wert.
+% Die Breite hat sich also verringert $\longrightarrow$ Warnung.
+% \begin{macrocode}
+ \ifdim\theorem@indent@max<\theorem@indent
+ \addglobalwarning{%
+ \ClassWarningNoLine{bgteubner}{Indentation for theorem
+ titles has been decreased.\MessageBreak
+ Rerun to adjust the indentation}%
+ }%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% Die größte Breite ist kleiner als das Minimum.
+% Zusätzlich ist der aktuell verwendete Wert aber noch größer.
+% Die Breite hat sich also verringert $\longrightarrow$ Warnung.
+% \begin{macrocode}
+ \ifdim\theorem@indent>\theorem@indent@min
+ \addglobalwarning{%
+ \ClassWarningNoLine{bgteubner}{Indentation for theorem
+ titles has been decreased.\MessageBreak
+ Rerun to adjust the indentation}%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\float@addtolists}
+% \begin{macro}{\hhcls@theoremlist}
+% Dieser Befehl wird vom \cs{chapter}"=Befehl aufgerufen, wenn
+% ein neues Kapitel begonnen wird.
+% Dadurch soll in allen Verzeichnissen der Theoremumgebungen ein
+% Zwischenraum eingefügt werden.
+% Der Umweg mit \cs{hhcls@theoremskip} wird gewählt, weil
+% \cs{float@addtolists} ein Argument besitzt, die Definition der Liste
+% \cs{hhcls@theoremlist} nur ohne Argumente funktioniert.
+% \begin{macrocode}
+\newcommand\float@addtolists[1]{%
+ \def\hhcls@theoremskip{#1}%
+ \hhcls@theoremlist}
+\newcommand\hhcls@theoremlist{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\hhcls@theoremzahl}
+% Funktion, die am Ende die Anzahl des Auftretens der einzelnen
+% Theorem"=Umgebungen in die PDF"=Datei schreibt:
+% \begin{macrocode}
+\newcommand\hhcls@theoremanzahl{}
+\newsavebox{\hhcls@@@theoremtitlewidth}
+% \end{macrocode}
+% \end{macro}
+% Boolean, ob Theoremumgebung mit Sternvariante aufgerufen wird.
+% \begin{macrocode}
+\newif\iftheorem@starvariant
+% \end{macrocode}
+% \begin{macro}{\newtheorem}
+% Befehl zum Einrichten beliebiger Theoreme, z.\,B.\ von Beispielen,
+% Sätzen usw. Erster Parameter: Name der Umgebung; zweiter Parameter:
+% Gedruckter Präfix zur Nummer.
+% \begin{macrocode}
+\def\newtheorem#1#2{%
+% Name des Theorems in der Überschrift:
+% \begin{macrocode}
+ \expandafter\def\csname theorem@#1name\endcsname{#2}%
+% \end{macrocode}
+% \changes{1.13}{2003/12/16}{Make delimiter for theorems configurable}%
+% Postfix (colon) after theorem name and number:
+% \begin{macrocode}
+ \expandafter\def\csname theorem@#1postfix\endcsname{:}%
+% \end{macrocode}
+% Set margins.
+% \begin{macrocode}
+ \expandafter\newlength\expandafter{\csname theorem@#1@lmargin\endcsname}%
+ \expandafter\newlength\expandafter{\csname theorem@#1@rmargin\endcsname}%
+ \setmargin{theorem@#1}{\leftmargini}%
+% \end{macrocode}
+% Zähler dieser Theoremart:
+% \begin{macrocode}
+ \newcounter{theorem@#1}[chapter]%
+% \end{macrocode}
+% Zählen der Anzahl des Auftretens:
+% \begin{macrocode}
+ \newcounter{theorem@#1zahl}%
+% \end{macrocode}
+% Zählen der Anzahl des Auftretens:
+% \begin{macrocode}
+ \g@addto@macro\hhcls@theoremanzahl{%
+ ; #2: \csname thetheorem@#1zahl\endcsname}%
+% \end{macrocode}
+% Labelformat: "`Kapitel.Theorem"':
+% \begin{macrocode}
+ \expandafter\def\csname thetheorem@#1\endcsname{%
+ \thechapter.\@arabic\csname c@theorem@#1\endcsname}%
+% \end{macrocode}
+% Befehl für die Theoremüberschrift:
+% \begin{macrocode}
+ \expandafter\def\csname theorem@#1title\endcsname##1{%
+% \end{macrocode}
+% Zähler anpassen.
+% \begin{macrocode}
+ \iftheorem@starvariant
+ \else
+ \refstepcounter{theorem@#1}%
+ \fi
+% \end{macrocode}
+% Überschrift erzeugen.
+% \begin{macrocode}
+ {%
+ \raggedsection\normalfont\normalsize\sectfont\nobreak
+% \end{macrocode}
+% \changes{1.13}{2003/12/16}{Make delimiter for theorems configurable}%
+% Den Anfang der Überschrift in eine Box speichern.
+% \begin{macrocode}
+ \savebox{\hhcls@@@theoremtitlewidth}{%
+ \csname theorem@#1name\endcsname%
+ \iftheorem@starvariant
+ \else
+ ~\csname thetheorem@#1\endcsname
+ \fi
+ \csname theorem@#1postfix\endcsname~}%
+% \end{macrocode}
+% Prüfen, ob die aktuelle Überschrift breiter als alle vorherigen ist.
+% \begin{macrocode}
+ \settowidth{\@tempdima}{\usebox{\hhcls@@@theoremtitlewidth}}%
+ \ifdim\@tempdima>\theorem@indent@max
+ \global\theorem@indent@max=\@tempdima
+ \fi
+% \end{macrocode}
+% Überschrift ausgeben.
+% \changes{1.20}{2004/03/07}{Avoid page break after title in
+% theorem-like enverionment}%
+% \changes{1.30}{2004/04/10}{Improve spacing after title of
+% theorem-like environment}%
+% \begin{macrocode}
+ \normalfont\normalsize\sectfont
+ \makebox[\theorem@indent][l]{\usebox{\hhcls@@@theoremtitlewidth}}%
+ \setlength\@tempdima{1pt}%
+ \settoheight\@tempdimb{D}%
+ \addtolength\@tempdima{\@tempdimb}%
+ \settoheight\@tempdimb{\theoremfont D}%
+ \addtolength\@tempdima{-\@tempdimb}%
+ ##1\nobreak\par\nobreak\vspace{\@tempdima}\nobreak}\nobreak
+ \@afterheading}%
+% \end{macrocode}
+% Dieser Befehl wird von \cs{chapter} aufgerufen, um in der
+% Liste der Theoreme einen Platz einzufügen.
+% \begin{macrocode}
+ \g@addto@macro\hhcls@theoremlist{%
+ \addtocontents{#1}{\hhcls@theoremskip}%
+ }%
+% \end{macrocode}
+% Den Startbefehl der Sternvariante (unnummeriert) definieren:
+% \begin{macrocode}
+ \expandafter\def\csname #1*\endcsname{%
+% \end{macrocode}
+% Schalter anschalten.
+% \begin{macrocode}
+ \theorem@starvarianttrue
+% \end{macrocode}
+% Jetzt die Theorem"=Umgebung aufrufen:
+% \begin{macrocode}
+ \csname #1\endcsname
+ }%
+% \end{macrocode}
+% Ende der Sternvariante:
+% \begin{macrocode}
+ \expandafter\def\csname end#1*\endcsname{\csname end#1\endcsname}%
+% \end{macrocode}
+% Den Startbefehl der eigentlichen Umgebung definieren:
+% \begin{macrocode}
+ \expandafter\def\csname #1\endcsname{%
+ \@ifnextchar[{%
+ \csname hhcls@@#1\endcsname
+ }{%
+ \csname hhcls@@#1\endcsname[\empty]%
+ }}%
+% \end{macrocode}
+% Initialisierung durchführen:
+% \begin{macrocode}
+ \expandafter\def\csname hhcls@@#1\endcsname[##1]{%
+% \end{macrocode}
+% \changes{1.13}{2003/12/16}{Use variable margins for theorem-like
+% environments}%
+% Set margins.
+% \begin{macrocode}
+ \setlength{\theorem@lmargin}{\csname theorem@#1@lmargin\endcsname}%
+ \setlength{\theorem@rmargin}{\csname theorem@#1@rmargin\endcsname}%
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Reintroduce lost adaption of margins for
+% theorem-like environments inside important environment}%
+% Set margins.
+% \begin{macrocode}
+ \ifhhcls@inimportant
+ \addtolengthminzero{\theorem@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\theorem@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\theorem@indent}{-\fboxsep}%
+ \fi
+% \end{macrocode}
+% Zur Sicherheit einen Absatz (z.\,B.\ damit im vorherigen Absatz die
+% Zeilenabstände korrekt bleiben).
+% \begin{macrocode}
+ \par
+% \end{macrocode}
+% Die eigentliche Umgebung starten:
+% \begin{macrocode}
+ \begin{list}{}{%
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{Linker Abstand eingestellt}%
+% Abstände einstellen.
+% \begin{macrocode}
+ \topsep 8\p@ \@plus2\p@ \@minus4\p@
+ \itemindent-\theorem@lmargin
+ \listparindent\parindent
+ \leftmargin\theorem@lmargin
+ \rightmargin\theorem@rmargin
+ \parsep\z@ \@plus\p@
+% \end{macrocode}
+% Anzahl zählen:
+% \begin{macrocode}
+ \stepcounter{theorem@#1zahl}%
+% \end{macrocode}
+% Gliederungsbefehle ausschalten
+% \begin{macrocode}
+ \gliederungsfehler{#1}%
+% \end{macrocode}
+% Schriftart einstellen:
+% \begin{macrocode}
+ \let\size@subsubsection\theoremfont
+ \let\size@paragraph\theoremfont
+ \let\size@subparagraph\theoremfont
+% \end{macrocode}
+% Schriftart:
+% \begin{macrocode}
+ \theoremfont
+ }%
+% \end{macrocode}
+% Zeilenabstand anpassen.
+% \begin{macrocode}
+ \begin{spacing}{\theoremspacing}%
+% \end{macrocode}
+% Eine List"=Umgebung fängt immer mit \cs{item} an.
+% \begin{macrocode}
+ \item\relax
+% \end{macrocode}
+% Überschrift.
+% \begin{macrocode}
+ \csname theorem@#1title\endcsname{##1}\nobreak%
+% \end{macrocode}
+% Eintrag in das Verzeichnis der Sätze schreiben (aber nur, wenn
+% das Theorem benannt ist):
+% \begin{macrocode}
+ \edef\hhtmp{##1}%
+ \ifx\hhtmp\empty
+ \else
+ \iftheorem@starvariant
+ \addcontentsline{#1}{#1}{##1}%
+ \else
+ \addcontentsline{#1}{#1}{%
+ \protect\numberline {\csname thetheorem@#1\endcsname}##1}%
+ \fi
+ \fi
+% \end{macrocode}
+% Leerzeichen am Anfang ignorieren:
+% \begin{macrocode}
+ \nobreak\ignorespaces
+ }%
+% \end{macrocode}
+% Ende der Umgebung:
+% \begin{macrocode}
+ \expandafter\def\csname end#1\endcsname{%
+% \end{macrocode}
+% Ende der Umgebung:
+% \changes{1.10}{2003/10/30}{Abstände am Ende der Umgebung korrigiert}%
+% \begin{macrocode}
+ \end{spacing}%
+ \removelastskip
+ \end{list}%
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar
+ \par
+ }%
+% \end{macrocode}
+% Erzeugen einer Liste der Satze:
+% \begin{macrocode}
+ \expandafter\def\csname l@#1\endcsname{\@dottedtocline{1}{0em}{2.9em}}%
+% \end{macrocode}
+% \begin{macrocode}
+ \addglobalwarning{%
+ \typeout{#2: \csname thetheorem@#1zahl\endcsname\space times used}%
+ }
+% \end{macrocode}
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\listoftheorems}
+% \begin{macrocode}
+\@ifundefined{BeforeStartingTOC}{%
+ \ClassWarningNoLine{bgteubner}{Koma-Script macro
+ \string\BeforeStartingTOC\space not defined.\MessageBreak
+ Using workaround for \string\listoftheorems.\MessageBreak
+ You should consider updating Koma-Script}%
+ \newcommand*\listoftheorems[2]{%
+ \begingroup%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \float@listhead{#2}%
+ \small
+ \setlength{\parskip}{\z@}%
+ \@starttoc{#1}%
+ \if@restonecol\twocolumn\fi
+ \endgroup
+ }
+}{%
+ \newcommand*\listoftheorems[2]{%
+ \expandafter\def\csname listof#1name\endcsname{#2}%
+ \BeforeStartingTOC[#1]{\small}%
+ \listoftoc{#1}%
+ }
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{theoremdelimiter}
+% \changes{1.13}{2003/12/16}{Make delimiter for theorems configurable}%
+% This environment takes two arguments, the first is the name of the
+% theorem-like environment that shall get another delimiter after the
+% number.
+% The second argument is the new delimiter that is valid inside the
+% environment.
+% \begin{macrocode}
+\newenvironment{theoremdelimiter}[2]{%
+ \expandafter\def\csname theorem@#1postfix\endcsname{#2}%
+ \ignorespaces
+}{%
+ \ignorespacesafterend
+}%
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\settheoremmargin}
+% \changes{1.13}{2003/12/16}{Use variable margins for theorem-like
+% environments}%
+% Befehl zum Setzen von Einrücken theoremartiger Umgebungen:
+% \begin{macrocode}
+\newcommand*\settheoremmargin[1]{%
+ \edef\@setmarginname{#1}%
+ \@settheoremmargin}
+\newcommand*\@settheoremmargin[2][\@empty]{%
+ \edef\hhcls@tmp{#1}%
+ \ifx\hhcls@tmp\@empty
+ \setlength{%
+ \expandafter\csname theorem@\@setmarginname @lmargin\endcsname}{#2}%
+ \else
+ \setlength{%
+ \expandafter\csname theorem@\@setmarginname @lmargin\endcsname}{#1}%
+ \fi
+ \setlength{%
+ \expandafter\csname theorem@\@setmarginname @rmargin\endcsname}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Beispiele}
+%
+% \begin{environment}{example}
+% Beispiel"=Umgebung einrichten:
+% \begin{macrocode}
+\newtheorem{example}{\examplename}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\listofexamples}
+% Verzeichnis der Beispiele:
+% \begin{macrocode}
+\newcommand*\listofexamples{\listoftheorems{example}{\listexamplename}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\examplename}
+% \begin{macro}{\listexamplename}
+% Überschriften für Beispiele und deren Verzeichnisse:
+% \begin{macrocode}
+\newcommand*\examplename{}
+\newcommand*\listexamplename{}
+\addto\captionsgerman{%
+ \renewcommand*\examplename{Beispiel}%
+ \renewcommand*\listexamplename{Verzeichnis der Beispiele}%
+}
+\addto\captionsngerman{%
+ \renewcommand*\examplename{Beispiel}%
+ \renewcommand*\listexamplename{Verzeichnis der Beispiele}%
+}
+\addto\captionsaustrian{%
+ \renewcommand*\examplename{Beispiel}%
+ \renewcommand*\listexamplename{Verzeichnis der Beispiele}%
+}
+\addto\captionsnaustrian{%
+ \renewcommand*\examplename{Beispiel}%
+ \renewcommand*\listexamplename{Verzeichnis der Beispiele}%
+}
+\addto\captionsenglish{%
+ \renewcommand*\examplename{Example}%
+ \renewcommand*\listexamplename{List of Examples}%
+}
+\addto\captionsamerican{%
+ \renewcommand*\examplename{Example}%
+ \renewcommand*\listexamplename{List of Examples}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Definitionen}
+%
+% \begin{environment}{definition}
+% Definition"=Umgebung einrichten:
+% \begin{macrocode}
+\newtheorem{definition}{\definitionname}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\listofdefinitions}
+% Verzeichnis der Definitionen:
+% \begin{macrocode}
+\newcommand*\listofdefinitions{%
+ \listoftheorems{definition}{\listdefinitionname}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\definitionname}
+% \begin{macro}{\listdefinitionname}
+% Überschriften für Definitionen und deren Verzeichnisse:
+% \begin{macrocode}
+\newcommand*\definitionname{}
+\newcommand*\listdefinitionname{}
+\addto\captionsgerman{%
+ \renewcommand*\definitionname{Definition}%
+ \renewcommand*\listdefinitionname{Verzeichnis der Definitionen}%
+}
+\addto\captionsngerman{%
+ \renewcommand*\definitionname{Definition}%
+ \renewcommand*\listdefinitionname{Verzeichnis der Definitionen}%
+}
+\addto\captionsaustrian{%
+ \renewcommand*\definitionname{Definition}%
+ \renewcommand*\listdefinitionname{Verzeichnis der Definitionen}%
+}
+\addto\captionsnaustrian{%
+ \renewcommand*\definitionname{Definition}%
+ \renewcommand*\listdefinitionname{Verzeichnis der Definitionen}%
+}
+\addto\captionsenglish{%
+ \renewcommand*\definitionname{Definition}%
+ \renewcommand*\listdefinitionname{List of Definitions}%
+}
+\addto\captionsamerican{%
+ \renewcommand*\definitionname{Definition}%
+ \renewcommand*\listdefinitionname{List of Definitions}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Beweise}
+%
+% \begin{environment}{proof}
+% Beweis"=Umgebung einrichten:
+% \begin{macrocode}
+\newtheorem{proof}{\proofname}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\listofproofs}
+% Verzeichnis der Beweise:
+% \begin{macrocode}
+\newcommand*\listofproofs{\listoftheorems{proof}{\listproofname}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\proofname}
+% \begin{macro}{\listproofname}
+% Überschriften für Beweise und deren Verzeichnisse:
+% \begin{macrocode}
+\newcommand*\proofname{}
+\newcommand*\listproofname{}
+\addto\captionsgerman{%
+ \renewcommand*\proofname{Beweis}%
+ \renewcommand*\listproofname{Verzeichnis der Beweise}%
+}
+\addto\captionsngerman{%
+ \renewcommand*\proofname{Beweis}%
+ \renewcommand*\listproofname{Verzeichnis der Beweise}%
+}
+\addto\captionsaustrian{%
+ \renewcommand*\proofname{Beweis}%
+ \renewcommand*\listproofname{Verzeichnis der Beweise}%
+}
+\addto\captionsnaustrian{%
+ \renewcommand*\proofname{Beweis}%
+ \renewcommand*\listproofname{Verzeichnis der Beweise}%
+}
+\addto\captionsenglish{%
+ \renewcommand*\proofname{Proof}%
+ \renewcommand*\listproofname{List of Proofs}%
+}
+\addto\captionsamerican{%
+ \renewcommand*\proofname{Proof}%
+ \renewcommand*\listproofname{List of Proofs}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Grau schattierte Kiste für Formeln}
+%
+% \changes{1.13}{2003/12/16}{Avoid negative margins of theorems}%
+% \begin{macro}{\addtolengthminzero}
+% This command acts like \cs{addtolength} but don't set a length
+% smaller than zero.
+% \begin{macrocode}
+\newcommand*\addtolengthminzero[2]{%
+ \addtolength{#1}{#2}%
+ \ifdim#1<0pt
+ \setlength{#1}{0pt}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Boolean zur Entscheidung, ob die |important|- oder die
+% |important*|"=Umgebung verwendet wird.
+% \begin{macrocode}
+\newif\ifhhcls@importantmath
+\newif\ifhhcls@inimportant
+% \end{macrocode}
+% Graue Kästen an?
+% \begin{macrocode}
+\ifhhcls@greybox
+% \end{macrocode}
+% Savebox, in die der Inhalt der |important|- und
+% |important*|"=Umgebungen zwischengespeichert wird.
+% \begin{macrocode}
+ \newsavebox{\hhcls@@@important}
+% \end{macrocode}
+% Länge, um den Absatzeinzug in die Kästen rüberretten zu können.
+% \begin{macrocode}
+ \newlength{\hhcls@important@parindent}
+% \end{macrocode}
+% Farbe des Hintergrunds.
+% \begin{macrocode}
+ \definecolor{importantcolor}{gray}{0.9}
+% \end{macrocode}
+% Fußnotenkram, um innerhalb der |important|- und der
+% |important*|"=Umgebung Fußnoten verwenden zu können.
+% Innerhalb der Umgebung wird beim Auftreten des
+% \cs{footnote}"=Befehls der Inhalt in einen Befehl gespeichert und
+% nach der Minipage ausgegeben.
+% Lokal wird ein \cs{footnotemark} gesetzt.
+% \begin{macrocode}
+ \newcounter{hhcls@savefootnote}
+% \end{macrocode}
+% \begin{macro}{\addfnmark}
+% Befehl, der den Fußnotentext in eine Liste im Befehl
+% \cs{hhcls@fnlist} speichert, die am Ende der Umgebungen ausgegeben
+% wird.
+% \begin{macrocode}
+ \newcommand\addfnmark[2][\@empty]{%
+ \begingroup
+ \edef\hhcls@temp{#1}%
+ \ifx\hhcls@temp\@empty
+ \g@addto@macro\hhcls@fnlist{%
+ \stepcounter{hhcls@savefootnote}%
+ \footnotetext[\thehhcls@savefootnote]{#2}%
+ }%
+ \else
+ \g@addto@macro\hhcls@fnlist{\footnotetext[#1]{#2}}%
+ \fi
+ \endgroup
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\hhcls@important@footnote}
+% Fußnotenbefehl, der in den Umgebungen auf \cs{footnote} umkopiert
+% werden wird.
+% \begin{macrocode}
+ \newcommand\hhcls@important@footnote[2][\@empty]{%
+ \begingroup
+ \edef\hhcls@temp{#1}%
+ \ifx\hhcls@temp\@empty
+ \footnotemark
+ \else
+ \footnotemark[#1]%
+ \fi
+ \addfnmark[#1]{#2}%
+ \endgroup
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{important}
+% Graue Kiste, die mit Text anfängt:
+% \begin{macrocode}
+ \newenvironment{important}{%
+% \end{macrocode}
+% Set boolean that we are inside important now.
+% \begin{macrocode}
+ \hhcls@inimportanttrue
+% \end{macrocode}
+% Längen setzen.
+% \changes{1.10}{2003/10/30}{Theoremeinzüge in grauen Kästen
+% reduzieren}%
+% \changes{1.13}{2003/12/16}{Avoid negative margins of theorems in
+% grey boxes}%
+% \changes{1.13}{2003/12/16}{Reduce margins of advanced and
+% execercises in grey boxes}%
+% \changes{1.20}{2004/03/07}{Add some margin adjustments to important
+% environment}%
+% \begin{macrocode}
+ \setlength{\fboxsep}{0.5\parindent}%
+ \addtolengthminzero{\mathindent}{-\fboxsep}%
+ \addtolengthminzero{\theorem@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\theorem@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\advanced@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\advanced@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\subexercise@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\subexercise@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@@subexerciseindent}{-\fboxsep}%
+ \addtolengthminzero{\answer@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\answer@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@@answerindent}{-\fboxsep}%
+ \addtolengthminzero{\subanswer@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\subanswer@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@@subanswerindent}{-\fboxsep}%
+ \addtolengthminzero{\leftmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@leftmargin}{-\fboxsep}%
+ \setlength{\hhcls@important@parindent}{\parindent}%
+% \end{macrocode}
+% Zunächst einen Absatz und entsprechenden Abstand einfügen.
+% \changes{1.10}{2003/10/30}{Abstände am Anfang der Umgebung korrigiert}%
+% \begin{macrocode}
+ \removelastskip
+ \par
+ \vskip\topsep
+% \end{macrocode}
+% Fußnoten initialisieren.
+% \begin{macrocode}
+ \gdef\hhcls@fnlist{}%
+ \setcounter{hhcls@savefootnote}{\value{footnote}}%
+ \let\mpfootnote=\footnote
+ \let\footnote\hhcls@important@footnote%
+% \end{macrocode}
+% |figure|- und |table|"=Umgebung sowie \cs{marginpar}"=Befehl
+% abfangen, da sie nicht funktionieren.
+% \begin{macrocode}
+ \let\hhcls@important@figure=\figure
+ \renewcommand\figure{%
+ \ClassError{bgteubner}{%
+ figure environment used inside
+ important\ifhhcls@importantmath *\fi\space environment}{%
+ Inside the important\ifhhcls@importantmath *\fi\space
+ environment, floats cannot be used.}%
+ \hhcls@important@figure}%
+ \let\hhcls@important@table=\table
+ \renewcommand\table{%
+ \ClassError{bgteubner}{%
+ table environment used inside
+ important\ifhhcls@importantmath *\fi\space environment}{%
+ Inside the important\ifhhcls@importantmath *\fi\space
+ environment, floats cannot be used.}%
+ \hhcls@important@table}%
+ \let\hhcls@important@marginpar=\marginpar
+ \renewcommand\marginpar{%
+ \ClassError{bgteubner}{%
+ \string\marginpar\space used inside
+ important\ifhhcls@importantmath *\fi\space environment}{%
+ Inside the important\ifhhcls@importantmath *\fi\space
+ environment, floats cannot be used.}%
+ \hhcls@important@marginpar}%
+% \end{macrocode}
+% Den Inhalt der Umgebung erstmal in die Box \cs{hhcls@@@important}
+% zwischenspeichern.
+% \begin{macrocode}
+ \begin{lrbox}{\hhcls@@@important}%
+ \setlength\@tempdima{\linewidth}%
+ \addtolength\@tempdima{-2\fboxsep}%
+ \begin{minipage}{\@tempdima}%
+% \end{macrocode}
+% Falls die Sternvariante gewählt wurde, den oberen Abstand verringern.
+% \begin{macrocode}
+ \ifhhcls@importantmath
+ \vspace{-\abovedisplayskip}%
+ \fi
+% \end{macrocode}
+% Absatzeinzug restaurieren, erster Absatz ohne Einzug.
+% \changes{1.21}{2004/03/25}{Reduce skip when \texttt{important}
+% environment starts with a theorem-like environment}%
+% \begin{macrocode}
+ \setlength{\parindent}{\hhcls@important@parindent}%
+ \noindent
+ \@setminipage
+ \ignorespaces
+ }{%
+% \end{macrocode}
+% Ende der Umgebung.
+% \begin{macrocode}
+ \par\unskip
+ \end{minipage}%
+ \end{lrbox}%
+% \end{macrocode}
+% Jetzt wird der Inhalt der Umgebung in eine Kiste gesetzt.
+% Die graue Kiste soll nicht eingerückt werden.
+% \begin{macrocode}
+ \noindent
+% \end{macrocode}
+% Jetzt wird der Inhalt wirklich gesetzt.
+% \changes{1.10}{2003/10/30}{Breite korrigiert, wenn nur eine
+% theoremartige Umgebung gesetzt wird}%
+% \begin{macrocode}
+ \colorbox{importantcolor}{%
+ \setlength\@tempdima{\linewidth}%
+ \addtolength\@tempdima{-2\fboxsep}%
+ \begin{minipage}{\@tempdima}%
+ \usebox{\hhcls@@@important}%
+ \end{minipage}%
+ }%
+% \end{macrocode}
+% Jetzt die Fußnoten setzen, falls welche aufgetreten sind.
+% \begin{macrocode}
+ \hhcls@fnlist
+% \end{macrocode}
+% Unterer Abstand und Absatzeinzug verhindern, falls kein weiterer
+% Absatz im Quelltext folgt.
+% \begin{macrocode}
+ \vskip\topsep
+ \noindentnextpar
+ \par
+ \ignorespacesafterend
+ }
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{important*}
+% Sternvariante für Kästen, die mit einer abgesetzten Formel beginnen.
+% Der normalen Variante wird übergeben, dass sie oben Platz klauen
+% soll, und dann aufgerufen.
+% \begin{macrocode}
+ \newenvironment{important*}{%
+ \hhcls@importantmathtrue
+ \begin{important}%
+ }{%
+ \end{important}%
+ \ignorespacesafterend}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{longimportant}
+% Variante für lange Kästen, die über Seiten umbrochen werden können.
+% Sollte möglichst wenig verwendet werden.
+% \begin{macrocode}
+ \newenvironment{longimportant}{%
+% \end{macrocode}
+% Set boolean that we are inside important now.
+% \begin{macrocode}
+ \hhcls@inimportanttrue
+% \end{macrocode}
+% \changes{1.10}{2003/10/30}{Theoremeinzüge in grauen Kästen
+% reduzieren}%
+% Längen setzen.
+% \changes{1.13}{2003/12/16}{Avoid negative margins of theorems in
+% grey boxes}%
+% \changes{1.13}{2003/12/16}{Reduce margins of advanced and
+% execercises in grey boxes}%
+% \changes{1.20}{2004/03/07}{Add some margin adjustments to longimportant
+% environment}%
+% \begin{macrocode}
+ \setlength{\fboxsep}{0.5\parindent}%
+ \addtolengthminzero{\mathindent}{-\fboxsep}%
+ \addtolengthminzero{\theorem@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\theorem@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\advanced@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\advanced@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\subexercise@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\subexercise@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@@subexerciseindent}{-\fboxsep}%
+ \addtolengthminzero{\answer@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\answer@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@@answerindent}{-\fboxsep}%
+ \addtolengthminzero{\subanswer@lmargin}{-\fboxsep}%
+ \addtolengthminzero{\subanswer@rmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@@subanswerindent}{-\fboxsep}%
+ \addtolengthminzero{\leftmargin}{-\fboxsep}%
+ \addtolengthminzero{\hhcls@leftmargin}{-\fboxsep}%
+% \end{macrocode}
+% Befehl zum Erzeugen des Hintergrunds festlegen.
+% \begin{macrocode}
+ \def\FrameCommand{\colorbox{importantcolor}}%
+% \end{macrocode}
+% |figure|- und |table|"=Umgebung sowie die Befehle \cs{footnote} und
+% \cs{marginpar} abfangen, da sie nicht funktionieren.
+% \begin{macrocode}
+ \renewcommand\footnote[2][]{%
+ \ClassError{bgteubner}{%
+ \footnote\space used inside longimportant environment}{%
+ Inside the longimportant environment, footnotes cannot be
+ used.\MessageBreak
+ You may use the short version, the important or important*
+ environment if you\MessageBreak
+ really need a footnote. Be aware that these environments
+ don't\MessageBreak
+ break across pages.}%
+ }%
+ \let\hhcls@important@figure=\figure
+ \renewcommand\figure{%
+ \ClassError{bgteubner}{%
+ figure environment used inside longimportant environment}{%
+ Inside the longimportant environment, floats cannot be used.}%
+ \hhcls@important@figure}%
+ \let\hhcls@important@table=\table
+ \renewcommand\table{%
+ \ClassError{bgteubner}{%
+ table environment used inside longimportant environment}{%
+ Inside the longimportant environment, floats cannot be used.}%
+ \hhcls@important@table}%
+ \let\hhcls@important@marginpar=\marginpar
+ \renewcommand\marginpar{%
+ \ClassError{bgteubner}{%
+ \string\marginpar\space used inside longimportant environment}{%
+ Inside the longimportant environment, floats cannot be used.}%
+ \hhcls@important@marginpar}%
+% \end{macrocode}
+% Internen Befehl aufrufen.
+% \changes{1.21}{2004/03/25}{Reduce skip when \texttt{longimportant}
+% environment starts with a theorem-like environment}%
+% \begin{macrocode}
+ \MakeFramed {\advance\hsize-\width \FrameRestore
+ \noindent\@setminipage}%
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Workaround for bug in \texttt{framed.sty}
+% which causes wrong width in some cases}%
+% This \cs{vspace} is a work around for a bug in |framed.sty| which
+% causes |longimportant| environments with only a theorem-like
+% environment to be too narrow.
+% \begin{macrocode}
+ \hhcls@important@workaround
+ \ignorespaces
+ }{%
+ \par\unskip
+ \endMakeFramed
+ \noindentnextpar
+ \par
+ \ignorespacesafterend
+ }
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{longimportant*}
+% \changes{1.20}{2004/03/07}{New \texttt{longimportant*} environment}%
+% Define a |longimportant*| environment in analogy to the |important*|
+% environment.
+% With an optional argument, the vertical adjustment can be changed.
+% \begin{macrocode}
+ \newenvironment{longimportant*}[1][\abovedisplayskip]{%
+ \begin{longimportant}\vspace{-#1}\ignorespaces
+ }{%
+ \end{longimportant}%
+ }
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\hhcls@important@workaround}
+% \changes{1.21}{2004/03/25}{Use \texttt{framed} workaround for
+% longimportant only for old versions of that package}%
+% From 2004-03-07 on, the bug in the |framed| package has been fixed,
+% that caused the box to be too narrow sometimes.
+% \begin{macrocode}
+ \@ifpackagelater{framed}{2004/03/07}{%
+ \newcommand*\hhcls@important@workaround{}
+ }{%
+ \newcommand*\hhcls@important@workaround{\vspace{0mm}}
+ \ClassWarningNoLine{bgteubner}{Outdated version of framed.sty
+ used. A workaround\MessageBreak
+ for a bug has been installed. Future versions of\MessageBreak
+ bgteubner.cls will need a version of framed.sty\MessageBreak
+ that is dated 2004/03/07 or newer}
+ }
+% \end{macrocode}
+% \end{macro}
+% Kisten aus?
+% \begin{macrocode}
+\else
+% \end{macrocode}
+% \begin{environment}{important}
+% \begin{environment}{important*}
+% \begin{environment}{longimportant}
+% \begin{environment}{longimportant*}
+% Dummy"=Befehle, falls graue Kästen ausgeschaltet sind.
+% \begin{macrocode}
+ \newenvironment{important}{\par}{\par}
+ \newenvironment{important*}{\par}{\par}
+ \newenvironment{longimportant}{\par}{\par}
+ \newenvironment{longimportant*}[1][]{\par}{\par}
+\fi
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% \section{Aufgaben und Lösungen}
+%
+% \subsection{Aufgaben für globale Aufgabensammlung}
+%
+% Aufgaben zählen:
+% \begin{macrocode}
+\newcounter{aufgabenzahl}%
+% \end{macrocode}
+% Berechnung der Einrueckung der Aufgabenüberschriften:
+% \begin{macrocode}
+\newlength{\hhcls@@exerciseindent}%
+\setlength{\hhcls@@exerciseindent}{7.8398em}%
+% \end{macrocode}
+% Zähler definieren. Für die |aufgabe|"=Umgebung Format "`Aufgabe"':
+% \begin{macrocode}
+\newcounter{@exercise}
+\renewcommand*\the@exercise{\@arabic\c@@exercise}
+% \end{macrocode}
+% Überschrift der |exercise|"=Umgebung:
+% \begin{macrocode}
+\newcommand*{\scr@fnt@@exercise}{\size@section}
+\@ifundefined{DeclareSectionCommand}{%
+ \ClassWarningNoLine{bgteubner}{Koma-Script macro
+ \string\DeclareSectionCommand\space not defined.\MessageBreak
+ Using workaround for exercise environment.\MessageBreak
+ You should consider updating Koma-Script}%
+ \newcommand\@exercise{\@startsection{@exercise}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@section\nobreak}}
+ \if@exercisetotoc
+ \newcommand*\l@@exercise[2]{\@dottedtocline{1}{1.5em}{2.3em}{%
+ \def\numberline##1{%
+ \hb@xt@\@tempdima{\lprefix@exercise##1\hfil}}#1}{#2}}
+ \else
+ \newcommand*\l@@exercise[2]{}
+ \fi
+}{%
+ \DeclareSectionCommand[%
+ style=section,%
+ level=1,%
+ indent=\z@,%
+ beforeskip=-3.5ex \@plus -1ex \@minus -.2ex,%
+ afterskip=2.3ex \@plus.2ex,%
+ tocindent=1.5em,%
+ tocnumwidth=2.3em%
+ ]{@exercise}
+}%
+% \end{macrocode}
+% \begin{macro}{\exercisename}
+% Name der Aufgaben:
+% \begin{macrocode}
+\newcommand*\exercisename{Aufgabe}
+% \end{macrocode}
+% \end{macro}
+% Format der Überschrift:
+% \begin{macrocode}
+\def\prefix@exercise{\exercisename~}%
+% \end{macrocode}
+% Doppelpunkt nach der Zahl:
+% \begin{macrocode}
+\def\postfix@exercise{:}%
+% \end{macrocode}
+% Überschrift für unnummerierte Aufgaben:
+% \begin{macrocode}
+\def\prefix@exercisestar{\exercisename}%
+% \end{macrocode}
+% Unnummeriert mit Doppelpunkt:
+% \begin{macrocode}
+\def\postfix@exercisestar{:}%
+% \end{macrocode}
+% Prefix im Inhaltsverzeichnis:
+% \begin{macrocode}
+\def\lprefix@exercise{}%
+% \end{macrocode}
+% Aufgaben zählen:
+% \begin{macrocode}
+ \g@addto@macro\hhcls@theoremlist{%
+ \addtocontents{exercise}{\hhcls@theoremskip}%
+ }%
+% \end{macrocode}
+% Kein Kolumnentitel:
+% \begin{macrocode}
+\let\@exercisemark\@gobble
+% \end{macrocode}
+% \begin{macro}{\exercisefont}
+% \changes{1.30}{2004/04/10}{Make font in exercises adjustable}%
+% Font for exercises.
+% \begin{macrocode}
+\newcommand*\exercisefont{\normalsize}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{exercise}
+% Nummerierte |exercise|"=Umgebung:
+% \begin{macrocode}
+\newenvironment{exercise}[1]{%
+% \end{macrocode}
+% Teilaufgabennummerierung auf Null setzen:
+% \begin{macrocode}
+ \setcounter{subtaskoffset}{0}%
+% \end{macrocode}
+% Aufgaben zählen:
+% \begin{macrocode}
+ \stepcounter{aufgabenzahl}%
+% \end{macrocode}
+% Überschrift
+% \begin{macrocode}
+ \@exercise{#1}%
+% \end{macrocode}
+% Eintrag in das Verzeichnis der Aufgaben schreiben:
+% \begin{macrocode}
+ \addcontentsline{exercise}{exercise}{\protect\numberline {\the@exercise}#1}%
+% \end{macrocode}
+% Gliederungsbefehle ausschalten
+% \begin{macrocode}
+ \gliederungsfehler{exercise}%
+% \end{macrocode}
+% Switch to chosen font.
+% \begin{macrocode}
+ \exercisefont
+}{%
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar
+ \par
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{exercise*}
+% Unnummerierte |exercise*|"=Umgebung:
+% \begin{macrocode}
+\newenvironment{exercise*}[1]{%
+% \end{macrocode}
+% Teilaufgabennummerierung auf Null setzen
+% \begin{macrocode}
+ \setcounter{subtaskoffset}{0}%
+% \end{macrocode}
+% Aufgaben zählen:
+% \begin{macrocode}
+ \stepcounter{aufgabenzahl}%
+% \end{macrocode}
+% Überschrift. Die Sternvariante lässt die Nummer usw. weg. Daher muss
+% der Teil von Hand eingefügt werden.
+% \begin{macrocode}
+ \@exercise*{\makebox[\hhcls@@exerciseindent][l]{%
+ \prefix@exercisestar\postfix@exercisestar}#1}%
+% \end{macrocode}
+% Eintrag in das Verzeichnis der Aufgaben schreiben:
+% \begin{macrocode}
+ \addcontentsline{exercise}{exercise}{#1}%
+% \end{macrocode}
+% Gliederungsbefehle ausschalten
+% \begin{macrocode}
+ \gliederungsfehler{exercise}%
+% \end{macrocode}
+% Switch to chosen font.
+% \begin{macrocode}
+ \exercisefont
+% \begin{macrocode}
+}{%
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar
+ \par
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Lösungen für globale Aufgabensammlung}
+%
+% Berechnung der Einrückung der Lösungsüberschrift.
+% \begin{macrocode}
+\newlength{\hhcls@@answerindent}%
+\AtBeginDocument{%
+ \setlength{\hhcls@@answerindent}{\hhcls@@exerciseindent}%
+}
+% \end{macrocode}
+% Zähler, alle haben keine Ausgabe, weil sie eigentlich nicht benötigt
+% werden.
+% \begin{macrocode}
+\newcounter{@answer}
+\renewcommand*\the@answer{}
+% \end{macrocode}
+% Befehle für die Überschriften:
+% \begin{macrocode}
+\newcommand\@answer{\@startsection{@answer}{2}{\z@}%
+ {-3.25ex \@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\raggedsection\normalfont\sectfont\nobreak\size@subsection\nobreak}}
+% \end{macrocode}
+% Befehle für das Inhaltsverzeichnis, falls gewünscht:
+% \begin{macrocode}
+\if@answertotoc
+ \newcommand*\l@@answer[2]{\@dottedtocline{1}{0em}{6.2em}{%
+ \def\numberline##1{%
+ \hb@xt@\@tempdima{\lprefix@answer##1\hfil}}#1}{#2}}
+\else
+ \newcommand*\l@@answer[2]{}
+\fi
+% \end{macrocode}
+% \begin{macro}{\answerspacing}
+% Zeilenabstand innerhalb der Lösungen:
+% \begin{macrocode}
+\ifhhcls@times
+ \newcommand\answerspacing{1.12}
+\else
+ \newcommand\answerspacing{1.06}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\answername}
+% Name für Lösungen:
+% \begin{macrocode}
+\newcommand*\answername{L\"osung}
+% \end{macrocode}
+% \end{macro}
+% Prefixe für nummerierte Überschriften:
+% \begin{macrocode}
+\def\prefix@answer{\answername~}%
+% \end{macrocode}
+% Doppelpunkte nach der Nummer:
+% \begin{macrocode}
+\def\postfix@answer{:}%
+% \end{macrocode}
+% Unnummerierte Namen:
+% \begin{macrocode}
+\def\prefix@answerstar{\answername}%
+% \end{macrocode}
+% Doppelpunkt nach unnummeriert:
+% \begin{macrocode}
+\def\postfix@answerstar{:}%
+% \end{macrocode}
+% Prefix im Inhaltsverzeichnis:
+% \begin{macrocode}
+\def\lprefix@answer{\answername~}%
+% \end{macrocode}
+% Keine Kolumnentitel:
+% \begin{macrocode}
+\let\@answermark\@gobble
+% \end{macrocode}
+% \begin{macro}{\answerfont}
+% Schriftgrößen für die Lösungen:
+% \begin{macrocode}
+\newcommand\answerfont{\footnotesize}
+% \end{macrocode}
+% \end{macro}
+% Einzüge für die Lösungen:
+% \begin{macrocode}
+\newlength{\answer@lmargin}
+\newlength{\answer@rmargin}
+\setmargin{answer}{0em}
+% \end{macrocode}
+%
+% \begin{environment}{answer}
+% Nummerierte |answer|"=Umgebung:
+% \begin{macrocode}
+\newcommand\answer[2][\@empty]{%
+% \end{macrocode}
+% Nummer auf das Label kopieren:
+% \begin{macrocode}
+ \def\the@answer{\ref{#2}}%
+% \end{macrocode}
+% Die eigentliche Umgebung starten:
+% \begin{macrocode}
+ \@@answer{#1}%
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{answer*}
+% Unnummerierte |answer|"=Umgebung:
+% \begin{macrocode}
+\expandafter\newcommand\csname answer*\endcsname[1][\@empty]{%
+% \end{macrocode}
+% Label löschen:
+% \begin{macrocode}
+ \def\the@answer{}%
+% \end{macrocode}
+% Pre"= und Postfix kopieren:
+% \begin{macrocode}
+ \def\prefix@answer{\prefix@answerstar}%
+ \def\postfix@answer{\postfix@answerstar}%
+% \end{macrocode}
+% Die eigentliche Umgebung starten:
+% \begin{macrocode}
+ \@@answer{#1}%
+}
+% \end{macrocode}
+% \end{environment}
+% Die Umgebung, die wirklich eine Lösung setzt.
+% \begin{macrocode}
+\def\@@answer#1{%
+% \end{macrocode}
+% Überschrift
+% \begin{macrocode}
+ \@answer{#1}%
+% \end{macrocode}
+% Teilloesungsnummerierung auf Null setzen
+% \begin{macrocode}
+ \setcounter{subtaskoffset}{0}%
+% \end{macrocode}
+% Gliederungsbefehle ausschalten
+% \begin{macrocode}
+ \gliederungsfehler{answer}%
+% \end{macrocode}
+% \changes{1.02}{2003/09/17}{\cs{normalfont} in Bildunterschriften
+% aufrufen}%
+% Schriftarten und Längen setzen:
+% \begin{macrocode}
+ \answerfont
+ \let\size@subsubsection\answerfont
+ \let\size@paragraph\answerfont
+ \let\size@subparagraph\answerfont
+ \setlength{\mathindent}{0.5\leftmargini}%
+ \setlength{\abovecaptionskip}{0.89\abovecaptionskip}%
+ \setkomafont{caption}{\normalfont\rmfamily\footnotesize\RaggedRight}%
+ \setkomafont{float}{\normalfont\normalcolor\footnotesize}%
+ \renewcommand{\subcapsize}{\footnotesize}%
+% \end{macrocode}
+% \changes{1.30}{2004/04/09}{Remove \cs{begingroup} and \cs{endgroup}
+% because they removed the correct linespacing}%
+% Abstand erhöhen:
+% \begin{macrocode}
+ \setstretch{\answerspacing}%
+}
+% \end{macrocode}
+% Ende der Umgebung:
+% \begin{macrocode}
+\def\endanswer{%
+ \par
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar
+}
+% \end{macrocode}
+% Ende unnummeriert
+% \begin{macrocode}
+\expandafter\def\csname endanswer*\endcsname{\endanswer}
+% \end{macrocode}
+%
+% \subsection{Aufgaben innerhalb von Kapiteln}
+%
+% Berechnung der Einrueckung der Überschriften:
+% \begin{macrocode}
+\newlength{\hhcls@@subexerciseindent}%
+\AtBeginDocument{%
+ \setlength{\hhcls@@subexerciseindent}{\hhcls@@exerciseindent}%
+}
+% \end{macrocode}
+% Für die |subexercise|"=Umgebung Format "`Kapitel.Subexercise"':
+% \begin{macrocode}
+\newcounter{@subexercise}[chapter]
+\renewcommand*\the@subexercise{\thechapter.\@arabic\c@@subexercise}
+% \end{macrocode}
+% \changes{1.13}{2003/12/16}{Make delimiter for subexercise configurable}%
+% \changes{1.20}{2004/03/07}{Avoid page break after title in subexercise}%
+% \changes{1.30}{2004/04/10}{Improve spacing after title of
+% subexercise}%
+% Überschrift der |subexercise|"=Umgebung:
+% \begin{macrocode}
+\newcommand\subexercise@title[1]{%
+ \iftheorem@starvariant
+ \else
+ \refstepcounter{@subexercise}%
+ \fi
+ {%
+ \raggedsection\normalfont\normalsize\sectfont\nobreak
+ \makebox[\hhcls@@subexerciseindent][l]{\exercisename
+ \iftheorem@starvariant
+ \else
+ ~\the@subexercise
+ \fi
+ \postfix@exercise}%
+ \setlength\@tempdima{1pt}%
+ \settoheight\@tempdimb{D}%
+ \addtolength\@tempdima{\@tempdimb}%
+ \settoheight\@tempdimb{\subexercisefont D}%
+ \addtolength\@tempdima{-\@tempdimb}%
+ #1\nobreak\par\nobreak\vspace{\@tempdima}\nobreak}\nobreak
+ \@afterheading}
+% \end{macrocode}
+% \begin{macro}{\subexercisefont}
+% Schriftgröße in Aufgaben:
+% \begin{macrocode}
+\newcommand\subexercisefont{\normalfont\small}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subexercisespacing}
+% Zeilenabstand innerhalb der Subaufgabee:
+% \begin{macrocode}
+\ifhhcls@times
+ \newcommand\subexercisespacing{1.12}
+\else
+ \newcommand\subexercisespacing{1.06}
+\fi
+% \end{macrocode}
+% \end{macro}
+% Einrückung:
+% \begin{macrocode}
+\newlength{\subexercise@lmargin}
+\newlength{\subexercise@rmargin}
+\setmargin{subexercise}{\leftmargini}
+% \end{macrocode}
+% \begin{environment}{subexercise*}
+% Unnummerierte Umgebung:
+% \begin{macrocode}
+\expandafter\def\csname subexercise*\endcsname{%
+ \theorem@starvarianttrue
+ \subexercise
+}%
+% \end{macrocode}
+% Ende der Sternvariante:
+% \begin{macrocode}
+\expandafter\def\csname endsubexercise*\endcsname{\endsubexercise}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{subexercise}
+% Nummerierte |subexercise|"=Umgebung:
+% \begin{macrocode}
+\newenvironment{subexercise}[1]{%
+% \end{macrocode}
+% Zur Sicherheit einen Absatz.
+% \begin{macrocode}
+ \par
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Fix left margin in subexercise environment}%
+% Die eigentliche Umgebung beginnen:
+% \begin{macrocode}
+ \begin{list}{}{%
+ \itemindent-\subexercise@lmargin
+ \listparindent\parindent
+ \leftmargin\subexercise@lmargin
+ \rightmargin\subexercise@rmargin
+ \parsep\z@ \@plus\p@
+% \end{macrocode}
+% Aufgaben zählen:
+% \begin{macrocode}
+ \stepcounter{aufgabenzahl}%
+% \end{macrocode}
+% Gliederungsbefehle ausschalten:
+% \begin{macrocode}
+ \gliederungsfehler{subexercise}%
+% \end{macrocode}
+% Teilaufgabennummerierung auf Null setzen
+% \begin{macrocode}
+ \setcounter{subtaskoffset}{0}%
+ }%
+% \end{macrocode}
+% Zeilenabstand anpassen:
+% \begin{macrocode}
+ \begin{spacing}{\subexercisespacing}%
+% \end{macrocode}
+% List"=Umgebung fängt mit \cs{item} an:
+% \begin{macrocode}
+ \item\relax
+% \end{macrocode}
+% Überschrift
+% \begin{macrocode}
+ \subexercise@title{#1}%
+% \end{macrocode}
+% Eintrag in das Verzeichnis der Aufgaben schreiben:
+% \begin{macrocode}
+ \edef\hhtmp{#1}%
+ \ifx\hhtmp\empty
+ \else
+ \iftheorem@starvariant
+ \addcontentsline{exercise}{exercise}{#1}%
+ \else
+ \addcontentsline{exercise}{exercise}{%
+ \protect\numberline{\the@subexercise}#1}%
+ \fi
+ \fi
+% \end{macrocode}
+% Schriftart setzen:
+% \begin{macrocode}
+ \subexercisefont
+ \let\size@subsubsection\subexercisefont
+ \let\size@paragraph\subexercisefont
+ \let\size@subparagraph\subexercisefont
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespaces
+ }{%
+% \end{macrocode}
+% Ende der Umgebung:
+% \changes{1.10}{2003/10/30}{Abstände am Ende der Umgebung korrigiert}%
+% \begin{macrocode}
+ \end{spacing}%
+ \removelastskip
+ \end{list}%
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar
+ \par
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Lösungen}
+%
+% Berechnung der Einrückung der Lösungsüberschrift.
+% \begin{macrocode}
+\newlength{\hhcls@@subanswerindent}%
+\AtBeginDocument{%
+ \setlength{\hhcls@@subanswerindent}{\hhcls@@answerindent}%
+}
+% \end{macrocode}
+% Zähler, alle haben keine Ausgabe, weil sie eigentlich nicht benötigt
+% werden.
+% \begin{macrocode}
+\newcounter{@subanswer}
+\renewcommand*\the@subanswer{}
+% \end{macrocode}
+% \changes{1.13}{2003/12/16}{Make delimiter for subanswer configurable}%
+% \changes{1.20}{2004/03/07}{Avoid page break after title in subanswer}%
+% \changes{1.30}{2004/04/10}{Improve spacing after title of
+% subanswer}%
+% Überschrift der |subexercise|"=Umgebung:
+% \begin{macrocode}
+\newcommand\subanswer@title[2]{%
+ {%
+ \raggedsection\normalfont\normalsize\sectfont\nobreak
+ \makebox[\hhcls@@subanswerindent][l]{\answername
+ \iftheorem@starvariant
+ \else
+ ~\ref{#1}%
+ \fi
+ \postfix@answer}%
+ \setlength\@tempdima{1pt}%
+ \settoheight\@tempdimb{D}%
+ \addtolength\@tempdima{\@tempdimb}%
+ \settoheight\@tempdimb{\subanswerfont D}%
+ \addtolength\@tempdima{-\@tempdimb}%
+ #2\nobreak\par\nobreak\vspace{\@tempdima}\nobreak}\nobreak
+ \@afterheading}
+% \end{macrocode}
+% \begin{macro}{\subanswerfont}
+% Schriftgrößen für die Lösungen:
+% \begin{macrocode}
+\newcommand\subanswerfont{\footnotesize}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subanswerspacing}
+% \changes{1.30}{2004/04/10}{Subanswers can have another linespacing
+% than answers}%
+% Zeilenabstand innerhalb der Lösungen:
+% \begin{macrocode}
+\ifhhcls@times
+ \newcommand\subanswerspacing{1.12}
+\else
+ \newcommand\subanswerspacing{1.06}
+\fi
+% \end{macrocode}
+% \end{macro}
+% Einzüge für die Lösungen:
+% \begin{macrocode}
+\newlength{\subanswer@lmargin}
+\newlength{\subanswer@rmargin}
+\setmargin{subanswer}{\leftmargini}
+% \end{macrocode}
+% \begin{environment}{subanswer*}
+% Unnummerierte Umgebung:
+% \begin{macrocode}
+\expandafter\newcommand\csname subanswer*\endcsname[1][\@empty]{%
+ \theorem@starvarianttrue
+ \subanswer[#1]{}%
+}%
+% \end{macrocode}
+% Ende der Sternvariante:
+% \begin{macrocode}
+\expandafter\def\csname endsubanswer*\endcsname{\endsubanswer}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{subanswer}
+% Nummerierte |subanswer|"=Umgebung:
+% \begin{macrocode}
+\newenvironment{subanswer}[2][\@empty]{%
+% \end{macrocode}
+% Zur Sicherheit einen Absatz.
+% \begin{macrocode}
+ \par
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Fix left margin in subanswer environment}%
+% Die eigentliche Umgebung beginnen:
+% \begin{macrocode}
+ \begin{list}{}{%
+ \itemindent-\subanswer@lmargin
+ \listparindent\parindent
+ \leftmargin\subanswer@lmargin
+ \rightmargin\subanswer@rmargin
+ \parsep\z@ \@plus\p@
+% \end{macrocode}
+% Gliederungsbefehle ausschalten:
+% \begin{macrocode}
+ \gliederungsfehler{subanswer}%
+% \end{macrocode}
+% Teilaufgabennummerierung auf Null setzen
+% \begin{macrocode}
+ \setcounter{subtaskoffset}{0}%
+ }%
+% \end{macrocode}
+% Zeilenabstand anpassen:
+% \begin{macrocode}
+ \begin{spacing}{\subanswerspacing}%
+% \end{macrocode}
+% List"=Umgebung fängt mit \cs{item} an:
+% \begin{macrocode}
+ \item\relax
+% \end{macrocode}
+% Überschrift
+% \begin{macrocode}
+ \subanswer@title{#2}{#1}%
+% \end{macrocode}
+% Schriftart setzen:
+% \begin{macrocode}
+ \let\size@subsubsection\subanswerfont
+ \let\size@paragraph\subanswerfont
+ \let\size@subparagraph\subanswerfont
+ \subanswerfont
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespaces
+ }{%
+% \end{macrocode}
+% Ende der Umgebung:
+% \changes{1.10}{2003/10/30}{Abstände am Ende der Umgebung korrigiert}%
+% \begin{macrocode}
+ \end{spacing}%
+ \removelastskip
+ \end{list}%
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar
+ \par
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Aufgabenliste}
+%
+% \begin{macro}{\listofexercises}
+% Erzeugen einer Liste der Aufgaben:
+% \begin{macrocode}
+\@ifundefined{BeforeStartingTOC}{%
+ \ClassWarningNoLine{bgteubner}{Koma-Script macro
+ \string\BeforeStartingTOC\space not defined.\MessageBreak
+ Using workaround for \string\listofexercises.\MessageBreak
+ You should consider updating Koma-Script}%
+ \newcommand*\exercise@heading{\float@listhead{\listexercisename}}
+ \newcommand*\listofexercises{%
+ \begingroup%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \exercise@heading
+ \small
+ \setlength{\parskip}{\z@}%
+ \@starttoc{exercise}%
+ \if@restonecol\twocolumn\fi
+ \endgroup
+ }
+}{%
+ \newcommand*\listofexercises{\listoftoc{exercise}}
+ \newcommand*\listofexercisename{\listexercisename}
+ \BeforeStartingTOC[exercise]{\small}
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\listexercisename}
+% \begin{macrocode}
+\newcommand*\listexercisename{List of Exercises}
+\newcommand*\hhcls@germanlistexercisename{Aufgabenverzeichnis}
+\addto\captionsgerman{%
+ \renewcommand{\listexercisename}{\hhcls@germanlistexercisename}}%
+\addto\captionsngerman{%
+ \renewcommand{\listexercisename}{\hhcls@germanlistexercisename}}%
+\addto\captionsaustrian{%
+ \renewcommand{\listexercisename}{\hhcls@germanlistexercisename}}%
+\addto\captionsnaustrian{%
+ \renewcommand{\listexercisename}{\hhcls@germanlistexercisename}}%
+\newcommand*\l@exercise{\@dottedtocline{1}{0em}{2.9em}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Changing the delimiter}
+%
+% \begin{environment}{exercisedelimiter}
+% \changes{1.13}{2003/12/16}{Make delimiter for exercises configurable}%
+% This environment takes one argument.
+% It is the new delimiter after the exercise number that is valid
+% inside the environment.
+% \begin{macrocode}
+\newenvironment{exercisedelimiter}[1]{%
+ \def\postfix@exercise{#1}%
+ \def\postfix@exercisestar{#1}%
+ \def\postfix@answer{#1}%
+ \def\postfix@answerstar{#1}%
+ \ignorespaces
+}{%
+ \ignorespacesafterend
+}%
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Teilaufgaben}
+%
+% Zähler innerhalb einer teilaufgabe-Umgebung
+% \begin{macrocode}
+\newcounter{subtask}
+% \end{macrocode}
+% Zähler, der dafür sorgt, dass in weiteren Umgebungen weitergezählt
+% wird. Er wird bei einer neuen Aufgabe auf Null gesetzt.
+% \begin{macrocode}
+\newcounter{subtaskoffset}[@exercise]%
+\renewcommand\thesubtask{\alph{subtask}}%
+% \end{macrocode}
+% \begin{environment}{subtask}
+% Die Umgebung selbst:
+% \begin{macrocode}
+\newenvironment{subtask}{%
+% \end{macrocode}
+% Listenumgebung
+% \begin{macrocode}
+ \begin{list}{\thesubtask)}{\usecounter{subtask}%
+% \end{macrocode}
+% Kleine Abstände zwischen den Teilaufgaben (Platz sparen):
+% \begin{macrocode}
+ \parskip\z@%
+ \itemsep\z@%
+% \end{macrocode}
+% Absatzeinzug statt Durchschuss:
+% \begin{macrocode}
+ \parsep\z@
+ \listparindent\parindent
+% \end{macrocode}
+% Offset zum Zähler addieren, damit weitergezählt wird
+% \begin{macrocode}
+ \setcounter{subtask}{\value{subtaskoffset}}}}{%
+% \end{macrocode}
+% Am Ende Offset speichern für weiteren Gebrauch
+% \begin{macrocode}
+ \setcounter{subtaskoffset}{\value{subtask}}%
+ \end{list}%
+% \end{macrocode}
+% Leerzeichen ignorieren:
+% \begin{macrocode}
+ \ignorespacesafterend
+% \end{macrocode}
+% Nächsten Absatz nicht einrücken:
+% \begin{macrocode}
+ \noindentnextpar\par}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\subtaskref}
+% Referenz auf eine Teilaufgabe:
+% \begin{macrocode}
+\newcommand\subtaskref[1]{\ref{#1})}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Listen und Aufzählungen}
+%
+% \begin{macro}{\labelenumii}
+% Punkt statt Klammer in der zweiten Ebene:
+% \begin{macrocode}
+\renewcommand*\labelenumii{\theenumii.}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Vorwort}
+%
+% \begin{macro}{\preface}
+% \changes{1.30}{2004/04/10}{Start prefaces on odd and even pages}%
+% Überschrift des Vorworts:
+% \begin{macrocode}
+\newcommand*\preface[1]{%
+ \begingroup
+ \@openrightfalse
+ \chapter*{#1}%
+ \markboth{}{}%
+ \endgroup
+ \noindentnextpar\par
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\signature}
+% Unterschrift im Vorwort:
+% \begin{macrocode}
+\newcommand*\signature[3]{%
+ \par\bigskip
+ \begin{minipage}[t]{0.45\linewidth}%
+ #1,\\
+ #2%
+ \end{minipage}%
+ \hfill
+ \begin{minipage}[t]{0.5\linewidth}%
+ \itshape\raggedleft
+ #3%
+ \end{minipage}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Preparation for hyperref}
+%
+% The package \verb|hyperref.sty| is not loaded by \verb|bgteubner.cls|.
+% But if the user does, some settings should be ensured.
+% This is done here.
+% \begin{macrocode}
+\AfterPackage{hyperref}{%
+ \hypersetup{%
+ unicode
+ }%
+}%
+% \end{macrocode}
+%
+% \section{Titelseite}
+%
+% Interne Befehle für die Titelseite auf \cs{@empty} setzen:
+% \begin{macrocode}
+\let\@author=\@empty
+% \end{macrocode}
+% Titel leer vordefinieren:
+% \begin{macrocode}
+\let\@title\@empty
+% \end{macrocode}
+% \begin{macro}{\subtitle}
+% Sub-title.
+% Koma-Script has added the macro \cs{subtitle} in v2.97c. Only define
+% it if it is not present already.
+% \changes{2.01}{2011/12/29}{Only define \cs{subtitle} if not present already}%
+% \begin{macrocode}
+\let\@subtitle\@empty
+\@ifundefined{subtitle}{%
+ \newcommand\subtitle[1]{\gdef\@subtitle{#1}}%
+}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\edition}
+% Auf"|lage:
+% \begin{macrocode}
+\let\@edition\@empty
+\newcommand*\edition[1]{\gdef\@edition{#1}}
+\edition{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{1.30}{2004/04/10}{Set PDF information only if PDF is
+% produced}%
+% \changes{1.30}{2004/04/10}{Write info file containing the same
+% information as the PDF-info entries}%
+% PDF-Datei mit Informationen versorgen:
+% \begin{macrocode}
+\newwrite\hhcls@fileinfo
+\immediate\openout\hhcls@fileinfo\jobname.info
+\AtEndDocument{%
+% \end{macrocode}
+% Depending on whether \verb|hyperref| is loaded or not, make sure that all
+% types of title strings etc.\ can be written into the PDF meta
+% information.
+% If \verb|hyperref| is not loaded, \LaTeX\ macros can result in errors.
+% \begin{macrocode}
+ \ifx\pdfstringdef\@undefined
+ \def\hhcls@title{\@title}%
+ \ifx\@subtitle\@empty
+ \def\hhcls@subject{\@edition. Auflage}%
+ \else
+ \def\hhcls@subject{\@subtitle\space (\@edition. Auflage)}%
+ \fi
+ \def\hhcls@author{\@author}%
+ \else
+ \pdfstringdef\hhcls@title{\@title}%
+ \ifx\@subtitle\@empty
+ \pdfstringdef\hhcls@subject{\@edition. Auflage}%
+ \else
+ \pdfstringdef\hhcls@subject{\@subtitle\space (\@edition. Auflage)}%
+ \fi
+ \pdfstringdef\hhcls@author{\@author}%
+ \fi
+% \end{macrocode}
+% Actually write the information into the PDF file:
+% \begin{macrocode}
+ \ifpdf
+ \ifx\@title\@empty\else\pdfinfo{/Title (\hhcls@title)}\fi
+ \ifx\hhcls@subject\@empty\else\pdfinfo{/Subject (\hhcls@subject)}\fi
+ \ifx\@author\@empty\else\pdfinfo{/Author (\hhcls@author)}\fi
+% \end{macrocode}
+% Der \texttt{/Creator}"=Eintrag, der in die PDF"=Datei geschrieben
+% wird, muss in veränderten und umbenannten Kopien der Dateien
+% "`|bgteubner.cls|"' und "`|bgteucls.dtx|"' folgende Informationen
+% enthalten:
+% \begin{itemize}
+% \item Den Dateinamen "`|bgteubner.cls|"',
+% \item einen Hinweis darauf, dass diese Dokumentklasse für den
+% "`Springer Vieweg Verlag, Wiesbaden, Germany"' entwickelt wurde.
+% \end{itemize}
+% \begin{macrocode}
+ % If you modify a renamed copy of the files `bgteubner.cls' or
+ % `bgteucls.dtx', you have to preserve some information in the
+ % PDF /Creator entry. The following data have to remain:
+ % - The name `bgteubner.cls',
+ % - a hint that this class has been developed for the `Springer
+ % Vieweg Verlag, Wiesbaden, Germany'.
+ \begingroup
+ \GetFileInfo{bgteubner.cls}%
+ \pdfinfo{/Creator (Document class bgteubner.cls for the
+ Springer Vieweg Verlag, Wiesbaden, Germany, by Harald Harders,
+ version \fileversion)}%
+ \endgroup
+ \pdfinfo{/Keywords (Bild: \thebilderzahl; Tabelle: \thetabellenzahl;
+ Aufgabe: \theaufgabenzahl\hhcls@theoremanzahl)}%
+ \fi
+ \ifx\@title\@empty
+ \else
+ \protected@write\hhcls@fileinfo{}{Titel: \@title}%
+ \fi
+ \ifx\@subtitle\@empty
+ \else
+ \protected@write\hhcls@fileinfo{}{Untertitel: \@subtitle}%
+ \fi
+ \protected@write\hhcls@fileinfo{}{\@edition. Auflage}%
+ \ifx\@author\@empty
+ \else
+ \protected@write\hhcls@fileinfo{}{Autor(en): \@author}%
+ \fi
+ \protected@write\hhcls@fileinfo{}{Bild: \thebilderzahl; Tabelle:
+ \thetabellenzahl; Aufgabe: \theaufgabenzahl\hhcls@theoremanzahl}%
+}
+% \end{macrocode}
+% \begin{macro}{\maketitle}
+% Titel ertellen.
+% \begin{macrocode}
+\ifhhcls@titlepage
+\renewcommand*\maketitle{%
+ \begingroup
+ \edef\hhcls@tmppage{\arabic{page}}%
+ \begin{titlepage}%
+ \renewcommand{\sfdefault}{phv}%
+% \end{macrocode}
+% Warnungen und Fehler für nicht angegebene Dinge:
+% \begin{macrocode}
+ \ifx\@title\@empty
+ \ClassError{bgteubner}{No title given}{Define a title using
+ \string\title{Titel}}
+ \fi
+ \ifx\@author\@empty
+ \ClassError{bgteubner}{No author given}{Define
+ an author using \string\author{Name}.}
+ \fi
+% \end{macrocode}
+% Formatierungsangaben:
+% \begin{macrocode}
+ \newlength{\hhcls@parindent}%
+ \setlength{\hhcls@parindent}{2.5\parindent}%
+ \setlength{\parindent}{0mm}%
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark
+ \def\@makefnmark{\rlap\@oldmakefnmark}
+% \end{macrocode}
+% Titelseite ist zentriert:
+% \begin{macrocode}
+ \begin{center}
+ \sffamily\Large
+% \end{macrocode}
+% Titel:
+% \begin{macrocode}
+ {\bfseries\LARGE \@author}%
+ \vskip 2.5em
+ \par
+ {\bfseries\iftensor@bold\else\mathversion{bold}\fi\Huge\@title\par}
+ \ifx\@subtitle\@empty
+ \else
+ \vskip 2.5em
+ {\bfseries\iftensor@bold\else\mathversion{bold}\fi
+ \LARGE\@subtitle\par}
+ \fi
+ \vskip 2.5em
+ \par
+% \end{macrocode}
+% \changes{1.20}{2004/03/07}{Titelpage: Only type these items that
+% really are used}%
+% \changes{1.30}{2004/05/09}{Titelpage: Minor bugfix testing on used items}%
+% Only type these items that really are used.
+% Singular cases are not handled.
+% \begin{macrocode}
+ \@ifundefined{hhclsbilderzahl}{%
+ Mit
+ \textbf{??}~Abbildungen,
+ \textbf{???}~Tabellen
+ und
+ \textbf{???}~Aufgaben
+ }{%
+ \ifnum\hhclsbilderzahl=0\relax
+ \ifnum\hhclstabellenzahl=0\relax
+ \ifnum\hhclsaufgabenzahl=0\relax
+ \else
+ Mit \hhclsaufgabenzahl~Aufgaben
+ \fi
+ \else
+ Mit \hhclstabellenzahl~Tabellen
+ \ifnum\hhclsaufgabenzahl=0\relax
+ \else
+ und \hhclsaufgabenzahl~Aufgaben
+ \fi
+ \fi
+ \else
+ Mit \hhclsbilderzahl~Abbildungen%
+ \ifnum\hhclstabellenzahl=0\relax
+ \ifnum\hhclsaufgabenzahl=0\relax
+ \else
+ \space und \hhclsaufgabenzahl~Aufgaben
+ \fi
+ \else
+ \ifnum\hhclsaufgabenzahl=0\relax
+ \space und \hhclstabellenzahl~Tabellen
+ \else
+ , \hhclstabellenzahl~Tabellen
+ und \hhclsaufgabenzahl~Aufgaben
+ \fi
+ \fi
+ \fi
+ }%
+ \ifhhcls@entwurf
+ \vskip 2.5em
+ \par
+ \strut\"Ubersetzt: \today, \now
+ \fi
+ \vfill
+ \par
+% \end{macrocode}
+% Testen, ob |\@edition| als Zahl angegeben wurde.
+% Tipp von David Kastrup, der für vorzeichenlose Zahlen funktioniert.
+% \begin{macrocode}
+ \ifx\@edition\@empty
+ \else
+% \end{macrocode}
+% Testen, ob |\@edition| als Zahl angegeben wurde.
+% Tipp von David Kastrup, der für vorzeichenlose Zahlen funktioniert.
+% \begin{macrocode}
+ \ifnum1<1\@edition
+% \end{macrocode}
+% Wenn es eine Zahl ist, nur ausgeben, wenn die Auf"|lage größer 1
+% ist.
+% \begin{macrocode}
+ \ifnum1<0\@edition\relax
+ \@edition.~Auf\/lage%
+ \vskip 4em
+ \fi
+% \end{macrocode}
+% Wenn keine Zahl, nur den Text in \cs{@edition} ausgeben.
+% \begin{macrocode}
+ \else
+ \@edition
+ \vskip 4em
+ \fi
+ \fi
+ \par
+ {\Large \hhcls@publisher\par}
+ \end{center}
+ \end{titlepage}
+% \end{macrocode}
+% Impressum:
+% \begin{macrocode}
+ \next@tpage\cleardoubleemptypage
+ \setcounter{page}{\hhcls@tmppage}%
+% \end{macrocode}
+% Widmung.
+% \begin{macrocode}
+ \ifx\@dedication\@empty \else
+ \next@tpage\null\vfill
+ {\centering \Large \@dedication \par}
+ \vskip \z@ \@plus3fill
+ \if@twoside \next@tpage\cleardoublepage \fi
+ \fi
+% \end{macrocode}
+% Alles Mögliche löschen, da nicht mehr gebraucht:
+% \begin{macrocode}
+% \setcounter{footnote}{0}%
+ \global\let\maketitle\relax
+ \endgroup
+}
+\else
+ \renewcommand\maketitle{%
+ \ClassWarningNoLine{bgteubner}{Titlepage switched off for final print}%
+% \end{macrocode}
+% Widmung.
+% \begin{macrocode}
+ \ifx\@dedication\@empty \else
+ \begin{titlepage}
+ \next@tpage\null\vfill
+ {\centering \Large \@dedication \par}
+ \vskip \z@ \@plus3fill
+ \if@twoside \next@tpage\cleardoublepage \fi
+ \end{titlepage}
+ \fi
+ \global\let\maketitle\relax
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+% Layoutparameter ausgeben:
+% \begin{macrocode}
+\ifhhcls@entwurf
+ \newlength{\hhtmplen}%
+ \setlength{\hhtmplen}{0.35145980351\textwidth}%
+ \typeout{^^JText width: \strip@pt\hhtmplen mm}%
+ \setlength{\hhtmplen}{0.35145980351\textheight}%
+ \typeout{Text block: \strip@pt\hhtmplen}%
+ \setlength{\hhtmplen}{\headheight}%
+ \addtolength{\hhtmplen}{\headsep}%
+ \addtolength{\hhtmplen}{\textheight}%
+ \setlength{\hhtmplen}{0.35145980351\hhtmplen}%
+ \typeout{Total height: \strip@pt\hhtmplen mm}%
+ \setlength{\hhtmplen}{0.35145980351\baselineskip}%
+ \typeout{Baseline skip: \strip@pt\hhtmplen mm^^J}%
+\fi
+% \end{macrocode}
+% \begin{macro}{\verboten}
+% Verbotene Pakete abfangen:
+% \begin{macrocode}
+\newcommand\verboten[1]{%
+ \BeforePackage{#1}{%
+ \ClassError{bgteubner}{Forbidden package `#1' loaded}{%
+ You are not allowed to load the package `#1' because it^^J%
+ changes the layout. This error message occurs one line below^^J%
+ the line.}}%
+}
+\verboten{a4wide}
+\verboten{a4}
+\verboten{a5comb}
+\verboten{a5}
+\verboten{aeguill}
+\verboten{ae}
+\verboten{appendix}
+\verboten{avantgar}
+\verboten{avant}
+\verboten{bibgerm}
+\verboten{bookman}
+\verboten{caption2}
+\verboten{caption}
+\verboten{chancery}
+\verboten{chappg}
+\verboten{charter}
+\verboten{cmbright}
+\verboten{concmath}
+\verboten{doublespace}
+\verboten{dropcaps}
+\verboten{eco}
+\verboten{endfloat}
+\verboten{epsfig}
+\verboten{eulervm}
+\verboten{extsizes}
+\verboten{fandyhdr}
+\verboten{figcaps}
+\verboten{floatfig}
+\verboten{floatflt}
+\verboten{fltpage}
+\verboten{french}
+\verboten{geometry}
+\verboten{geomsty}
+\verboten{german}
+\verboten{graphics}
+\verboten{hangcaption}
+\verboten{hangftn}
+\verboten{hanging}
+\verboten{helvetic}
+\verboten{here}
+\verboten{hvmath}
+%\verboten{hyperref}
+\verboten{indentfirst}
+\verboten{initials}
+\verboten{landscape}
+\verboten{lmodern}
+\verboten{lucidabr}
+\verboten{lucidaso}
+\verboten{mathptm}
+\verboten{mathsans}
+\verboten{mathtime}
+\verboten{ncntrsbk}
+\verboten{newcent}
+\verboten{ngerman}
+\verboten{palatcm}
+\verboten{palatino}
+\verboten{sansmath}
+\verboten{sectsty}
+\verboten{times}
+\verboten{titlesec}
+\verboten{utopia}
+\verboten{zapfchan}
+\verboten{zefonts}
+% \end{macrocode}
+% \end{macro}
+% \iffalse
+%</class>
+% \fi
+%
+% \section{Indexstil}
+%
+% \iffalse
+%<*idxstyle>
+% \fi
+%
+% Quote-Zeichen geändert für deutsche Unterstützung
+% \begin{macrocode}
+quote '>'
+% \end{macrocode}
+% Umgebung aufrufen
+% \begin{macrocode}
+preamble "\\begin{theindex}\n\\hhclsiscorrectindextrue\n"
+postamble "\n\n\\end{theindex}\n"
+% \end{macrocode}
+% Buchstaben einfügen
+% \begin{macrocode}
+heading_prefix "\\textbf{"
+heading_suffix "}\\nopagebreak\n"
+symhead_positive "Symbole"
+numhead_positive "Zahlen"
+headings_flag 1
+% \end{macrocode}
+% \iffalse
+%</idxstyle>
+% \fi
+%
+% \section{Glossarystile}
+%
+% \iffalse
+%<*glostyle1>
+% \fi
+%
+% \subsection{Ohne trennende Buchstaben}
+%
+% Quote-Zeichen geändert für deutsche Unterstützung.
+% \begin{macrocode}
+quote '>'
+% \end{macrocode}
+% Schlüsselwörter in der Eingabedatei.
+% \begin{macrocode}
+keyword "\\glossaryentry"
+% \end{macrocode}
+% |theglossary|"=Umgebung statt |theindex|"=Umgebung verwenden.
+% \begin{macrocode}
+preamble "\\begin{theglossary}\n\\hhclsiscorrectglossarytrue\n"
+postamble "\n\n\\end{theglossary}\n"
+group_skip "\n"
+% \end{macrocode}
+% Keine Kommata vor und zwischen den Zahlen.
+% \begin{macrocode}
+delim_0 ""
+delim_1 ""
+delim_2 ""
+delim_n "\\glossarypagedelim"
+delim_r "\\glossarypagerange"
+% \end{macrocode}
+% Die öffnende Klammer anfügen. Die schließende wird von \LaTeX\ erzeugt.
+% \begin{macrocode}
+item_0 "\n \\item ["
+% \end{macrocode}
+%
+% \iffalse
+%</glostyle1>
+% \fi
+%
+% \iffalse
+%<*glostyle2>
+% \fi
+%
+% \subsection{Ohne trennende Buchstaben}
+%
+% Quote-Zeichen geändert für deutsche Unterstützung.
+% \begin{macrocode}
+quote '>'
+% \end{macrocode}
+% Buchstaben einfügen
+% \begin{macrocode}
+heading_prefix "\\glossarynewchar{"
+heading_suffix "}\n"
+symhead_positive "Symbole"
+numhead_positive "Zahlen"
+headings_flag 1
+% \end{macrocode}
+% Schlüsselwörter in der Eingabedatei.
+% \begin{macrocode}
+keyword "\\glossaryentry"
+% \end{macrocode}
+% |theglossary|"=Umgebung statt |theindex|"=Umgebung verwenden.
+% \begin{macrocode}
+preamble "\\begin{theglossary}\n\\hhclsiscorrectglossarytrue\n"
+postamble "\n\n\\end{theglossary}\n"
+group_skip "\n"
+% \end{macrocode}
+% Keine Kommata vor und zwischen den Zahlen.
+% \begin{macrocode}
+delim_0 ""
+delim_1 ""
+delim_2 ""
+delim_n "\\glossarypagedelim"
+delim_r "\\glossarypagerange"
+% \end{macrocode}
+% Die öffnende Klammer anfügen. Die schließende wird von \LaTeX\ erzeugt.
+% \begin{macrocode}
+item_0 "\n \\item ["
+% \end{macrocode}
+%
+% \iffalse
+%</glostyle2>
+% \fi
+%
+%
+% \section{Bib\TeX"=Stil}
+%
+% Einträge.
+% \begin{macrocode}
+%<*bibstyle>
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ language
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label }
+
+% \end{macrocode}
+% Variablen definieren.
+% \begin{macrocode}
+INTEGERS
+ { output.state
+ before.all
+ mid.sentence
+ after.sentence
+ after.block
+ before.title
+ }
+STRINGS
+ { s
+ t
+ language.state
+ change.temp
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+ #4 'before.title :=
+ "nostate" 'language.state :=
+}
+% \end{macrocode}
+% Logische Nicht"=Funktion.
+% \begin{macrocode}
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+% \end{macrocode}
+% Logische Und"=Funktion.
+% \begin{macrocode}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+% \end{macrocode}
+% Logische Oder"=Funktion
+% \begin{macrocode}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+% \end{macrocode}
+% Schreibt den zweiten Stackwert einmal mit veränderter Groß"= und
+% Kleinschreibung und einmal mit Originalschreibung hinter den Befehl
+% \cs{btxifchangecase}.
+% \LaTeX\ entscheiden dann, welche Version verwendet werden so..
+% \begin{macrocode}
+FUNCTION {language.change.case}
+{
+ 'change.temp :=
+ 't :=
+ "\btxifchangecase {"
+ t change.temp change.case$ *
+ "}{" *
+ t *
+ "}" *
+}
+% \end{macrocode}
+% Ausgabefunktion.
+% \begin{macrocode}
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ {
+ output.state before.title =
+ { "\btxauthorcolon\ " * write$ }
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+% \end{macrocode}
+% Noch eine Ausgabefunktion.
+% \begin{macrocode}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+% \end{macrocode}
+% Gibt eine Warnung bei leerem Argument aus und schreibt den Inhalt
+% sonst.
+% \begin{macrocode}
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+% \end{macrocode}
+% Ausgabe eines Literatuverweises.
+% Zunächst wird die Sprache auf die angegebene Sprache gesetzt, dann
+% der \cs{bibitem} gesetzt.
+% \begin{macrocode}
+FUNCTION {output.bibitem}
+{ newline$
+ language empty$
+ { "empty language in " cite$ * warning$ }
+ { language.state language =
+ 'skip$
+ { "\btxselectlanguage {" language * "}" * write$
+ newline$
+ }
+ if$
+ language 'language.state :=
+ }
+ if$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+% \end{macrocode}
+% Ende des Eintrags.
+% \begin{macrocode}
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {after.authors}
+{ output.state before.all =
+ 'skip$
+ { before.title 'output.state := }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.block.checkc}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'after.authors
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+% \end{macrocode}
+% Formatier den Stackinhalt mit \cs{btxnamefont}.
+% \begin{macrocode}
+FUNCTION {namefont}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\btxnamefont {" swap$ * "}" * }
+ if$
+}
+% \end{macrocode}
+% Formatier den Stackinhalt mit \cs{btxlastnamefont}.
+% \begin{macrocode}
+FUNCTION {lastnamefont}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\btxlastnamefont {" swap$ * "}" * }
+ if$
+}
+% \end{macrocode}
+% Formatier den Stackinhalt mit \cs{btxtitlefont}.
+% \begin{macrocode}
+FUNCTION {titlefont}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\btxtitlefont {" swap$ * "}" * }
+ if$
+}
+% \end{macrocode}
+% Formatier den Stackinhalt mit \cs{btxjournalfont}.
+% \begin{macrocode}
+FUNCTION {journalfont}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\btxjournalfont {" swap$ * "}" * }
+ if$
+}
+% \end{macrocode}
+% Formatier den Stackinhalt mit \cs{btxvolumefont}.
+% \begin{macrocode}
+FUNCTION {volumefont}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\btxvolumefont {" swap$ * "}" * }
+ if$
+}
+% \end{macrocode}
+% Formatier den Stackinhalt mit \cs{btxetalfont}.
+% \begin{macrocode}
+FUNCTION {etalfont}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\btxetalfont {" swap$ * "}" * }
+ if$
+}
+% \end{macrocode}
+% Neue Variablen definieren.
+% \begin{macrocode}
+INTEGERS { nameptr namesleft numnames }
+% \end{macrocode}
+% Namen (Autoren, Herausgeber) formatieren.
+% \begin{macrocode}
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ {
+%</bibstyle>
+% \end{macrocode}
+% \changes{1.13}{2003/12/16}{Second Bib style with different name format}%
+% \changes{1.14}{2003/12/17}{New abbreviated Bib styles}%
+% \begin{macrocode}
+%<*bibstyle&long&names1>
+ s nameptr "{ff~}{vv~}" format.name$
+ s nameptr "{ll}" format.name$ lastnamefont *
+ s nameptr "{, jj}" format.name$ * 't :=
+%</bibstyle&long&names1>
+%<*bibstyle&long&names2>
+ s nameptr "{ll}" format.name$ lastnamefont
+ s nameptr "{, jj}{, ff}{~vv}" format.name$ * 't :=
+%</bibstyle&long&names2>
+%<*bibstyle&long&names3>
+ s nameptr "{f{.\,}.~}{vv~}" format.name$
+ s nameptr "{ll}" format.name$ lastnamefont *
+ s nameptr "{, jj}" format.name$ * 't :=
+%</bibstyle&long&names3>
+%<*bibstyle&short&names1>
+ s nameptr "{f{.\,}.~}{vv~}" format.name$
+ s nameptr "{ll}" format.name$ lastnamefont *
+ s nameptr "{, jj}" format.name$ * 't :=
+%</bibstyle&short&names1>
+%<*bibstyle&short&names2>
+ s nameptr "{ll}" format.name$ lastnamefont
+ s nameptr "{,~jj}{,~f{.\,}.}{~vv}" format.name$ * 't :=
+%</bibstyle&short&names2>
+%<*bibstyle>
+ namesleft #1 >
+ { ", " * t namefont * }
+ { numnames #2 >
+ { "\btxandcomma {}" * }
+ 'skip$
+ if$
+ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ "others" =
+ { " " "\btxetalshort {.}" etalfont * * }
+ { " \btxandlong {}\ " * t namefont * }
+ if$
+ }
+ if$
+ }
+ {
+%</bibstyle>
+%<*bibstyle&long&names3>
+ s nameptr "{f{.\,}.~}{vv~}" format.name$
+ s nameptr "{ll}" format.name$ lastnamefont *
+ s nameptr "{, jj}" format.name$ * namefont
+%</bibstyle&long&names3>
+%<*bibstyle&long&!names3>
+ s nameptr "{ll}" format.name$ lastnamefont
+ s nameptr "{,~jj}{, ff}{~vv}" format.name$ * namefont
+%</bibstyle&long&!names3>
+%<*bibstyle&short>
+ s nameptr "{ll}" format.name$ lastnamefont
+ s nameptr "{,~jj}{,~f{.\,}.}{~vv}" format.name$ * namefont
+%</bibstyle&short>
+%<*bibstyle>
+ }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+% \end{macrocode}
+% Autoren formatieren.
+% \begin{macrocode}
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+% \end{macrocode}
+% Herausgeber formatieren.
+% \begin{macrocode}
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+%</bibstyle>
+%<bibstyle&long> { "\ (\btxeditorslong {})" * }
+%<bibstyle&long> { "\ (\btxeditorlong {})" * }
+%<bibstyle&short> { "\ (\btxeditorsshort {.})" * }
+%<bibstyle&short> { "\ (\btxeditorshort {.})" * }
+%<*bibstyle>
+ if$
+ }
+ if$
+}
+% \end{macrocode}
+% Titel formatieren.
+% \begin{macrocode}
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" language.change.case titlefont }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+% \end{macrocode}
+% Datum formatieren.
+% \begin{macrocode}
+FUNCTION {format.date}
+{ year empty$
+ { month empty$
+ { "" }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ }
+ if$
+ }
+ { month empty$
+ 'year
+ { month "\ " * year * }
+ if$
+ }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.btitle}
+{ title titlefont
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { "\ " }
+ if$
+ swap$ * *
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {volume.tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { "\ " }
+ if$
+ swap$ volumefont * *
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { output.state after.block =
+%</bibstyle>
+%<bibstyle&long> { "\Btxvolumelong {}" }
+%<bibstyle&long> { "\btxvolumelong {}" }
+%<bibstyle&short> { "\Btxvolumeshort {.}" }
+%<bibstyle&short> { "\btxvolumeshort {.}" }
+%<*bibstyle>
+ if$
+ volume volume.tie.or.space.connect
+ series empty$
+ 'skip$
+%</bibstyle>
+%<bibstyle&long> { " \btxofserieslong {}\ " * series titlefont * }
+%<bibstyle&short> { " \btxofseriesshort {.}\ " * series titlefont * }
+%<*bibstyle>
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+%</bibstyle>
+%<bibstyle&long> { "\btxnumberlong {}" }
+%<bibstyle&long> { "\Btxnumberlong {}" }
+%<bibstyle&short> { "\btxnumbershort {.}" }
+%<bibstyle&short> { "\Btxnumbershort {.}" }
+%<*bibstyle>
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+%</bibstyle>
+%<bibstyle&long> { " \btxinserieslong {}\ " * series titlefont * }
+%<bibstyle&short> { " \btxinseriesshort {.}\ " * series titlefont * }
+%<*bibstyle>
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+% \end{macrocode}
+% Auf"|lage formatieren.
+% \begin{macrocode}
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ {
+ output.state mid.sentence =
+%</bibstyle>
+%<bibstyle&long> { edition "l" language.change.case "~\btxeditionlong {}" * }
+%<bibstyle&long> { edition "t" language.change.case "~\btxeditionlong {}" * }
+%<bibstyle&short> { edition "l" language.change.case "~\btxeditionshort {.}" * }
+%<bibstyle&short> { edition "t" language.change.case "~\btxeditionshort {.}" * }
+%<*bibstyle>
+ if$
+ }
+ if$
+}
+% \end{macrocode}
+% ISBN formatieren
+% \begin{macrocode}
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { "\btxISBN~\btxISBNfont {" isbn * "}" * }
+ if$
+}
+% \end{macrocode}
+% ISSN formatieren.
+% \begin{macrocode}
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { "\btxISSN~\btxISSNfont {" issn * "}" * }
+ if$
+}
+% \end{macrocode}
+% Url formatieren.
+% \begin{macrocode}
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { "\btxurlfont {" url * "}" * }
+ if$
+}
+% \end{macrocode}
+% Noch eine Variable.
+% \begin{macrocode}
+INTEGERS { multiresult }
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+% \end{macrocode}
+% Seitenzahlen formatieren.
+% \begin{macrocode}
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+%</bibstyle>
+%<bibstyle&long> { "\btxpageslong {}" pages n.dashify tie.or.space.connect }
+%<bibstyle&long> { "\btxpagelong {}" pages tie.or.space.connect }
+%<bibstyle&short> { "\btxpagesshort {.}" pages n.dashify tie.or.space.connect }
+%<bibstyle&short> { "\btxpageshort {.}" pages tie.or.space.connect }
+%<*bibstyle>
+ if$
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "(" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":" * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+%</bibstyle>
+%<bibstyle&long> { "\btxchapterlong {}" }
+%<bibstyle&short> { "\btxchaptershort {.}" }
+%<*bibstyle>
+ { type "l" language.change.case }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+%</bibstyle>
+%<bibstyle&long> { "\Btxinlong {}\ " booktitle titlefont * }
+%<bibstyle&long> { "\Btxinlong {}\ " format.editors * ": " * booktitle titlefont * }
+%<bibstyle&short> { "\Btxinshort {.}\ " booktitle titlefont * }
+%<bibstyle&short> { "\Btxinshort {.}\ " format.editors * ": " * booktitle titlefont * }
+%<*bibstyle>
+ if$
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" language.change.case
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.tr.number}
+{
+ number empty$
+ {
+ type empty$
+%</bibstyle>
+%<bibstyle&long> { "\btxtechreplong {}" }
+%<bibstyle&short> { "\btxtechrepshort {.}" }
+%<*bibstyle>
+ { type "t" language.change.case }
+ if$
+ }
+ {
+ type empty$
+%</bibstyle>
+%<bibstyle&long> { "\Btxtechreplong {}" }
+%<bibstyle&short> { "\Btxtechrepshort {.}" }
+%<*bibstyle>
+ { type "t" language.change.case }
+ if$
+ number tie.or.space.connect
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+%</bibstyle>
+%<bibstyle&long> { "\Btxinlong {}\ " journal titlefont * }
+%<bibstyle&short> { "\Btxinshort {.}\ " journal titlefont * }
+%<*bibstyle>
+ if$
+ }
+%</bibstyle>
+%<bibstyle&long> { "\Btxinlong {}\ " key titlefont * }
+%<bibstyle&short> { "\Btxinshort {.}\ " key titlefont * }
+%<*bibstyle>
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.crossref.editor}
+%</bibstyle>
+%<bibstyle&long&names1>{ editor #1 "{ff~}{vv~}{ll}{, jj}" format.name$ namefont
+%<bibstyle&long&names2>{ editor #1 "{ll}{, jj}{, ff}{~vv}" format.name$ namefont
+%<bibstyle&long&names3>{ editor #1 "{f{.\,}.~}{vv~}{ll}{, jj}" format.name$ namefont
+%<bibstyle&short&names1>{ editor #1 "{f.~}{vv~}{ll}{, jj}" format.name$ namefont
+%<bibstyle&short&names2>{ editor #1 "{ll}{, jj}{, f.}{~vv}" format.name$ namefont
+%<*bibstyle>
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " " "\btxetalshort {.}" etalfont * * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv~}{ll}{ jj}" format.name$ "others" =
+ { " " "\btxetalshort {.}" etalfont * * }
+ { " \btxandlong {}\ " * editor #2
+%</bibstyle>
+%<bibstyle&long&names1> "{ff~}{vv~}{ll}{, jj}" format.name$
+%<bibstyle&long&names2> "{ll}{, jj}{, ff}{~vv}" format.name$
+%<bibstyle&long&names3> "{f{.\,}.~}{vv~}{ll}{, jj}" format.name$
+%<bibstyle&short&names1> "{f.~}{vv~}{ll}{, jj}" format.name$
+%<bibstyle&short&names2> "{ll}{, jj}{, f.}{~vv}" format.name$
+%<*bibstyle>
+ namefont * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+%</bibstyle>
+%<*bibstyle&long>
+ "\Btxinlong {}\ "
+ }
+ { "\Btxvolumelong {}" volume volume.tie.or.space.connect
+ " \btxofserieslong {}\ " *
+%</bibstyle&long>
+%<*bibstyle&short>
+ "\Btxinshort {.}\ "
+ }
+ { "\Btxvolumeshort {.}" volume volume.tie.or.space.connect
+ " \btxofseriesshort {.}\ " *
+%</bibstyle&short>
+%<*bibstyle>
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { series titlefont * }
+ if$
+ }
+ { key titlefont * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+%</bibstyle>
+%<*bibstyle&long>
+ { "\Btxinlong {}\ " booktitle titlefont * }
+ if$
+ }
+ { "\Btxinlong {}\ " key titlefont * }
+ if$
+ }
+ { "\Btxinlong {}\ " format.crossref.editor * }
+%</bibstyle&long>
+%<*bibstyle&short>
+ { "\Btxinshort {.}\ " booktitle titlefont * }
+ if$
+ }
+ { "\Btxinshort {.}\ " key titlefont * }
+ if$
+ }
+ { "\Btxinshort {.}\ " format.crossref.editor * }
+%</bibstyle&short>
+%<*bibstyle>
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal
+ title missing$
+ { titlefont }
+ { journalfont }
+ if$
+ "journal" output.check
+ format.vol.num.pages output
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.issn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ after.authors
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ after.authors
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ after.authors
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {conference} { inproceedings }
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ after.authors
+ format.btitle "title" output.check
+ author empty$
+ { organization empty$
+ { address new.block.checka
+ address output
+ }
+ 'skip$
+ if$
+ }
+ { organization address new.block.checkb
+ organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.title "title" output.check
+ new.block
+ "\btxmastthesis {}" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ title howpublished new.block.checkc
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.isbn output
+ format.issn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.btitle "title" output.check
+ new.block
+ "\btxphdthesis {}" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ after.authors
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { editor empty$
+ { publisher new.sentence.checka }
+ { organization publisher new.sentence.checkb
+ organization output
+ }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ editor empty$
+ 'skip$
+ { organization output }
+ if$
+ publisher output
+ }
+ if$
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.isbn output
+ new.block
+ format.url output
+ note output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ after.authors
+ format.title "title" output.check
+ new.block
+ format.url output
+ note "note" output.check
+ format.date output
+ fin.entry
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {default.type} { misc }
+
+% \end{macrocode}
+% Monate sollen ausgeschrieben werden.
+% \begin{macrocode}
+%</bibstyle>
+%<*bibstyle&long>
+MACRO {jan} {"\btxmonjanlong {}"}
+MACRO {feb} {"\btxmonfeblong {}"}
+MACRO {mar} {"\btxmonmarlong {}"}
+MACRO {apr} {"\btxmonaprlong {}"}
+MACRO {may} {"\btxmonmaylong {}"}
+MACRO {jun} {"\btxmonjunlong {}"}
+MACRO {jul} {"\btxmonjullong {}"}
+MACRO {aug} {"\btxmonauglong {}"}
+MACRO {sep} {"\btxmonseplong {}"}
+MACRO {oct} {"\btxmonoctlong {}"}
+MACRO {nov} {"\btxmonnovlong {}"}
+MACRO {dec} {"\btxmondeclong {}"}
+%</bibstyle&long>
+%<*bibstyle&short>
+MACRO {jan} {"\btxmonjanshort {.}"}
+MACRO {feb} {"\btxmonfebshort {.}"}
+MACRO {mar} {"\btxmonmarshort {.}"}
+MACRO {apr} {"\btxmonaprshort {.}"}
+MACRO {may} {"\btxmonmayshort {.}"}
+MACRO {jun} {"\btxmonjunshort {.}"}
+MACRO {jul} {"\btxmonjulshort {.}"}
+MACRO {aug} {"\btxmonaugshort {.}"}
+MACRO {sep} {"\btxmonsepshort {.}"}
+MACRO {oct} {"\btxmonoctshort {.}"}
+MACRO {nov} {"\btxmonnovshort {.}"}
+MACRO {dec} {"\btxmondecshort {.}"}
+%</bibstyle&short>
+%<*bibstyle>
+% \end{macrocode}
+% Zeitschriften.
+% \begin{macrocode}
+MACRO {acmcs} {"ACM Computing Surveys"}
+MACRO {acta} {"Acta Informatica"}
+MACRO {cacm} {"Communications of the ACM"}
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+MACRO {ibmsj} {"IBM Systems Journal"}
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+MACRO {ipl} {"Information Processing Letters"}
+MACRO {jacm} {"Journal of the ACM"}
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+MACRO {scp} {"Science of Computer Programming"}
+MACRO {sicomp} {"SIAM Journal on Computing"}
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+MACRO {tods} {"ACM Transactions on Database Systems"}
+MACRO {tog} {"ACM Transactions on Graphics"}
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+MACRO {tcs} {"Theoretical Computer Science"}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+READ
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+INTEGERS { len }
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+%</bibstyle>
+%<bibstyle&long> s nameptr "{ll{ }}{ ff{ }}{vv{ } }{ jj{ }}" format.name$ 't :=
+%<bibstyle&short> s nameptr "{ll{ }}{ f{ }}{vv{ } }{ jj{ }}" format.name$ 't :=
+%<*bibstyle>
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {presort}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+ITERATE {presort}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+SORT
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+STRINGS { longest.label }
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+INTEGERS { number.label longest.label.width }
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+EXECUTE {initialize.longest.label}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+ITERATE {longest.label.pass}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+ " \providebibliographyfont{name}{}%" write$ newline$
+ " \providebibliographyfont{lastname}{}%" write$ newline$
+ " \providebibliographyfont{title}{\emph}%" write$ newline$
+ " \providebibliographyfont{etal}{\emph}%" write$ newline$
+ " \providebibliographyfont{journal}{}%" write$ newline$
+ " \providebibliographyfont{volume}{}%" write$ newline$
+ " \providebibliographyfont{ISBN}{\MakeUppercase}%" write$ newline$
+ " \providebibliographyfont{ISSN}{\MakeUppercase}%" write$ newline$
+ " \providebibliographyfont{url}{\url}%" write$ newline$
+}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% \end{macrocode}
+%
+% \begin{macrocode}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+%</bibstyle>
+% \end{macrocode}
+%
+% \section{Cover der Installations"=CD}
+% \changes{1.04}{2003/09/23}{CD"=Hülle in die Hauptdistribution
+% aufgenommen}%
+%
+% \begin{macrocode}
+%<*cdcover>
+\documentclass[ngerman,a4paper,fleqn,10pt,landscape]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage{babel}
+\usepackage[scaled=0.92]{helvet}
+\usepackage{courier}
+\usepackage{graphicx}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{cd-cover}
+\usepackage{relsize}
+\usepackage{array}
+\usepackage{url}
+\usepackage{mdwlist}
+\usepackage[textwidth=250mm,textheight=140mm]{geometry}
+\usepackage{ragged2e}
+\usepackage[num]{isodate}
+
+\makeatletter
+\def\GetFileInfo#1{%
+ \def\filename{#1}%
+ \def\@tempb##1 ##2 ##3\relax##4\relax{%
+ \def\filedate{##1}%
+ \def\fileversion{##2}%
+ \def\fileinfo{##3}}%
+ \edef\@tempa{\csname ver@#1\endcsname}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+\makeatother
+
+\GetFileInfo{cdcover.tex}
+
+\setlength{\parindent}{0mm}
+\setlength{\parskip}{6pt plus 2pt minus 1pt}
+
+\renewcommand*\familydefault{\sfdefault}
+
+\begin{document}
+%\begin{landscape}
+\bookletsheet{%
+ \RaggedRight
+ {\bfseries\Large Zusammenfassung des \textsmaller{CD}"=Inhalts}
+ \vspace{5mm}
+
+ \begin{tabular}{@{}>{\ttfamily}l>{\RaggedRight}p{0.7\linewidth}}
+ alt/ & Archiv alter Versionen der Dokumentklasse \\
+ doc/ & Autorenrichtlinien inklusive Installationsanleitung
+ \url{bgteubner.pdf} (Times),
+ \url{bgteubner-cm.pdf} (European Computer Modern) und
+ Beschreibung der Implementation \url{bgreucls.pdf} \\
+ pakete/ & \textsmaller{ZIP}"=Archive der Installationsdateien \\
+ source/ & Quelltext der \texttt{bgteubner}"=Dokumentklasse
+ \end{tabular}
+ \vspace{5mm}
+
+ Lesen Sie vor der Installation und vor dem Schreiben des Buchs bitte
+ aufmerksam die Autorenrichtlinien \url{bgteubner.pdf} oder
+ \url{bgteubner-cm.pdf} durch.
+ }{%
+ \begin{center}
+ \sffamily\Large
+ {\bfseries\Large
+ Harald Harders
+ \par}%
+ \vskip 2.0em
+ \par
+ {\bfseries\LARGE
+ Erstellen von Büchern für den Springer Vieweg Verlag mit \LaTeX
+ \par}
+ \vskip 2.0em
+ {\bfseries\Large
+ Dokumentklasse, Autorenrichtlinien und Installationsanleitung,
+ zusätzliche Pakete
+ \par}
+ \vskip 5.0em
+ Version \fileversion, \printdateTeX{\filedate}
+ \par
+ \vskip 2.0em
+ Springer Vieweg\quad Stuttgart $\cdot$ Leipzig $\cdot$ Wiesbaden
+ \end{center}
+}
+
+\backsheet{Erstellen von Büchern für den Springer Vieweg Verlag mit \LaTeX
+ \qquad\qquad\qquad\quad\small v\fileversion}{%
+ \RaggedRight
+ {\bfseries
+ Harald Harders
+ \par}
+ \vskip 1em
+ {\Large\bfseries Erstellen von Büchern für den Springer Vieweg Verlag mit
+ \LaTeX
+ \par}
+ \vskip 3em
+
+ Diese \textsmaller{CD} enthält die Dokumentklasse
+ \url{bgteubner.cls} sowie die Autorenrichtlinien inklusive
+ Installationsanleitung in zwei Versionen:
+ \begin{itemize*}
+ \item \url{bgteubner.pdf}: Brotschrift Times,
+ \item \url{bgteubner-cm.pdf}: Brotschrift European
+ Computer Modern.
+ \end{itemize*}
+ Außerdem sind Zusatzpakete enthalten, die in \TeX Live\,8 entweder
+ nicht oder nur veraltet enthalten sind.
+
+ Diese \textsmaller{CD} sollte zusammen mit einer
+ \TeX Live"=8"=Installation verwendet werden (dafür ist eine
+ Anleitung enthalten).
+ Sie läuft auch mit anderen Distributionen, wobei dann aber keine
+ Anleitung enthalten ist.
+ }
+%\end{landscape}
+
+\end{document}
+% \end{macrocode}
+%
+% \iffalse
+%</cdcover>
+% \fi
+% \Finale