diff options
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.dtx | 1567 |
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: |