% \iffalse meta-comment % ====================================================================== % scrkernel-footnotes.dtx % Copyright (c) Markus Kohm, 2002-2021 % % 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-2021 % % 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 3570 2021-02-24 10:08:31Z kohm $ % %<*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}%^^A % \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)}%^^A % \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}%^^A % 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} % \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}%^^A % 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)}%^^A % \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}%^^A % 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)}%^^A % \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}%^^A % 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}%^^A % \changes{v3.19}{2015/08/24}{nicht in \textsf{scrextend}}%^^A % \changes{v3.28}{2019/11/18}{\cs{ifstr} ersetzt durch \cs{IfArgIsEmpty}}%^^A % Das erste, optionale Argument ist die Höhe der Linie, das zweite nicht % optionale die Länge. % \begin{macrocode} \newcommand*{\setfootnoterule}[2][]{% \IfArgIsEmpty{#1}{}{% \renewcommand*{\ftn@rule@height}{#1}% }% \IfArgIsEmpty{#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}%^^A % \changes{v2.95}{2002/07/09}{Absatzeinzug korrigiert}%^^A % \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}%^^A % \changes{v3.22}{2017/01/03}{Neuimplementierung}%^^A % \changes{v3.23}{2017/03/27}{neues \cs{raggedfootnote} eingefügt}%^^A % 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][]{% \expandafter\ifnum\scr@v@is@ge{3.22}\relax \long\def\@makefntext##1{% \raggedfootnote \leftskip #2 \l@addto@macro\@trivlist{% \ifnum\@listdepth=\@ne\advance\leftmargin #2\relax\fi }% \parindent #3\noindent \IfArgIsEmpty{#1}{}{% \hskip \dimexpr #1-#2\relax }% \ftn@font\hbox to \z@{\hss\@@makefnmark}##1% }% \else % \ClassInfo{\KOMAClassName}{% % \PackageInfo{scrextend}{% Using old \string\@makefntext\space due to compatibility level\MessageBreak less than 3.22}% \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% }% \fi % \end{macrocode} % \begin{macro}{\@@makefnmark} % \changes{v2.4l}{1997/02/06}{neu}%^^A % 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}%^^A \@@makefnmark % % \begin{macro}{\raggedfootnote} % \changes{v3.23}{2017/03/27}{neue Anweisung} % Auf Wunsch von Falk kann man die Ausrichtrung des Fußnotentextes damit % beeinflussen. Die Voreinstellung ist leer also keine Änderung der % Ausrichtung. % \begin{macrocode} \newcommand*{\raggedfootnote}{} % \end{macrocode} % \end{macro}%^^A \raggedfootnote % % \begin{macro}{\ftn@font} % \changes{v2.8q}{2001/11/16}{neu (intern)}%^^A % \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)}%^^A % \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 bei letzteren 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}%^^A % 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)}%^^A % \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)}%^^A % 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)}%^^A % 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)}%^^A % \changes{v3.25a}{2018/04/17}{Definition wird explizit vorgenommen}%^^A % 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}{\let\FN@mf@prepare\relax}{} % \end{macrocode} % \end{macro} % % \begin{macro}{\@footnotetext} % \changes{v3.01a}{2008/11/22}{long}%^^A % \begin{macro}{\scr@saved@footnotetext} % \changes{v2.98c}{2008/02/01}{Neu (intern)}%^^A % \changes{v3.01a}{2008/11/22}{long}%^^A % 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}%^^A % 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}%^^A % 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}%^^A % \changes{v3.19}{2015/08/24}{im Paket mit \cs{providecommand} definieren}%^^A % Das Markierungskerning wieder \textsf{footmisc}-kompatibel. % \begin{macrocode} %\newcommand*{\multiplefootnotemarker}{3sp} %\providecommand*{\multiplefootnotemarker}{3sp} % \end{macrocode} % \end{macro} % % \begin{macro}{\thefootnotemark} % \changes{v2.4l}{1997/02/06}{neu}%^^A % 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}%^^A % \begin{macro}{\@makefnmark} % \changes{v3.10}{2011/09/27}{\textsf{scrextend} redefines \cs{@makefnmark} % to use \cs{thefootnotemark}}%^^A % \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.\@pkgextension}{% \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} % \changes{v3.33}{2021/02/24}{classes use \cs{providecommand} because of % \LaTeX{} 2021-05-01} % 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} \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: