% \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} % % \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 % % % %<*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} %\newcounter{figure}[chapter] %
\newcounter{figure} \renewcommand*\thefigure{% %<*book> \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d}\relax \if@mainmatter\thechapter.\fi \else % % \thechapter.% % \fi \@arabic\c@figure } \newcommand*{\figureformat}{% \figurename~\thefigure% % \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} %
\newcounter{table} %\newcounter{table}[chapter] \renewcommand*\thetable{% %<*book> \ifnum \scr@compatibility>\@nameuse{scr@v@2.97d}\relax \if@mainmatter\thechapter.\fi \else % % \thechapter.% % \fi \@arabic\c@table } \newcommand*{\tableformat}{% \tablename~\thetable% % \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 % % % % \fi % % \Finale % \endinput % % end of file `scrkernel-floats.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: