% \CheckSum{401} % \iffalse meta-comment % ====================================================================== % scrkernel-footnotes.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-footnotes.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-footnotes.dtx 1380 2013-10-01 15:31:55Z mjk $ %<*driver> % \fi \ProvidesFile{scrkernel-footnotes.dtx}[2013/03/05 v3.12 KOMA-Script (footnotes)] % \iffalse \documentclass[halfparskip-]{scrdoc} \usepackage[english,ngerman]{babel} \usepackage[latin1]{inputenc} \CodelineIndex \RecordChanges \GetFileInfo{scrkernel-footnotes.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/07/01}{% % erste Version aus der Aufteilung von \texttt{scrclass.dtx}} % % \section{Fußnoten} % % Die Fußnotengestaltung in \KOMAScript{} basiert auf einem Hinweis % aus dem dokumentierten \LaTeX-Kern. % % \StopEventually{\PrintIndex\PrintChanges} % % \iffalse %<*option> % \fi % % \subsection{Option} % % \begin{option}{footnotes} % \changes{v2.98c}{2008/02/01}{Neue Option für Mehrfachfußnoten}% % \changes{v3.10}{2011/09/13}{\cs{let} durch \cs{def} ersetzt, damit die % Option auch als Klassenoption funktioniert}% % \changes{v3.12}{2013/03/05}{Status-Signalisierung mit % \cs{FamilyKeyStateProcessed}}% % Mehrfachfußnoten gibt es dann, wenn zu einer Textstelle mehrere Fußnoten % hintereinander gesetzt werden. Normalerweise werden die einfach ohne % Abstand hintereinander geklatscht. Man kann dann aber die beiden Fußnoten % 1 und 2 beispielsweise nicht von der Fußnote 12 unterscheiden. Besser ist % es, wenn mehrere Fußnoten automatisch durch ein Trennzeichen getrennt % werden. Die Funktion ist \textsf{footmisc} entnommen und sollte inklusive % Ein- und Ausschalten auch zusammen mit diesem Paket funktionieren. % \begin{macrocode} \KOMA@key{footnotes}{% \ifx\@footnotemark\scr@saved@footnotemark \else \ifx\@footnotemark\scr@footnotemark \else % \ClassWarning{\KOMAClassName}{% % \PackageWarning{scrextend}{% Change of `\string\@footnotemark' detected!\MessageBreak Use of `footnotes=#1' may break\MessageBreak another package!\MessageBreak Maybe you should remove the usage of\MessageBreak option `footnotes=#1'}% \fi \fi \ifstr{#1}{multiple}{% \let\@footnotemark\scr@footnotemark \def\FN@mf@prepare{\scr@mf@prepare}% \def\scr@footmisc@options{multiple}% \FamilyKeyStateProcessed }{% \ifstr{#1}{nomultiple}{% \let\@footnotemark\scr@saved@footnotemark \let\FN@mf@prepare\relax \let\scr@footmisc@options\@empty \FamilyKeyStateProcessed }{% \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}% }% }% } % \end{macrocode} % \begin{macro}{\scr@footmisc@options} % \changes{v2.98c}{2008/02/14}{Neuer (intern)} % Für etwas mehr Kompatibilität mit \textsf{footmisc}, wird die aktuelle % Einstellung der \texttt{multifootnotes} an das Paket weitergereicht. % \begin{macrocode} \newcommand*{\scr@footmisc@options}{} \PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc} % \end{macrocode} % \end{macro} % \begin{macro}{\scr@saved@footnotemark} % \changes{v2.98c}{2008/02/01}{Neu (intern)} % \begin{macro}{\scr@footnotemark} % \changes{v2.98c}{2008/02/01}{Neu (intern)} % \begin{macrocode} \newcommand*{\scr@saved@footnotemark}{% \leavevmode \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi \@makefnmark \ifhmode\spacefactor\@x@sf\fi \relax} \expandafter\CheckCommand\expandafter*\expandafter\@footnotemark \expandafter{\scr@saved@footnotemark} \newcommand*{\scr@footnotemark}{% \leavevmode \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi \@makefnmark \csname FN@mf@prepare\endcsname \ifhmode\spacefactor\@x@sf\fi \relax} % \end{macrocode} % \end{macro} % \end{macro} % \end{option} % % % \iffalse % %<*body> % \fi % % \subsection{Definitionen für Fußnoten} % % \begin{macro}{\footnoterule} % \changes{v2.3a}{1995/07/08}{\cs{@width} verwendet} % \changes{v2.8q}{2002/02/06}{\cs{raggedbottom}-Verbesserung % eingefügt} % \changes{v2.95}{2002/01/07}{\texttt{.05fil} statt % \texttt{.005fil}} % \changes{v3.06}{2010/04/03}{die neuen Längenmakros werden genutzt} % \changes{v3.07}{2010/09/14}{neues Font-Element \texttt{footnoterule} wird % verwendet} % Im Fall, dass \cs{raggedbottom} verwendet wird, die Fußnotenlinie % nach unten gedrückt. Dies funktioniert nur dann nicht, wenn % Abbildungen oder Tabellen mit der Option "`\texttt{b}"' an das Ende % der Seite gesetzt werden. \cs{raggedbottom} wird daran erkannt, dass % \cs{@textbottom} nicht \cs{relax} ist. Das kann natürlich auch % einmal schief gehen, ist dann aber auch nicht ganz so tragisch. % \begin{macrocode} %<*class> \renewcommand*\footnoterule{% \normalsize\ftn@rule@test@values \kern-\dimexpr 2.6\p@+\ftn@rule@height\relax \ifx\@textbottom\relax\else\vskip \z@ \@plus.05fil\fi {\usekomafont{footnoterule}{% \hrule \@height\ftn@rule@height \@width\ftn@rule@width}}% \kern 2.6\p@} % % \end{macrocode} % \begin{macro}{\ftn@rule@test@values} % \changes{v3.06}{2010/04/03}{neu (intern)} % Test, ob die Einstellungen für die Längen der Fußnotenlinie halbwegs % vernünftig sind. % \begin{macrocode} \newcommand*{\ftn@rule@test@values}{% \ifdim\ftn@rule@height <\z@ \ClassWarning{\KOMAClassName}{% You might get into trouble, because the\MessageBreak height of the footnote rule has a value\MessageBreak less than 0% }% \else \ifdim\ftn@rule@height >\dimexpr\skip\footins -2.6\p@\relax \ClassWarning{\KOMAClassName}{% You might get into trouble, because the\MessageBreak height of the footnote rule has a value\MessageBreak greater than \the\dimexpr\skip\footins -2.6\p@\relax }% \fi \fi \ifdim\ftn@rule@width <\z@ \ClassWarning{\KOMAClassName}{% You might get into trouble, because the width\MessageBreak or length of the footnote rule has a value\MessageBreak less than 0pt% }% \else \ifdim\ftn@rule@width >\columnwidth \ClassWarning{\KOMAClassName}{% You might get into trouble, because the width\MessageBreak or length of the footnote rule has a value\MessageBreak greater than \string\columnwidth }% \fi \fi } % \end{macrocode} % \end{macro} % \begin{KOMAfont}{footnoterule} % \changes{v3.07}{2010/09/14}{\texttt{footnoterule} ist ein eneues % Fontelement} % Damit man die Farbe der Fußnotentrennlinie ändern kann, gibt es nun ein % eigenes Element dafür. Die Voreinstellung ist jedoch leer. % \begin{macrocode} \newkomafont{footnoterule}{} % \end{macrocode} % \end{KOMAfont} % \begin{macro}{\ftn@rule@width} % \changes{v3.06}{2010/04/03}{neu (intern)} % Die Länge der Fußnotentrennlinie. % \begin{macrocode} \newcommand*{\ftn@rule@width}{.4\columnwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\ftn@rule@height} % \changes{v3.06}{2010/04/03}{neu (intern)} % Die Höhe der Fußnotentrennlinie (die Tiefe ist immer 0). % \begin{macrocode} \newcommand*{\ftn@rule@height}{.4\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\setfootnoterule} % \changes{v3.06}{2010/04/03}{neue Anweisung} % Das erste, optionale Argument ist die Höhe der Linie, das zweite nicht % optionale die Länge. % \begin{macrocode} \newcommand*{\setfootnoterule}[2][]{% \ifstr{#1}{}{}{% \renewcommand*{\ftn@rule@height}{#1}% }% \ifstr{#2}{}{}{% \renewcommand*{\ftn@rule@width}{#2}% }% \ftn@rule@test@values } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{Counter}{footnote} % Der Fußnotenzähler wird mit \cs{chapter} zurückgesetzt, die Fußnoten % werden also kapitelweise nummeriert. % \begin{macrocode} %\@addtoreset{footnote}{chapter} % \end{macrocode} % \end{Counter} % % \begin{macro}{\deffootnote} % \changes{v2.4l}{1997/02/06}{neu} % \changes{v2.95}{2002/07/09}{Absatzeinzug korrigiert} % \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempa} ersetzt} % \changes{v2.9q}{2004/01/31}{\cs{ftn@font} erlaubt aus Gr"unden der % Kompatibilität mit dem \textsl{footnote} Paket kein Argument mehr} % Dieses Makro zur Definition der Gestalt von Fußnoten erlaubt einen % optionalen und erwartet drei weitere Parameter. Der erste, optionale % gibt den Einzug der ersten Zeile des Fußnotentextes vom linken Rand % an. Die Fußnotenmarkierungen werden rechtsbündig in diesen Einzug % gesetzt. Der zweite, also erste nicht optionale Parameter gibt den % Einzug jeder weiteren Zeile des Fußnotentextes vom linken Rand % an. Fehlt der optionale Parameter so ist er gleich diesem. Der % dritte, also zweite nicht optionale Parameter gibt den zusätzlichen % Einzug jedes weiteren Absatzes einer Fußnote an. Der letzte % Parameter schließlich bestimmt die Ausgabe der Fußnotenmarkierung in % der Fußnote. Diese wird zusätzlich in eine \cs{hbox} gesetzt. % \begin{macrocode} \newcommand\deffootnote[4][]{% \long\def\@makefntext##1{% \setlength{\@tempdimc}{#3}% \def\@tempa{#1}\ifx\@tempa\@empty \@setpar{\@@par \@tempdima = \hsize \addtolength{\@tempdima}{-#2}% \parshape \@ne #2 \@tempdima}% \else \addtolength{\@tempdimc}{#2}% \addtolength{\@tempdimc}{-#1}% \@setpar{\@@par \@tempdima = \hsize \addtolength{\@tempdima}{-#1}% \@tempdimb = \hsize \addtolength{\@tempdimb}{-#2}% \parshape \tw@ #1 \@tempdima #2 \@tempdimb }% \fi \par \parindent\@tempdimc\noindent \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% }% % \end{macrocode} % \begin{macro}{\@@makefnmark} % \changes{v2.4l}{1997/02/06}{neu} % Makro zum Setzen der Fußnotenmarkierung in der Fußnote: % \begin{macrocode} \def\@@makefnmark{\hbox{\ftnm@font{#4}}}% % \end{macrocode} % \end{macro} % \begin{macrocode} } % \end{macrocode} % \end{macro} % % \begin{macro}{\ftn@font} % \changes{v2.8q}{2001/11/16}{neu (intern)} % \begin{macro}{\scr@fnt@footnote} % \changes{v2.8q}{2001/11/16}{neues Element \texttt{footnote}} % \begin{macro}{\ftnm@font} % \changes{v2.8q}{2001/11/16}{neu (intern)} % \begin{macro}{\scr@fnt@footnotenumber} % \changes{v2.8q}{2001/11/16}{neues Element % \texttt{footnotenumber}} % \begin{macro}{\scr@fnt@footnotenlabel} % \changes{v2.8q}{2001/11/16}{neues Element \texttt{footnotelabel}} % \begin{macro}{\scr@fnt@instead@footnotetext} % \changes{v2.8q}{2001/11/16}{neuer Ersatz für Element % \texttt{footnotetext}} % Das erste Element gibt die Schrift an, in der die Fußnote gesetzt % wird. Davon abweichend kann mit dem zweiten Element die Schriftart % für die Fußnotennummer getrennt angegeben werden. Aufgrund der % Definition kann auch ein Makro verwendet werden, das ein Argument % erwartet. % \begin{macrocode} \newcommand*{\ftn@font}{\normalfont} \newcommand*{\scr@fnt@footnote}{\ftn@font} \newcommand*{\ftnm@font}{} \newcommand*{\scr@fnt@footnotenumber}{\ftnm@font} \newcommand*{\scr@fnt@footnotelabel}{\ftnm@font} \newcommand*{\scr@fnt@instead@footnotetext}{footnote} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\deffootnotemark} % \changes{v2.4l}{1997/02/06}{neu} % Makro zur Definition der Fußnotenmarkierung im Text: % \begin{macrocode} \newcommand*\deffootnotemark[1]{% \def\@makefnmark{\hbox{\ftntm@font{#1}}}% } % \end{macrocode} % % \begin{macro}{\ftntm@font} % \changes{v2.8q}{2001/11/16}{neu (intern)} % \begin{macro}{\scr@fnt@footnotereference} % \changes{v2.8q}{2001/11/16}{neues Element % \texttt{footnotereference}} % \begin{macro}{\scr@fnt@footnoteref} % \changes{v2.8q}{2001/11/16}{neues Element \texttt{footnoteref}} % Dies ist die Schriftart der Fußnotenreferenz im Text. Auch hier kann % ggf. ein Makro verwendet werden, das ein Argument erwartet. % \begin{macrocode} \newcommand*{\ftntm@font}{} \newcommand*{\scr@fnt@footnotereference}{\ftntm@font} \newcommand*{\scr@fnt@footnoteref}{\ftntm@font} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\FN@mf@check} % \changes{v2.98c}{2008/02/01}{Neu (intern)} % Dafür sorgen, dass hier ggf. der Trenner eingefügt wird. % \begin{macrocode} %\providecommand*{\FN@mf@check}{% %\newcommand*{\FN@mf@check}{% \ifdim\lastkern=\multiplefootnotemarker\relax \edef\@x@sf{\the\spacefactor}% \unkern\multiplefootnoteseparator \spacefactor\@x@sf\relax \fi } % \end{macrocode} % \end{macro} % % \begin{macro}{\scr@mf@prepare} % \changes{v2.98c}{2008/02/01}{Neu (intern)} % Damit |\FN@mf@check| informiert ist, dass es etwas zu tun hat. % \begin{macrocode} \newcommand*{\scr@mf@prepare}{% \kern-\multiplefootnotemarker \kern\multiplefootnotemarker\relax } % \end{macro} % \begin{macro}{\F@mf@prepare} % \changes{v2.98c}{2008/02/14}{Neu (intern)} % Aus Gründen der Kompatibilität mit \textsf{footmisc} wird das dann % vorsoglich auch noch definiert (und zwar als \cs{relax}, wenn es bisher noch % nicht definiert ist). \@ifundefined{FN@mf@prepare}{}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\@footnotetext} % \changes{v3.01a}{2008/11/22}{long} % \begin{macro}{\scr@saved@footnotetext} % \changes{v2.98c}{2008/02/01}{Neu (intern)} % \changes{v3.01a}{2008/11/22}{long} % Auch hier muss dafür gesorgt werden, dass die Markierung erfolgt. % \begin{macrocode} \newcommand{\scr@saved@footnotetext}{} \let\scr@saved@footnotetext\@footnotetext \renewcommand{\@footnotetext}[1]{% \scr@saved@footnotetext{#1}% \csname FN@mf@prepare\endcsname } % \end{macrocode} % % Es muss auch dafür gesorgt werden, dass \textsf{footmisc} nicht unnötig % mit Warnung um sich wirft. % \begin{macrocode} \BeforePackage{footmisc}{% \ifx\@footnotemark\scr@footnotemark \let\@footnotemark\scr@saved@footnotemark \fi \let\@footnotetext\scr@saved@footnotetext } % \end{macrocode} % % \changes{v3.10}{2011/09/12}{Workaround für die zerstörerische Wirkung von % \textsf{setspace}}% % Außerdem zerstört das Paket \textsf{setspace} die Erweiterung von % \cs{@footnotetext}. Deshalb schalten wir sie vor dem Paket lieber gleich ab % und reaktivieren sie anschließend wieder: % \begin{macrocode} \BeforePackage{setspace}{% \let\@footnotetext\scr@saved@footnotetext } \AfterPackage{setspace}{% \let\scr@saved@footnotetext\@footnotetext \renewcommand{\@footnotetext}[1]{% \scr@saved@footnotetext{#1}% \csname FN@mf@prepare\endcsname }% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\multiplefootnoteseparator} % \changes{v2.98c}{2008/02/01}{Neu} % Das ist der formatierte Separator! % \begin{macrocode} \newcommand*{\multiplefootnoteseparator}{% \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup } % \end{macrocode} % \end{macro} % % \begin{macro}{\multfootsep} % \changes{v2.98c}{2008/02/01}{Neu} % Und hier \textsf{footmisc}-kompatibel unformatiert % \begin{macrocode} %\newcommand*{\multfootsep}{,} %\providecommand*{\multfootsep}{,} % \end{macrocode} % \end{macro} % % \begin{macro}{\multiplefootnotemarker} % \changes{v2.98c}{2008/02/01}{Neu} % Das Markierungskerning wieder \textsf{footmisc}-kompatibel. % \begin{macrocode} \newcommand*{\multiplefootnotemarker}{3sp} % \end{macrocode} % \end{macro} % % \begin{macro}{\thefootnotemark} % \changes{v2.4l}{1997/02/06}{neu} % Makro, damit \cs{@thefnmark} auf Anwenderebene verfügbar wird: % \begin{macrocode} %\newcommand*{\thefootnotemark}{\@thefnmark} %\providecommand*{\thefootnotemark}{\@thefnmark} % \end{macrocode} % \end{macro} % % \changes{v2.4l}{1997/02/06}{Verwendung der neuen Makros zur % Fußnotengestaltgebung} % \begin{macro}{\@makefnmark} % \changes{v3.10}{2011/09/27}{\textsf{scrextend} redefines \cs{@makefnmark} % to use \cs{thefootnotemark}} % \begin{macrocode} %<*class> \deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}} % %<*package> \def\reserved@a{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} \ifx\reserved@a\@makefnmark % \deffootnotemark{\textsuperscript{\thefootnotemark}} %<*package> \else \IfFileExists{etoolbox.sty}{% \PackageInfo{scrextend}{% unexpected definition of `\string\@makefnmark'.\MessageBreak Trying to patch it% }% \RequirePackage{etoolbox}% \patchcmd{\@makefnmark}{\@thefnmark}{\thefootnotemark}{% \PackageInfo{scrextend}{patch seems to be successfull}% }{% \PackageWarning{scrextend}{% patching `\string\@makefnmark' failed.\MessageBreak Using hard coded redefinition% }% \deffootnotemark{\textsuperscript{\thefootnotemark}}% }% }{% \PackageWarning{scrextend}{% unexpected definition of `\string\@makefnmark'.\MessageBreak Using hard coded redefintion% }% \deffootnotemark{\textsuperscript{\thefootnotemark}}% }% \fi % % \end{macrocode} % \end{macro} % % \subsection{Fußnotenreferenz} % % \begin{macro}{\footref} % \changes{v2.98c}{2008/02/01}{Neue Anweisung} % Damit man nicht nur zu diesem Zweck das Paket \textsf{footmisc} laden muss, % kann man jetzt auch mit \KOMAScript{} alleine Fußnoten setzen, die % Referenzen auf andere Fußnoten sind. Der Code stammt einerseits aus footmisc % andererseits auf der Usenet-Gruppe comp.text.tex. Wer den zuerst hatte, ist % für mich nicht mehr reproduzierbar. Jedenfalls steht er in footmisc unter % LPPL und \KOMAScript{} steht ebenfalls unter LPPL. Das sollte also im % Zweifelsfall nicht das Problem sein. % \begin{macrocode} %\newcommand*{\footref}[1]{% %\providecommand*{\footref}[1]{% \begingroup \unrestored@protected@xdef\@thefnmark{\ref{#1}}% \endgroup \@footnotemark } % \end{macrocode} % \end{macro} % % \iffalse % % \fi % % \Finale % \endinput % % end of file `scrkernel-footnotes.dtx' %%% Local Variables: %%% mode: doctex %%% TeX-master: t %%% End: