diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/bgteubner/bgteucls.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/bgteubner/bgteucls.dtx | 6908 |
1 files changed, 6908 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/bgteubner/bgteucls.dtx b/Master/texmf-dist/source/latex/bgteubner/bgteucls.dtx new file mode 100644 index 00000000000..fa473b79c1c --- /dev/null +++ b/Master/texmf-dist/source/latex/bgteubner/bgteucls.dtx @@ -0,0 +1,6908 @@ +% \iffalse meta comment +% +% bgteubner class bundle +% +% bgteucls.dtx +% Copyright 2003--2012 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 `Teubner +% 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> [2012/04/07 v2.02 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{4836} +\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-17x24-times.pdf| bzw.\ +% \verb|bgteubner-17x24-cm.pdf| verfügbar ist, beschrieben. +% Hier wird nur die Implementierung erläutert. +% \end{abstract} +% +% \tableofcontents +% +% \section*{Copyright (in der englischen Originalformulierung)} +% +% Copyright 2003--2012 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 ``Teubner +% Verlag, Wiesbaden, Germany''. +% \end{itemize} +% +% This program consists of all files listed in |manifest.txt|. +% +% \StopEventually{\PrintChanges \PrintIndex} +% +% \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-17x24-times.pdf\space\space Times, + 17cm x 24cm,}% +\typeout{\space\space + bgteubner-17x24-cm.pdf\space\space\space\space\space European + Computer Modern, 17cm x 24cm,}% +\typeout{\space\space + bgteubner-a5-times.pdf\space\space\space\space\space Times, DIN-A 5,}% +\typeout{\space\space + bgteubner-a5-cm.pdf\space\space\space\space\space \space\space\space + European Computer Modern, DIN-A 5.}% +\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{smallheadings}{scrbook} +% \end{macrocode} +% Literaturverzeichnis, Stichwortverzeichnis, Abbildungs"= und +% Tabellenverzeichnis erscheinen im Inhaltsverzeichnis: +% \begin{macrocode} +\PassOptionsToClass{bibtotoc,idxtotoc,liststotoc}{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{pointlessnumbers}{scrbook} +% \end{macrocode} +% Leere Seiten sollen ganz leer sein, auch keine Seitenzahl: +% \begin{macrocode} +\PassOptionsToClass{cleardoubleempty}{scrbook} +% \end{macrocode} +% Keine Linie unter dem Kolumnentitel: +% \begin{macrocode} +\PassOptionsToClass{headnosepline}{scrbook} +% \end{macrocode} +% Kein Präfix vor Kapitelnummern im Anhang: +% \begin{macrocode} +\PassOptionsToClass{noappendixprefix}{scrbook} +% \end{macrocode} +% Tabellen erhalten Über"= anstatt Unterschriften: +% \begin{macrocode} +\PassOptionsToClass{tablecaptionabove}{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{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}[2003/04/22] +% \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. +% \begin{macrocode} +\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} +\renewcommand*\listoffigures{% + \begingroup% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \lof@heading% + \small + \@parskipfalse\@parskip@indent% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\listoftables} +% Verzeichnis der Tabellen (kleinere Schrift): +% \begin{macrocode} +\renewcommand*\listoftables{% + \begingroup + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \lot@heading% + \small + \@parskipfalse\@parskip@indent% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + \endgroup +} +% \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} +% +% \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}{% + \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} +\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 +} +% \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} +% Befehle selbst +\newcommand\@exercise{\@startsection{@exercise}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedsection\normalfont\sectfont\nobreak\size@section\nobreak}} +% \end{macrocode} +% Einträge ins Inhaltsverzeichnis definieren, falls gewünscht: +% \begin{macrocode} +\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 +% \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}{\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}{% + \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} +\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 +} +% \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{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{% + \ifpdf + \if\@title\@empty\else\pdfinfo{/Title (\@title)}\fi + \if\@subtitle\@empty + \pdfinfo{/Subject (\@edition. Auflage)}% + \else + \pdfinfo{/Subject (\@subtitle\space (\@edition. Auflage))}% + \fi + \ifx\@author\@empty + \else + \pdfinfo{/Author (\@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 `Teubner + % Verlag, Wiesbaden, Germany'. + \begingroup + \GetFileInfo{bgteubner.cls}% + \pdfinfo{/Creator (document class bgteubner.cls for the + Springer Vieweg Verlag, Wiesbaden, Germany, by Harald Harders + \fileversion)}% + \endgroup + \pdfinfo{/Keywords (Bild: \thebilderzahl; Tabelle: \thetabellenzahl; + Aufgabe: \theaufgabenzahl\hhcls@theoremanzahl)}% + \fi + \if\@title\@empty + \else + \immediate\write\hhcls@fileinfo{Titel: \@title}% + \fi + \if\@subtitle\@empty + \else + \immediate\write\hhcls@fileinfo{Untertitel: \@subtitle}% + \fi + \if\@subtitle\@empty + \fi + \immediate\write\hhcls@fileinfo{\@edition. Auflage}% + \ifx\@author\@empty + \else + \immediate\write\hhcls@fileinfo{Autor(en): \@author}% + \fi + \immediate\write\hhcls@fileinfo{Bild: \thebilderzahl; Tabelle: + \thetabellenzahl; Aufgabe: \theaufgabenzahl\hhcls@theoremanzahl}% +} +% \end{macrocode} +% \begin{macro}{\maketitle} +% Titel ertellen. +% \begin{macrocode} +\ifhhcls@titlepage +\renewcommand*\maketitle{% + \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 +} +\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-17x24-times.pdf} (Times), + \url{bgteubner-17x24-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-17x24-times.pdf} oder + \url{bgteubner-17x24-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 Vieweg+Teubner 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 + Vieweg+Teubner\quad Stuttgart $\cdot$ Leipzig $\cdot$ Wiesbaden + \end{center} +} + +\backsheet{Erstellen von Büchern für den Vieweg+Teubner 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 Vieweg+Teubner 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-17x24-times.pdf}: Brotschrift Times, + \item \url{bgteubner-17x24-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 |