summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-12-26 23:18:36 +0000
committerKarl Berry <karl@freefriends.org>2013-12-26 23:18:36 +0000
commit9b219d1b664067729034647a4b37626cf2bf5e26 (patch)
tree00708467b44f90736dc32ed1bebb95e9c4710139 /Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx
parentc00c8298eb6913b74270a36c1f1018f1e9946f7b (diff)
koma-script (26dec13)
git-svn-id: svn://tug.org/texlive/trunk@32489 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx')
-rw-r--r--Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx1567
1 files changed, 1567 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx b/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx
new file mode 100644
index 00000000000..8c1966bb2bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/koma-script/scrkernel-floats.dtx
@@ -0,0 +1,1567 @@
+% \CheckSum{1198}
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-floats.dtx
+% Copyright (c) Markus Kohm, 2002-2013
+%
+% This file is part of the LaTeX2e KOMA-Script bundle.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of all files listed in manifest.txt.
+% ----------------------------------------------------------------------
+% scrkernel-floats.dtx
+% Copyright (c) Markus Kohm, 2002-2013
+%
+% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz,
+% Version 1.3c, verteilt und/oder veraendert werden.
+% Die neuste Version dieser Lizenz ist
+% http://www.latex-project.org/lppl.txt
+% und Version 1.3c ist Teil aller Verteilungen von LaTeX
+% Version 2005/12/01 oder spaeter und dieses Werks.
+%
+% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained"
+% (allein durch den Autor verwaltet).
+%
+% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm.
+%
+% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien.
+% ======================================================================
+% \fi
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse
+%%% From File: $Id: scrkernel-floats.dtx 1502 2013-11-06 11:00:12Z mjk $
+%<*driver>
+% \fi
+\ProvidesFile{scrkernel-floats.dtx}[2013/06/12 v3.12 KOMA-Script
+ (floats)]
+% \iffalse
+\documentclass[halfparskip-]{scrdoc}
+\usepackage[english,ngerman]{babel}
+\usepackage[latin1]{inputenc}
+\CodelineIndex
+\RecordChanges
+\GetFileInfo{scrkernel-floats.dtx}
+\title{\KOMAScript{} \partname\ \texttt{\filename}%
+ \footnote{Dies ist Version \fileversion\ von Datei \texttt{\filename}.}}
+\date{\filedate}
+\author{Markus Kohm}
+
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \selectlanguage{ngerman}
+%
+% \changes{v2.95}{2002/06/25}{%
+% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
+%
+% \section{Gleitumgebungen}
+%
+% \KOMAScript{} verfügt bezüglich der Gleitumgebungen über einige
+% Features, die über das, was die Standardklassen bieten, hinaus
+% geht. \marginline{Geplant!} Allerdings ist das hier verwendete Interface
+% gnadenlos veraltet und wird deshalb irgendwann ersetzt. Dabei wird
+% höchstwahrscheinlich grundsätzlich auf das \textsf{caption}-Paket aufgebaut
+% werden. Man betrachte dieses Modul daher als grundsätzlich zur Disposition
+% stehend.
+%
+% Die einzige Gleitumgebung, über die Briefe derzeit verfügen sind
+% Randnotizen.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \iffalse
+%<*option>
+% \fi
+%
+% \iffalse
+%<*class>
+%<*!letter>
+% \fi
+%
+% \subsection{Einige Anweisungen und Einstellungen für die Optionen}
+%
+% Einige Anweisungen und Einstellungen werden bereits benötigt, bevor die
+% Optionen abgearbeitet werden.
+%
+% \begin{macro}{\if@captionabove}
+% \changes{v2.8h}{2001/07/19}{neu}
+% \changes{v3.09}{2011/03/23}{Initialisierung vor den Optionen}
+% Ob es sich bei \cs{caption} um eine Unter- oder Überschrift handelt und also
+% \cs{abovecaptionskip} davor und \cs{belowcaptionskip} danach steht
+% oder umgekehrt, wird über diesen Schalter gesteuert. Voreingestellt
+% sind Unterschriften.
+% \begin{macrocode}
+\newif\if@captionabove\@captionabovefalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@tablecaptionabove}
+% \changes{v2.8h}{2001/07/19}{neu Option}
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die Klassen
+% verschoben}
+% \changes{v2.98c}{2008/02/18}{Definition erfolgt etwas früher}
+% \begin{macro}{\@tablecaptionabovetrue}
+% \begin{macro}{\@tablecaptionabovefalse}
+% Die Einstellung, ob es Tabellenüber- oder -unterschriften sind, wird in
+% einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@tablecaptionabove\@tablecaptionabovefalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@figurecaptionabove}
+% \changes{v3.09}{2011/03/23}{neu Option}
+% \begin{macro}{\@figurecaptionabovetrue}
+% \changes{v3.09}{2011/03/23}{neu (intern)}
+% \begin{macro}{\@figurecaptionabovefalse}
+% \changes{v3.09}{2011/03/23}{neu (intern)}
+% Die Einstellung, ob es Abbildungsüber- oder -unterschriften sind, wird in
+% einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@figurecaptionabove\@figurecaptionabovefalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\ifonelinecaptions}
+% \changes{v2.8q}{2001/11/17}{neuer Schalter}
+% \changes{v2.98c}{2008/03/03}{Definition erfolgt etwas früher}
+% \begin{macro}{\onelinecaptionstrue}
+% \begin{macro}{\onelinecaptionsfalse}
+% Die Entscheidung, ob die Sonderbehandlung für einzeilige caption-Texte
+% durchgeführt werden soll, wird in einem Schalter gespeichert. In der
+% Hoffnung, beim Laden von \textsf{caption2} Speicher zu sparen, wird
+% der gleiche Name verwendet, den auch \textsf{caption2}
+% verwendet. Trotzdem sollte man diesen Schalter als internen Schalter
+% betrachten.
+% \begin{macrocode}
+\newif\ifonelinecaptions\onelinecaptionstrue
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scap@pos}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% \changes{v2.98c}{2008/03/03}{Definition erfolgt etwas früher}
+% Hier wird gespeichert, ob die Beschreibung bei |captionbeside| links oder
+% rechts vom Rest stehen soll. Voreingestellt ist rechts davon
+% (\emph{\textbf{r}ight}). Andere Möglichkeiten sind \emph{\textbf{l}eft},
+% \emph{\textbf{o}uter}, \emph{\textbf{i}nner}.
+% \begin{macrocode}
+\newcommand*{\scap@pos}{r}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@valign}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% \changes{v2.98c}{2008/03/03}{Definition erfolgt etwas früher}
+% Hier wird gespeichert, ob bei |captionbeside| die beiden Boxen (siehe
+% Definition der Umgebung) \emph{\textbf{t}op}, \emph{\textbf{b}ottem} oder
+% \emph{\textbf{c}enter} ausgerichtet werden sollen. Andere Buchstaben
+% sind nicht erlaubt. Voreingestellt ist \emph{\textbf{b}ottem}.
+% \begin{macrocode}
+\newcommand*{\scap@valign}{b}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Optionen für Titel von Gleitumgebungen}
+%
+% \begin{option}{captions}
+% \changes{v2.98c}{2008/02/18}{Neuer Zentralschalter für caption}
+% \changes{v3.09}{2011/04/02}{Neue Werte (\texttt{heading},
+% \texttt{signature}, \texttt{figureheading}, \texttt{figuresignature})}
+% Dies ist nun die zentrale Option für Einstellungen zu \cs{caption}. Als
+% besondere Schwierigkeit ergibt sich dabei jedoch, dass das Paket
+% \textsf{caption} einige Sonderbehandlungen für \KOMAScript{} enthält, die
+% darauf angewiesen sind, dass die alte Optionenschnittstelle verwendet
+% wird. Erfreulicherweise funktioniert das aber ab Version~3.1g über eine
+% Erweiterung der Schalter-Umschaltbefehle (|\@tablecaptionabovetrue|,
+% |\@tablecaptionabovefalse|, |\onelinecaptionstrue|,
+% |\onelinecaptionsfalse|), so dass lediglich dafür georgt werden muss,
+% dass diese weiterhin verwendet werden.
+% \begin{macrocode}
+\KOMA@key{captions}{%
+ \KOMA@set@ncmdkey{captions}{@tempa}{%
+ {heading}{0},{above}{0},{top}{0},%
+ {signature}{1},{below}{1},{bot}{1},{bottom}{1},%
+ {tableheading}{2},%
+ {tableabove}{2},{abovetable}{2},{abovetabular}{2},{topattable}{2},%
+ {tablesignature}{3},%
+ {tablebelow}{3},{belowtable}{3},{belowtabular}{3},{bottomattable}{3},%
+ {figureheading}{4},{figureabove}{4},{abovefigure}{4},{topatfigure}{4},%
+ {figuresignature}{5},{figurebelow}{5},{belowfigure}{5},{bottomatfigure}{5},%
+ {oneline}{6},%
+ {nooneline}{7},%
+ {rightbeside}{8},{besideright}{8},%
+ {leftbeside}{9},{besideleft}{9},%
+ {innerbeside}{10},{besideinner}{10},%
+ {outerbeside}{11},{besideouter}{11},%
+ {topbeside}{12},{besidetop}{12},%
+ {centeredbeside}{13},{besidecentered}{13},%
+ {middlebeside}{13},{besidemiddle}{13},%
+ {bottombeside}{14},{besidebottom}{14}%
+ }{#1}%
+ \ifcase \@tempa\relax
+ \@tablecaptionabovetrue
+ \@figurecaptionabovetrue
+ \@captionabovetrue
+ \or
+ \@tablecaptionabovefalse
+ \@figurecaptionabovefalse
+ \@captionabovefalse
+ \or
+ \@tablecaptionabovetrue
+ \or
+ \@tablecaptionabovefalse
+ \or
+ \@figurecaptionabovetrue
+ \or
+ \@figurecaptionabovefalse
+ \or
+ \onelinecaptionstrue
+ \or
+ \onelinecaptionsfalse
+ \or
+ \renewcommand*{\scap@pos}{r}%
+ \or
+ \renewcommand*{\scap@pos}{l}%
+ \or
+ \renewcommand*{\scap@pos}{i}%
+ \or
+ \renewcommand*{\scap@pos}{o}%
+ \or
+ \renewcommand*{\scap@valign}{t}%
+ \or
+ \renewcommand*{\scap@valign}{c}%
+ \or
+ \renewcommand*{\scap@valign}{b}%
+ \fi
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{tablecaptionabove}
+% \changes{v2.8h}{2001/07/19}{neue Option}
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die Klassen
+% verschoben}
+% \changes{v2.98c}{2008/02/18}{obsolete}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{option}{tablecaptionbelow}
+% \changes{v2.8h}{2001/07/19}{neue Option}
+% \changes{v2.8k}{2001/08/15}{aus \texttt{typearea} in die Klassen
+% verschoben}
+% \changes{v2.98c}{2008/02/18}{obsolete}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% Es besteht nun die Wahl, ob \cs{caption} bei Tabellen für Unter-
+% oder Überschriften voreingestellt ist. Die Defaulteinstellung ist
+% aus Kompatibilitätsgründen die Tabellenunterschrift.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{tablecaptionabove}{captions=tableheading}
+\KOMA@DeclareDeprecatedOption{tablecaptionbelow}{captions=tablesignature}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{origlongtable}
+% \changes{v2.8l}{2001/08/16}{neue Option}
+% Wenn das \textsf{longtable}-Paket geladen ist, werden die
+% Tabellentitel dafür normalerweise von den Klassen umdefiniert. Dies
+% geschieht automatisch nicht, wenn das \textsf{caption2}-Paket
+% geladen ist. Es geschieht ausserdem nicht, wenn diese Option gesetzt
+% ist.
+% \begin{macro}{\if@komalongtable}
+% \changes{v2.8l}{2001/08/16}{neue Option}
+% \begin{macro}{\@komalongtabletrue}
+% \begin{macro}{\@komalongtablefalse}
+% Die Einstellung wird in einem Schalter gespeichert.
+% \begin{macrocode}
+\newif\if@komalongtable\@komalongtabletrue
+\DeclareOption{origlongtable}{\@komalongtablefalse}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{onelinecaption}
+% \changes{v2.8q}{2001/11/17}{neue Option}
+% \changes{v2.98c}{2008/03/03}{obsolete}
+% \changes{v2.98c}{2008/03/03}{keine Sonderbehandlung für \textsf{caption2}
+% mehr}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{option}{noonelinecaption}
+% \changes{v2.8q}{2001/11/17}{neue Option}
+% \changes{v2.98c}{2008/03/03}{obsolete}
+% \changes{v2.98c}{2008/03/03}{keine Sonderbehandlung für \textsf{caption2}
+% mehr}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% Da für diese Option nicht der gleiche Name verwendet wird, wie bei
+% \textsf{caption2}, wurde von den Optionen bis Version~2.98b nicht nur der
+% Schalter entsprechend gesetzt, sondern auch die korrespondierende Option an
+% \textsf{caption2} weitergeleitet. Der gleiche Name konnte schlecht
+% verwendet werden, weil er bei einer Klasse auch nicht ansatzweise
+% als selbsterklärend bezeichnet werden kann. Ab Version~2.98c entfällt die
+% Sonderbehandlung von \textsf{caption2}.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{onelinecaption}{captions=oneline}
+\KOMA@DeclareDeprecatedOption{noonelinecaption}{captions=nooneline}
+% \end{macrocode}
+% \end{option}
+% \end{option}
+%
+%
+% \iffalse
+%</!letter>
+%</class>
+%</option>
+%<*body>
+% \fi
+%
+% \subsection{Randnotizen}
+%
+% Randnotizen sind ebenfalls eine Art von Gleitumgebung.
+%
+% \begin{macro}{\marginline}
+% \KOMAScript{} stellt zusätzlich ein Randzeilenmakro zur Verfügung,
+% das je nach gerader oder ungerader Seite in doppelseitigen Layout
+% rechts- oder linksbündig gesetzt werden muss.
+% \changes{v2.4l}{1997/02/06}{Definition mit Hilfe des optionalen
+% Parameters von \cs{marginpar} deutlich vereinfacht}
+% \changes{v2.8q}{2001/11/27}{fehlende Klammern ergänzt}
+% \begin{macrocode}
+\newcommand\marginline[1]{%
+ \marginpar[\raggedleft{#1}]{\raggedright #1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \iffalse
+%<*class>
+%<*!letter>
+% \fi
+%
+% \subsection{Definitionen für Titel von Gleitumgebungen}
+%
+% \begin{macro}{\caption}
+% \changes{v2.2c}{1995/05/25}{Fließtitel auf CJK umgestellt}
+% Es ist möglich, die Fließumgebungen mit einem Titel und einer
+% Beschreibung zu versehen. Diese wird vom ggf. etwas abgesetzt.
+% \begin{Length}{abovecaptionskip}
+% \begin{Length}{belowcaptionskip}
+% Um wieviel ist in zwei Längenregistern gespeichert:
+% \begin{macrocode}
+\newlength{\abovecaptionskip}
+\newlength{\belowcaptionskip}
+\setlength{\abovecaptionskip}{10\p@}
+\setlength{\belowcaptionskip}{0\p@}
+% \end{macrocode}
+% \end{Length}
+% \end{Length}
+% \begin{macro}{\captionformat}
+% \changes{v2.3c}{1995/08/06}{neu}
+% Trennung von Label und Text:
+% \begin{macrocode}
+\newcommand*{\captionformat}{:\ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@caption}
+% \changes{v2.8h}{2001/07/19}{neu (intern)}
+% \begin{macro}{\captionabove}
+% \changes{v2.8h}{2001/07/19}{neu}
+% \begin{macro}{\captionbelow}
+% \changes{v2.8h}{2001/07/19}{neu}
+% Damit überhaupt zwischen Unter- und Überschriften unterschieden
+% werden kann, muss zunächst das Originalmakro gesichert werden. Dies
+% geschieht erst zu Beginn des Dokuments, damit Pakete ggf. noch ihre
+% eigenen Definitionen von \cs{caption} vornehmen können. Das
+% \textsf{hyperref}-Paket ist so ein Kandidat.
+% \begin{macrocode}
+\newcommand{\scr@caption}{}
+\AtBeginDocument{\let\scr@caption\caption}
+% \end{macrocode}
+% \end{macro}
+% Jetzt ist es möglich durch einfaches Umlegen des Schalters für die
+% korrekte Darstellung zu sorgen:
+% \begin{macrocode}
+\newcommand{\captionabove}{\@captionabovetrue\scr@caption}
+\newcommand{\captionbelow}{\@captionabovefalse\scr@caption}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{environment}{captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu}
+% Um einiges komplizierter als die Beschreibung unter oder über die
+% Tabelle oder Abbildung zu setzen, ist der Versuch, sie daneben zu
+% setzen. Dies funktioniert frundsätzlich auch nicht mit
+% \texttt{longtable}-Tabellen.
+%
+% \begin{macro}{\scap@caption}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% Die Beschreibung, die der Umgebung als Parameter übergeben wird,
+% muss zwischengespeichert werden. Hier wird lediglich das Makro
+% dafür reserviert.
+% \begin{macrocode}
+\newcommand*{\scap@caption}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@width}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% Die Breite, die Tabelle bzw. Abbildung einschließlich Beschreibung
+% und insgesamt haben dürften. Voreingestellt ist die gesamte
+% verfügbare Breite.
+% \begin{macrocode}
+\newcommand*{\scap@width}{\linewidth}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@move}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% Der Wert, um den die Tabelle bzw. Abbildung einschließlich
+% Beschreibung nach rechts bzw. außen verschoben werden.
+% Voreingestellt ist keine Verschiebung.
+% \begin{macrocode}
+\newcommand*{\scap@move}{\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\scap@currentlabel}
+% \changes{v2.8q}{2001/11/24}{neu (intern)}
+% Da \cs{caption} innerhalb einer Umgebung (\cs{parbox} und
+% \texttt{captionbeside}) aufgerufen wird, würde ein \cs{label}, das
+% zwar innerhalb der Gleitumgebung aber nach der
+% \texttt{captionbeside}-Umgebung eingefügt wird, nicht die
+% Gleitumgebung, sondern die umgebende Referenzebene
+% referenzieren. Damit das nicht geschieht, wird in der
+% \texttt{captionbeside}-Umgebung in der \cs{parbox} die aktuelle
+% Referenz \cs{@currentlabel} in dem globalen Makro
+% \cs{scap@currentlabel} zwischengespeichert und am Ende der
+% \texttt{captionbeside}-Umgebung mit Hilfe von \cs{aftergroup} nach
+% dem Ende der Umgebung wiederhergestellt. Da die
+% \texttt{captionbeside}-Umgebung ohnehin nicht geschachtelt werden
+% kann, funktioniert das problemlos. Für diese Aktion wird hier ein
+% globales Makro reserviert.
+% \begin{macrocode}
+\newcommand*{\scap@currentlabel}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifscap@alt}
+% \changes{v2.8q}{2001/11/22}{neuer Schalter}
+% \begin{macro}{\scap@alttrue}
+% \begin{macro}{\scap@altfalse}
+% Der Schalter, der angibt, ob die Verschiebung \cs{scap@move} im
+% doppelseitigen Modus aus linken Seiten vom rechten Rand aus nach
+% links erfolgen soll.
+% \begin{macrocode}
+\newif\ifscap@alt
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% \begin{macro}{\@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% \begin{macro}{\@@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% \begin{macro}{\@@@@captionbeside}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% Die Umgebung soll einmal folgende Parameter besitzen:
+% \begin{description}
+% \item[(optional)] Verzeichniseintrag
+% \item[(obligatorisch)] Beschreibung
+% \item[(optional)] lokaler Wert für \cs{scap@pos}
+% \item[(optional)] lokaler Wert für \cs{scap@width}
+% \item[(optional)] lokaler Wert für \cs{scap@move}
+% \item[(*)] lokaler Wert für \cs{ifscap@alt} (Stern gesetzt
+% entspricht \cs{scap@alttrue}
+% \end{description}
+% Wie man sieht, sollte man bei Angabe aller optionalen Parameter auch
+% bewusst den Stern setzen oder darauf verzichten.
+%
+% Damit alle Parameter ausgewertet werden können, werden einige
+% Hilfsmakros benötigt.
+% \begin{macrocode}
+\newcommand*{\@captionbeside}{}
+\long\def\@captionbeside[#1]#2{%
+ \@ifnextchar [%]
+ {\@@captionbeside[{#1}]{#2}}
+ {\c@pti@nb@sid@[{#1}]{#2}}%
+}
+\newcommand*{\@@captionbeside}{}
+\long\def\@@captionbeside[#1]#2[#3]{%
+ \def\scap@pos{#3}%
+ \@ifnextchar [%]
+ {\@@@captionbeside[{#1}]{#2}}
+ {\c@pti@nb@sid@[{#1}]{#2}}%
+}
+\newcommand*{\@@@captionbeside}{}
+\long\def\@@@captionbeside[#1]#2[#3]{%
+ \def\scap@width{#3}%
+ \@ifnextchar [%]
+ {\@@@@captionbeside[{#1}]{#2}}
+ {\setlength{\@tempdima}{#3}%
+ \addtolength{\@tempdima}{-\linewidth}%
+ \setlength{\@tempdima}{-.5\@tempdima}%
+ \edef\scap@move{\the\@tempdima}%
+ \c@pti@nb@sid@[{#1}]{#2}}%
+}
+\newcommand*{\@@@@captionbeside}{}
+\long\def\@@@@captionbeside[#1]#2[#3]{%
+ \def\scap@move{#3}%
+ \@ifstar
+ {\scap@alttrue\c@pti@nb@sid@[{#1}]{#2}}
+ {\scap@altfalse\c@pti@nb@sid@[{#1}]{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\c@pti@nb@sid@b@x}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% Es wird noch eines der kostbaren Boxregister benötigt.
+% \begin{macrocode}
+\newbox\c@pti@nb@sid@b@x
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@pti@nb@sid@}
+% \changes{v2.8q}{2001/11/22}{neu (intern)}
+% \changes{v2.98c}{2008/03/11}{vertikale Ausrichtung korrigiert}
+% \changes{v3.07a}{2010/11/04}{vertikale Ausrichtung im t- und b-Fall erneut
+% korrigiert}
+% Hier wird nun die Umgebung eigentlich geöffnet, während zuvor nur
+% die Parameter ausgewertet wurden.
+% \begin{macrocode}
+\newcommand{\c@pti@nb@sid@}{}
+\long\def\c@pti@nb@sid@[#1]#2{%
+ \def\scap@caption{%
+ \if c\scap@valign
+ \setlength{\abovecaptionskip}{\z@}%
+ \else \if t\scap@valign
+ \setlength{\abovecaptionskip}{-\ht\strutbox}%
+ \else \if b\scap@valign
+ \setlength{\abovecaptionskip}{\z@}%
+ \fi
+ \fi
+ \fi
+ \setlength{\belowcaptionskip}{-\dp\strutbox}%
+ \captionbelow[{#1}]{#2}%
+ }%
+ \begin{lrbox}{\c@pti@nb@sid@b@x}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Jetzt endlich können wir uns auf die Umgebung stürzen. Die
+% Umgebung zu starten ist einfach. Es wird ein Doppelargumentmakro
+% ausgeführt.
+% \begin{macrocode}
+\newenvironment*{captionbeside}{%
+ \@dblarg\@captionbeside%
+}{%
+% \end{macrocode}
+% Komplizierter ist die Beendigung der Umgebung. Hier fällt der
+% gesamte Satzaufwand an.
+% \changes{v2.9a}{2002/06/27}{\cs{ifthispageodd} statt
+% \cs{if@thispageodd}}
+% \begin{macrocode}
+ \end{lrbox}%
+ \settowidth{\@tempdima}{\usebox\c@pti@nb@sid@b@x}%
+ \setlength{\@tempdimb}{\scap@width}%
+ \addtolength{\@tempdimb}{-\@tempdima}%
+ \addtolength{\@tempdimb}{-\columnsep}%
+ \ifdim \@tempdimb<2em
+ \ClassWarning{\KOMAClassName}{%
+ caption beside will be very, very small.\MessageBreak
+ In most cases this will result in overfull and\MessageBreak
+ underfull \string\hbox\space messages%
+ }%
+ \fi
+ \onelinecaptionsfalse
+ \setcapwidth[r]{\@tempdimb}%
+ \let\@tempa\scap@pos
+ \setlength{\@tempdimc}{\scap@move}%
+ \if i\scap@pos\def\@tempa{l}\fi
+ \if o\scap@pos\def\@tempa{r}\fi
+ \if@twoside
+ \ifthispageodd{}{%
+ \if o\scap@pos\def\@tempa{l}\fi
+ \if i\scap@pos\def\@tempa{r}\fi
+ \ifscap@alt
+ \addtolength{\@tempdimc}{\scap@width}%
+ \addtolength{\@tempdimc}{-\linewidth}%
+ \setlength{\@tempdimc}{-\@tempdimc}%
+ \fi
+ }%
+ \fi
+ \hspace*{\@tempdimc}%
+% \end{macrocode}
+% \changes{v2.9p}{2003/12/10}{\cs{@temdima} replaced by
+% \cs{wd}\cs{c@pti@nb@sid@b@x}, because \cs{@temdima} would be changed}
+% \begin{macrocode}
+ \if l\@tempa
+ \rlap{%
+ \parbox[\scap@valign]{\@tempdimb}{\scap@caption
+ \global\let\scap@currentlabel\@currentlabel}%
+ \nobreak\hskip\columnsep
+ \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
+ }%
+ \else
+ \rlap{%
+ \parbox[\scap@valign]{\wd\c@pti@nb@sid@b@x}{\usebox\c@pti@nb@sid@b@x}%
+ \nobreak\hskip\columnsep
+ \parbox[\scap@valign]{\@tempdimb}{\scap@caption
+ \global\let\scap@currentlabel\@currentlabel}%
+ }%
+ \fi
+ \par
+ \aftergroup\let\aftergroup\@currentlabel
+ \aftergroup\scap@currentlabel
+}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \begin{macro}{\capfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
+% Die Schriftart der Titel kann eingestellt werden. Dazu dient dieses
+% Makro, das als internes Makro zu verstehen ist,
+% \begin{macro}{\caplabelfont}
+% \changes{v2.8c}{2001/06/29}{\cs{normalcolor} eingefügt}
+% Davon unabhängig kann auch die Schriftart der Titel-Titel
+% ("`Abbildung X:"') eingestellt werden. Auch dieses Makro ist als
+% internes Makro zu verstehen.
+% \begin{macrocode}
+\newcommand*\capfont{\normalfont\normalcolor}
+\newcommand*\caplabelfont{\normalfont\normalcolor}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\scr@fnt@caption}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{caption}}
+% \begin{macro}{\scr@fnt@captionlabel}
+% \changes{v2.8o}{2001/09/14}{neues Element \texttt{captionlabel}}
+% Die eigentliche Änderung der Schriftart erfolgt über das Element
+% \texttt{caption} bzw. \texttt{captionlabel}.
+% \begin{macrocode}
+\newcommand*{\scr@fnt@caption}{\capfont}
+\newcommand*{\scr@fnt@captionlabel}{\caplabelfont}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@makecaption}
+% \changes{v2.3a}{1995/07/08}{\cs{setbox}\cs{tempboxa}\cs{hbox}
+% durch \cs{sbox}\cs{@tempboxa} ersetzt}
+% \changes{v2.3a}{1995/07/08}{Minipage-Flag zurückgesetzt (ist das
+% ok?)}
+% \changes{v2.3f}{1995/12/09}{Fontumschaltung einheitlich für lange
+% und kurze Unter-/Überschriften}
+% \changes{v2.5g}{1999/10/09}{neben den komplett hängenden
+% Titeln sind nun auch nicht hängende oder teilweise hängende
+% möglich}
+% Bis Version 2.5f sah die Definition wie folgt aus.
+% \begin{verbatim}
+% \long\def\@makecaption#1#2{%
+% \vskip\abovecaptionskip
+% \sbox\@tempboxa{{\caplabelfont #1\captionformat}{\capfont #2}}%
+% \ifdim \wd\@tempboxa >\hsize
+% \@hangfrom{{\caplabelfont #1\captionformat}}{\capfont #2\par}
+% \else
+% \global \@minipagefalse
+% \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+% \fi
+% \vskip\belowcaptionskip}
+% \end{verbatim}
+% \begin{macro}{\ifdofullc@p}
+% Nun jedoch wird das ganze etwas komplizierter. Als erstes wird ein
+% Schalter benötigt, der angibt, ob auf die volle Länge des "`Labels"'
+% eingezogen werden soll, oder nicht:
+% \begin{macrocode}
+\newif\ifdofullc@p
+% \end{macrocode}
+% wobei die Standardeinstellung der volle Einzug ist, um zum bisherigen
+% Verhalten kompatibel zu bleiben.
+% \begin{macrocode}
+\dofullc@ptrue
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\if@capbreak}
+% \changes{v2.8j}{2001/07/30}{neu}
+% Außerdem gibt es einen Schalter, der angibt, ob nach dem Label ein
+% Umbruch erfolgen soll. Dies ist normalerweise nicht der Fall.
+% \begin{macrocode}
+\newif\if@capbreak\@capbreakfalse
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setcapindent}
+% \changes{v2.8j}{2001/07/30}{\cs{if@capbreak} wird verwendet}
+% \changes{v2.8l}{2001/08/17}{\cs{edef}\cs{cap@indent} statt
+% \cs{def}\cs{cap@indent}}
+% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von
+% \textsf{caption2} umdefiniert}
+% Dann wird weiter ein Befehl benötigt, mit dem der Benutzer die
+% Weite des Einzugs selbst einstellen kann. Da intern für die Weite
+% ein Makro verwendet werden soll, findet hier sicherheitshalber eine
+% Zuweisung an eine Dimension statt. So sollten Fehlermeldungen hier
+% und nicht erst bei Verwendung auftauchen. Natürlich muss hier auch
+% der automatische Einzug abgeschaltet werden. In der Sternform wird
+% außerdem dafür gesorgt, dass zwischen "`Label"' und Beschreibung
+% ein Umbruch erfolgt. In der normalen Version wird stattdessen für
+% Kompatibilität zu früheren Versionen gesorgt.
+% \begin{macro}{\@setcapindent}
+% \begin{macro}{\@@setcaptindent}
+% Für die Implementierung der Sternform werden zwei interne Makros
+% benötigt.
+% \begin{macrocode}
+\newcommand*{\setcapindent}{\@ifstar{\@@setcapindent}{\@setcapindent}}
+\newcommand*{\@setcapindent}[1]{%
+ \setlength{\@tempdima}{#1}%
+ \ifdim\@tempdima>\hsize
+ \addtolength{\@tempdima}{-\hsize}\@capbreaktrue
+ \else
+ \@capbreakfalse
+ \fi
+ \edef\cap@indent{\the\@tempdima}%
+ \dofullc@pfalse
+}
+\newcommand*{\@@setcapindent}[1]{%
+ \setlength{\@tempdima}{#1}%
+ \edef\cap@indent{\the\@tempdima}%
+ \dofullc@pfalse\@capbreaktrue
+}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcapindent}{%
+ \ClassWarning{\KOMAClassName}{%
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use `\string\captionstyle'
+ and\MessageBreak
+ set length '\string\captionindent' instead of
+ using\MessageBreak
+ `\string\setcapindent'%
+ }%
+ \captionstyle{indent}%
+ \@ifstar{\setlength{\captionindent}}{\setlength{\captionindent}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setcaphanging}
+% \changes{v2.8q}{2001/11/17}{wird nach dem Laden von
+% \textsf{caption2} umdefiniert}
+% Andererseits soll es auch möglich sein, nachträglich wieder den
+% automatischen Einzug einzuschalten. Dafür gibt es ein weiteres
+% Makro.
+% \begin{macrocode}
+\newcommand*{\setcaphanging}{\dofullc@ptrue\@capbreakfalse}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcaphanging}{%
+ \ClassWarning{\KOMAClassName}{%
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use
+ `\string\captionstyle'\MessageBreak
+ instead of `\string\setcaphang'%
+ }
+ \captionstyle{hang}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Nun aber zur neuen Definition der Titel. Zunächst geht alles wie
+% gehabt.
+% \changes{v2.5g}{1999/10/09}{\cs{@makecaption} per \cs{newcommand}
+% definiert statt mit \cs{long}\cs{def}}
+% \changes{v2.8h}{2001/07/19}{Unterscheidung zwischen Über- und
+% Unterschriften}
+% \changes{v2.8j}{2001/07/30}{\cs{@makecaption} verwendet
+% \cs{@@makecaption}}
+% \changes{v2.8q}{2001/11/17}{die Sonderbehandlung für einzeilige
+% \emph{caption}s ist abschaltbar}
+% \changes{v2.8q}{2001/11/17}{Titel können in ihrer Breite
+% beschränkt werden}
+% \begin{macrocode}
+\newcommand{\@makecaption}[2]{%
+ \if@captionabove
+ \vskip\belowcaptionskip
+ \else
+ \vskip\abovecaptionskip
+ \fi
+ \@@makecaption\@firstofone{#1}{#2}%
+ \if@captionabove
+ \vskip\abovecaptionskip
+ \else
+ \vskip\belowcaptionskip
+ \fi
+}
+% \end{macrocode}
+% \begin{macro}{\@@makecaption}
+% Tatsächlich gesetzt wird der Titel mit diesem Makro. Dabei muss der
+% erste Parameter entweder \cs{@gobble} oder \cs{@firstofone} sein.
+%
+% \begin{macro}{\cap@width}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}
+% \begin{macro}{\cap@left}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}
+% \begin{macro}{\cap@right}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}
+% Die Breite der mehrzeiligen bzw. die maximale Breite der einzeiligen
+% \emph{caption}s sowie das Makro das links und rechts von der Box mit
+% der mehrzeiligen \emph{caption} aufgerufen wird. In der
+% Voreinstellung wird für Zentrierung gesorgt.
+% \begin{macrocode}
+\newcommand*{\cap@width}{\hsize}
+\newcommand*{\cap@left}{\hfill}
+\newcommand*{\cap@right}{\hfill}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setcapwidth}
+% \changes{v2.8q}{2001/11/17}{neu}
+% \changes{v2.9a}{2002/06/27}{\cs{ifthispageodd} statt
+% \cs{if@thispageodd}}
+% \changes{v2.97}{2007/02/27}{Mindestbreite für captions ist 0\,pt}
+% Hier wird \cs{cap@width} gesetzt. Dabei werden optional auch
+% \cs{cap@left} und \cs{cap@right} angepasst.
+% \begin{macrocode}
+\newcommand*{\setcapwidth}[2][]{%
+ \begingroup%
+ \setlength{\@tempdima}{#2}%
+ \ifdim\@tempdima <\z@
+ \@tempdima\z@
+ \ClassWarning{\KOMAClassName}{%
+ caption width less than 0pt not allowed.\MessageBreak
+ Setting caption width to 0pt%
+ }%
+ \fi
+ \edef\@tempa{\endgroup\def\noexpand\cap@width{\the\@tempdima}}%
+ \@tempa
+ \begingroup
+ \edef\@tempa{#1}%
+ \def\@tempb{c}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\hfill}%
+ \else
+ \def\@tempb{l}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{\let\cap@left=\relax\let\cap@right\hfill}%
+ \else
+ \def\@tempb{r}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{\let\cap@left=\hfill\let\cap@right=\relax}%
+ \else
+ \def\@tempb{i}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ }%
+ \fi
+ }%
+ \else
+ \def\@tempb{o}\ifx\@tempa\@tempb
+ \endgroup
+ \def\cap@margin{%
+ \let\cap@left=\hfill
+ \let\cap@right=\relax
+ \if@twoside
+ \ifthispageodd{}{%
+ \let\cap@left=\relax
+ \let\cap@right=\hfill
+ }%
+ \fi
+ }%
+ \else
+ \ifx \@tempa\@empty\else
+ \ClassError{\KOMAClassName}{%
+ unknown optional position argument%
+ }{%
+ You've used `#1' as position argument at
+ \string\setcaptionwidth,\MessageBreak
+ but only ONE of `c', `l', `r', `i`, `o` ist
+ allowed.\MessageBreak
+ Argument will be ignored, if you'll continue.%
+ }%
+ \fi
+ \endgroup
+ \fi\fi\fi\fi\fi
+}
+% \end{macrocode}
+% Falls \textsf{caption2} geladen wird, ändert sich die Funktion. Das
+% optionale Argument wird dann ignorriert.
+% \begin{macrocode}
+\AfterPackage{caption2}{%
+ \renewcommand*{\setcapwidth}[2][]{%
+ \ClassWarning{\KOMAClassName}{%
+ Ignorring optional argument of `\string\setcapwidth'!\MessageBreak
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use
+ `\string\setcaptionwidth'\MessageBreak
+ instead of `\string\setcapwidth'%
+ }%
+ \setcaptionwidth{#2}%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\cap@margin}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}
+% Dieses Makro beinhaltet nicht den Wert der Ränder, sondern das
+% Makro, mit dem innerhalb von \cs{@@makecaption} die Makros
+% \cs{cap@left} und \cs{cap@right} neu definiert werden. Dies
+% geschieht nur, wenn die Ränder mit \cs{setcapmargin} gesetzt
+% werden. Vordefiniert ist also keinerlei Aktion.
+% \begin{macrocode}
+\newcommand*{\cap@margin}{}
+\let\cap@margin=\relax%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\setcapmargin}
+% \changes{v2.8q}{2001/11/17}{neu}
+% \begin{macro}{\@setcapmargin}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}
+% \changes{v2.9a}{2002/06/27}{\cs{ifthispageodd} statt
+% \cs{if@thispageodd}}
+% \begin{macro}{\@@setcapmargin}
+% \changes{v2.8q}{2001/11/17}{neu (intern)}
+% Statt die Breite der \emph{caption} zu setzen, können auch die
+% Ränder gesetzt werden. In der Sternvariante werden im zweiseitigen
+% Modus die Ränder auf linken Seiten vertauscht.
+% \begin{macrocode}
+\newcommand*{\setcapmargin}{\@ifstar{\@setcapmargin}{\@@setcapmargin}}
+\newcommand*{\@setcapmargin}[2][\@tempdimb]{%
+ \def\cap@margin{%
+ \onelinecaptionsfalse
+ \begingroup
+ \setlength{\@tempdima}{\hsize}%
+ \setlength{\@tempdimb}{#2}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \setlength{\@tempdimc}{#1}%
+ \addtolength{\@tempdima}{-\@tempdimc}%
+ \edef\@tempa{\endgroup
+ \def\noexpand\cap@width{\the\@tempdima}%
+ \noexpand\if@twoside
+ \noexpand\ifthispageodd{%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ }{%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimb}}%
+ }%
+ \noexpand\else
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ \noexpand\fi
+ }%
+ \@tempa
+ }%
+}
+\newcommand*{\@@setcapmargin}[2][\@tempdimb]{%
+ \def\cap@margin{%
+ \onelinecaptionsfalse
+ \begingroup
+ \setlength{\@tempdima}{\hsize}%
+ \setlength{\@tempdimb}{#2}%
+ \addtolength{\@tempdima}{-\@tempdimb}%
+ \setlength{\@tempdimc}{#1}%
+ \addtolength{\@tempdima}{-\@tempdimc}%
+ \edef\@tempa{\endgroup
+ \def\noexpand\cap@width{\the\@tempdima}%
+ \def\noexpand\cap@left{\noexpand\hspace*{\the\@tempdimc}}%
+ \def\noexpand\cap@right{\noexpand\hspace*{\the\@tempdimb}}%
+ }%
+ \@tempa
+ }%
+}
+% \end{macrocode}
+% Wenn \textsf{caption2} geladen ist, ändert sich die Bedeutung.
+% \begin{macrocode}
+\AfterPackage{caption2}{%
+ \renewcommand*{\@setcapmargin}[2][\@tempdimb]{%
+ \setlength{\@tempdimb}{#2}%
+ \setlength{\@tempdima}{#1}%
+ \ifdim\@tempdima\@tempdimb\else
+ \ClassWarning{\KOMAClassName}{%
+ Can set only centered caption!\MessageBreak
+ You're using package `caption2'.\MessageBreak
+ Because of this you should also use
+ `\string\setcaptionmargin'\MessageBreak
+ instead of `\string\setcapmargin'%
+ }%
+ \fi
+ \addtolength{\@tempdimb}{\@tempdimb}%
+ \setcaptionmargin{.5\@tempdimb}}%
+ \let\@@setcapmargin=\@setcapmargin
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Jetzt aber zum Eigentlichen. Die Breite der \emph{caption} muss nur
+% bestimmte werden, wenn Option \texttt{onelinecaption} verwendet
+% wird. Das bedeutet auch, dass bei \texttt{noonelinecaption} das
+% Problem mit dem Hochzählen der Fußnoten nicht auftritt.
+% \changes{v2.8q}{2002/05/17}{Problem mit doppelten Fußnoten behoben}%
+% \changes{v2.95}{2004/01/30}{Korrekturen für vertikalen Abstand und
+% \textsl{float}-Paket}%
+% \changes{v2.95a}{2006/07/13}{diverse Korrekturen für den vertikalen
+% Abstand u.\,a. bei Verwendung des \textsl{color}-Pakets}%
+% \changes{v2.97c}{2007/06/06}{\cs{unskip}\cs{strut} eingefügt, um die
+% vertikale Ausrichtung im \emph{above}-Fall in eingen Fällen zu
+% verbessern}%
+% \changes{v3.02a}{2009/01/24}{diverse Gruppen- bzw. Argumentklammern ergänzt}%
+% \changes{v3.11c}{2013/06/12}{\cs{capfont} durch
+% \cs{usekomafont{caption}}ersetzt}%
+% \changes{v3.11c}{2013/06/12}{\cs{caplabelfont} durch
+% \cs{usekomafont{captionlabel}}ersetzt}%
+% \changes{v3.12}{2013/06/12}{ein \cs{usekomafont} durch
+% \cs{usesizeofkomafont} ersetzt}
+% \begin{macrocode}
+\newcommand{\@@makecaption}[3]{%
+ \cap@margin
+ \ifonelinecaptions
+ \@tempcnta=\value{mpfootnote}\@tempcntb=\value{footnote}%
+ \let\scr@tmp@footnotetext=\@footnotetext
+ \let\@footnotetext=\@gobble
+ \sbox\@tempboxa{%
+ {\usekomafont{caption}{\strut\ignorespaces
+ #1{{\usekomafont{captionlabel}{#2\captionformat}}}%
+ #3\unskip\strut}}%
+ }%
+ \let\@footnotetext=\scr@tmp@footnotetext
+ \let\scr@tmp@footnotetext=\undefined
+ \setcounter{footnote}{\@tempcntb}%
+ \setcounter{mpfootnote}{\@tempcnta}%
+ \else
+ \sbox\@tempboxa{\hspace*{2\cap@width}}%
+ \fi
+ \begingroup%
+ \setlength{\@tempdima}{\cap@width}%
+ \ifdim \wd\@tempboxa >\@tempdima
+ \hb@xt@\hsize{%
+ \setbox\@tempboxa\vbox{\hsize=\cap@width
+% \end{macrocode}
+% Im Fall, dass nun also mehrzeilig gesetzt werden muss, ist zu
+% unterscheiden, ob wie bisher voll hängend gearbeitet werden soll
+% oder nicht. In ersterem Fall machen wir das, wie bisher, allerdings
+% wird der \cs{capfont} früher aktiviert, damit darin auch globale
+% Größsenänderungen für den Titel Platz finden. Außerdem wird die
+% geänderte Parameterübergabe berücksichtigt.
+% \changes{v2.97c}{2007/09/17}{\cs{scr@smashdp} eingefügt}
+% \begin{macrocode}
+ \ifdofullc@p
+ {\usekomafont{caption}{\@hangfrom{\scr@smashdp{\strut\ignorespaces
+ #1{{\usekomafont{captionlabel}{#2\captionformat}}}}}%
+ {#3\unskip\strut\par}}}%
+% \end{macrocode}
+% Im zweiten Fall ist nun zu unterscheiden, ob nach dem Label ein
+% Umbruch erfolgen soll oder nicht. Dabei ist der Einzug zu beachten.
+% Ist der Einzug negativ, so findet ebenfalls ein Umbruch statt und
+% nur die erste Folgezeile wird eingezogen.
+% \begin{macrocode}
+ \else%
+ \ifdim\cap@indent<\z@
+ {\usekomafont{caption}{\strut\ignorespaces
+ #1{{\usekomafont{captionlabel}{#2\captionformat\par}}}%
+ \noindent\hspace*{-\cap@indent}#3\unskip\strut\par}}%
+ \else%
+ \if@capbreak
+ {\usekomafont{caption}{\strut\ignorespaces
+ #1{{\usekomafont{captionlabel}{#2\captionformat\par}}}%
+ \noindent\@hangfrom{\hspace*{\cap@indent}}{#3\par}}}%
+ \else
+ {\usekomafont{caption}{%
+ \@hangfrom{\scr@smashdp\strut\hspace*{\cap@indent}}%
+ {\hspace{-\cap@indent}\scr@smashdp{\ignorespaces#1%
+ {{\usekomafont{captionlabel}{%
+ #2\captionformat}}}}#3\unskip\strut\par}}}%
+ \fi
+ \fi
+ \fi
+ }%
+ \setlength{\@tempdima}{\ht\@tempboxa}%
+ \addtolength{\@tempdima}{\dp\@tempboxa}%
+ \addtolength{\@tempdima}{-\ht\strutbox}%
+ \ht\@tempboxa\ht\strutbox
+ \dp\@tempboxa\@tempdima
+ \strut\cap@left
+ \box\@tempboxa
+ \cap@right\strut
+ }%
+ \else
+ \global \@minipagefalse
+% \end{macrocode}
+% Im einzeiligen Fall wird nun die Box wie oben erneut erzeugt und gleich
+% gesetzt. Im Prinzip ginge das auch direkt ohne erst eine Box zu erzeugen.
+% \changes{v3.02a}{2009/01/24}{die Box selbst muss im \cs{capfont} gesetzt
+% werden, falls darin eine Größenumschaltung stattfindet}
+% \begin{macrocode}
+ \sbox\@tempboxa{%
+ {\usekomafont{caption}{\scr@smashdp{\strut\ignorespaces
+ #1{{\usekomafont{captionlabel}{#2\captionformat}}}}%
+ #3}}%
+ }%
+ {\usesizeofkomafont{caption}{%
+ \hb@xt@\hsize{\strut\cap@left\box\@tempboxa\cap@right\strut}}}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\LT@makecaption}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}
+% \changes{v2.8k}{2001/08/15}{keine Umdefinierung, wenn das
+% \textsf{caption2}-Paket erkannt oder die Option
+% \texttt{origlongtable} gesetzt wurde}
+% \changes{v2.8q}{2001/11/18}{Breite und Anordnung wird über
+% \KOMAScript-Makros bestimmt}
+% \changes{v2.8q}{2001/11/18}{Verwendung von \cs{AfterPackage}}
+% \changes{v2.9s}{2004/08/24}{vertikale Abstände durch verschieben von
+% \cs{vskip} korrigiert}
+% \begin{macro}{\LT@array}
+% \changes{v2.8q}{2001/11/18}{neu (intern)}
+% \begin{macro}{\LT@caption}
+% \changes{v2.8q}{2001/11/18}{neu (intern)}
+% \begin{macro}{\scr@caption@before@longtable@warning}
+% \changes{v2.98c}{2008/03/03}{neu (intern)}
+% Ab Version 2.8j wird auf vielfachen Wunsch das
+% \textsf{longtable}-Paket berücksichtigt. Da Pakete aber nach
+% Klassen geladen werden, kann dies erst nach dem Laden des Pakets
+% aktiviert werden. Die Definition entspricht der obigen. Wird das
+% \textsf{caption2}-Paket nach \textsf{longtable} geladen, so wird
+% automatisch die Definition von \textsf{caption2} verwendet. Wird
+% \textsf{caption2} vor \textsf{longtable} geladen, so liegt
+% voraussichtlich eine Fehlbedienung vor, auf die hingewiesen wird.
+% \begin{macrocode}
+\newcommand*{\scr@caption@before@longtable@warning}[1]{%
+ \ClassWarning{\KOMAClassName}{%
+ you've loaded package `#1' before package\MessageBreak
+ `longtable'!\MessageBreak
+ Because of this package `#1' isn't able to\MessageBreak
+ control `\string\caption' at longtables. \space After loading
+ \MessageBreak
+ package `#1' KOMA-Script also doesn't control\MessageBreak
+ `\string\caption'.\MessageBreak
+ I think, you should load package `caption' after\MessageBreak
+ package `longtable'%
+ }%
+}
+\AfterPackage{longtable}{%
+ \@ifpackageloaded{caption2}{\@komalongtablefalse
+ \scr@caption@before@longtable@warning{caption2}%
+ }{}%
+ \if@komalongtable
+ \renewcommand{\LT@makecaption}[3]{%
+ \noalign{%
+ \if@captionabove
+ \vskip\belowcaptionskip
+ \else
+ \vskip\abovecaptionskip
+ \fi
+ }%
+ \LT@mcol\LT@cols c{%
+ \hbox to\z@{\hss\parbox[t]\linewidth{%
+ \@@makecaption{#1}{#2}{#3}%
+ \endgraf
+ \if@captionabove
+ \vskip\abovecaptionskip
+ \else
+ \vskip\belowcaptionskip
+ \fi
+ }%
+ \hss
+ }%
+ }%
+ }%
+ \newcommand*{\scr@LT@array}{}%
+ \let\scr@LT@array=\LT@array
+ \renewcommand*{\LT@array}{%
+ \let\scr@caption=\LT@caption
+ \def\captionabove{\noalign{\global\@captionabovetrue}%
+ \scr@caption}%
+ \def\captionbelow{\noalign{\global\@captionabovefalse}%
+ \scr@caption}%
+ \if@tablecaptionabove
+ \let\LT@caption=\captionabove
+ \else
+ \let\LT@caption=\captionbelow
+ \fi
+ \scr@LT@array
+ }%
+ \ClassInfo{\KOMAClassName}{%
+ longtable captions redefined%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\fs@komaabove}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}
+% \begin{macro}{\fs@komabelow}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}
+% \begin{macro}{\floatc@komascript}
+% \changes{v2.8j}{2001/07/30}{neu (intern)}
+% Ab Version 2.8j werden für das \textsf{float}-Paket zwei float-Stile
+% Namens \texttt{komaabove} und \texttt{komabelow} definiert. Da
+% möglicherweise auch andere Pakete darauf zurückgreifen, wird das
+% unabhängig von der Existenz von \textsf{float} getan. Verwendet wird
+% dies innerhalb von \KOMAScript{} jedoch nicht. Es werden außerdem
+% interne Makros von \textsf{float} verwendet!
+% \begin{macrocode}
+\newcommand*{\fs@komaabove}{%
+ \let\@fs@capt\floatc@komascript
+ \let\@fs@pre\@empty
+ \def\@fs@mid{\vskip\abovecaptionskip}%
+ \let\@fs@post\@empty
+ \let\@fs@iftopcapt\iftrue}
+\newcommand*{\fs@komabelow}{%
+ \let\@fs@capt\floatc@komascript
+ \let\@fs@pre\@empty
+ \def\@fs@mid{\vskip\abovecaptionskip}%
+ \let\@fs@post\@empty
+ \let\@fs@iftopcapt\iffalse}
+\newcommand{\floatc@komascript}{\@@makecaption\@firstofone}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Verteilung der Gleitumgebungen}
+%
+% \begin{Counter}{topnumber}
+% \begin{macro}{\topfraction}
+% \begin{Counter}{bottomnumber}
+% \begin{macro}{\bottomfraction}
+% \begin{Counter}{totalnumber}
+% \begin{macro}{\textfraction}
+% \begin{macro}{\floatpagefraction}
+% \begin{Counter}{dbltopnumber}
+% \begin{macro}{\dbltopfraction}
+% \begin{macro}{\dblfloatpagefraction}
+% Für die Fließumgebungen müssen verschiedene Konstanten definiert
+% werden, die Aufteilung zwischen Text und Fließumgebung und Ähnliches
+% regeln.
+% \begin{macrocode}
+\setcounter{topnumber}{2}
+\renewcommand*\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\renewcommand*\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\renewcommand*\textfraction{.2}
+\renewcommand*\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\renewcommand*\dbltopfraction{.7}
+\renewcommand*\dblfloatpagefraction{.5}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+% \end{macro}
+% \end{Counter}
+%
+%
+% \subsection{Titel ohne Gleitumgebung}
+%
+% \begin{macro}{\captionof}
+% \changes{v3.05}{2009/07/08}{Neue Anweisung}
+% \changes{v3.09}{2011/03/21}{Verwendung des internen \cs{scr@caption}}
+% \changes{v3.09a}{2011/04/13}{Berücksichtigung von
+% \texttt{captions=tableheading} und \texttt{captions=figureheading}}
+% \begin{macro}{\captionaboveof}
+% \changes{v3.09}{2011/03/21}{Neue Anweisung}
+% \begin{macro}{\captionbelowof}
+% \changes{v3.09}{2011/03/21}{Neue Anweisung}
+% Obwohl es inzwischen mehrere Pakete gibt, die diese Anweisung bereit
+% stellen, kommt es doch immer wieder zu Fehlern, weil einige Anwender diese
+% Pakete nicht nutzen. Also habe ich beschlossen, das selbst zu
+% implementieren. Um die Kompatibilität mit \textsf{capt-of} nicht zu stören,
+% wird die Definition vor dme Laden jenes Pakets zurück genommen. Mit dem
+% Paket \textsf{caption} gibt es solche Probleme nicht, da dieses
+% \cs{captionof} ohnehin per \cs{def} definiert. Allerdings berücksichtigt das
+% \cs{captionof} von \textsf{caption} und \textsf{capt-of} eventuell die
+% Einstellungen für darüber oder darunter nicht in gleicher Weise.
+% \begin{macrocode}
+\newcommand*{\captionof}[1]{\def\@captype{#1}%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname if@#1captionabove\endcsname\iftrue
+ \@captionabovetrue
+ \fi
+ \scr@caption}
+\newcommand*{\captionaboveof}{\@captionabovetrue\captionof}
+\newcommand*{\captionbelowof}{\@captionabovefalse\captionof}
+\BeforePackage{capt-of}{\let\captionof\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{captionofbeside}
+% \changes{v3.10}{2011/09/02}{Neue Umgebung}
+% Analog zu \texttt{captionbeside} hier eine Umgebung mit Angabe des
+% Gleitumgebungstyps als erstes Argument.
+% \begin{macrocode}
+\newenvironment{captionofbeside}[1]{%
+ \def\@captype{#1}%
+ \captionbeside
+}{%
+ \endcaptionbeside
+}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsection{Standardbezeichner}
+%
+% \begin{macro}{\figurename}
+% \begin{macro}{\tablename}
+% So heißen die Dinger:
+% \begin{macrocode}
+\newcommand*\figurename{Figure}
+\newcommand*\tablename{Table}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{Abbildungsumgebung}
+%
+% \begin{environment}{figure}
+% \changes{v2.2c}{1995/05/25}{Abbildungsausgabe auf CJK umgestellt}
+% \changes{v2.8h}{2001/07/19}{\cs{caption} wird explizit zu
+% \cs{captionbelow}}
+% Zunächst werden \texttt{figure}s, also Abbildungen behandelt.
+% \begin{Counter}{figure}
+% \begin{macro}{\thefigure}
+% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}
+% \begin{macro}{\figureformat}
+% \changes{v2.3c}{1995/08/06}{neu}
+% Dafür wird ein neuer Zähler benötigt, der bei der Buch- und der
+% Bericht-Klasse mit \cs{chapter} zurückgesetzt wird und auch den
+% Kapitelzähler mit enthält.
+% \begin{macrocode}
+%<book|report>\newcounter{figure}[chapter]
+%<article>\newcounter{figure}
+\renewcommand*\thefigure{%
+%<*book>
+ \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d}\relax
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+%<book|report> \thechapter.%
+%<book> \fi
+ \@arabic\c@figure
+}
+\newcommand*{\figureformat}{%
+ \figurename~\thefigure%
+%<report|book> \autodot%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \begin{macro}{\fps@figure}
+% Die Standardplatzierung für Abbildungen ist \emph{t}op,
+% \emph{b}ottom, \emph{p}age.
+% \begin{macrocode}
+\newcommand*{\fps@figure}{tbp}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ftype@figure}
+% Um die verschiedenen \emph{float}-Typen unterscheiden zu können,
+% benätigen sie eine Nummer. Abbildungen bekommen hier willkürlich
+% die Nummer 1.
+% \begin{macrocode}
+\newcommand*{\ftype@figure}{1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ext@figure}
+% Die Extension der Datei für das Abbildungsverzeichnis.
+% \begin{macrocode}
+\newcommand*{\ext@figure}{lof}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fnum@figure}
+% Die Ausgabe der Abbildungsnummer.
+% \begin{macrocode}
+\newcommand*{\fnum@figure}{\figureformat}
+% \end{macrocode}
+% \end{macro}
+% Jetzt aber zurück zur Umgebung. Wie üblich gibt es eine Version mit
+% und eine Version ihne Stern. Zur unterschiedlichen Bedeutung bei
+% zweispaltigem Satz siehe \texttt{classes.dtx} und \texttt{source2e}.
+% \changes{v3.11c}{2013/03/01}{fix: one \cs{caption} change removed}
+% \begin{macrocode}
+\newenvironment{figure}{%
+ \if@figurecaptionabove\let\caption\captionabove
+ \else\let\caption\captionbelow\fi
+ \@float{figure}%
+}{%
+ \end@float
+}
+\newenvironment{figure*}{%
+ \if@figurecaptionabove\let\caption\captionabove
+ \else\let\caption\captionbelow\fi
+ \@dblfloat{figure}%
+}{%
+ \end@dblfloat
+}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsection{Tabellengleitumgebung}
+%
+% \begin{environment}{table}
+% \changes{v2.2c}{1995/05/25}{Tabellenausgabe auf CJK umgestellt}
+% \changes{v2.8h}{2001/07/19}{bei Tabellen kann der Default für
+% \cs{caption} von Unter- auf Überschriften geändert werden}
+% Auch verschiebbare Tabellen sind möglich. Das Prinzip ist das
+% gleiche wie bei den Abbildungen.
+% \begin{Counter}{table}
+% \begin{macro}{\thetable}
+% \changes{v2.97e}{2007/11/23}{Kapitelnummer nur im Hauptteil}
+% \begin{macro}{\tableformat}
+% \changes{v2.3c}{1995/08/06}{neu}
+% \begin{macrocode}
+%<article>\newcounter{table}
+%<book|report>\newcounter{table}[chapter]
+\renewcommand*\thetable{%
+%<*book>
+ \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d}\relax
+ \if@mainmatter\thechapter.\fi
+ \else
+%</book>
+%<book|report> \thechapter.%
+%<book> \fi
+ \@arabic\c@table
+}
+\newcommand*{\tableformat}{%
+ \tablename~\thetable%
+%<report|book> \autodot%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{Counter}
+% \begin{macro}{\fps@table}
+% \begin{macrocode}
+\newcommand*{\fps@table}{tbp}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ftype@table}
+% Allerdings wird für Tabellen willkürlich Nummer 2 verwendet.
+% \begin{macrocode}
+\newcommand*{\ftype@table}{2}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ext@table}
+% Natürlich haben sie auch eine andere Extension.
+% \begin{macrocode}
+\newcommand*{\ext@table}{lot}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fnum@table}
+% Die Ausgabe der Nummer kann ebenfalls abweichen.
+% \begin{macrocode}
+\newcommand*{\fnum@table}{\tableformat}
+% \end{macrocode}
+% \end{macro}
+% Ob es \cs{caption} in der Voreinstellung eine Tabellenüberschrift
+% oder eine Tabellenunterschrift erzeugt, hängt hier von den Optionen
+% ab.
+% \begin{macrocode}
+\newenvironment{table}{%
+ \if@tablecaptionabove\let\caption\captionabove
+ \else\let\caption\captionbelow\fi
+ \@float{table}%
+}{%
+ \end@float
+}
+\newenvironment{table*}{%
+ \if@tablecaptionabove\let\caption\captionabove
+ \else\let\caption\captionbelow\fi
+ \@dblfloat{table}%
+}{%
+ \end@dblfloat
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \iffalse
+%</!letter>
+%</class>
+%</body>
+% \fi
+%
+% \Finale
+%
+\endinput
+%
+% end of file `scrkernel-floats.dtx'
+%%% Local Variables:
+%%% mode: doctex
+%%% TeX-master: t
+%%% End: