summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/scrkernel-footnotes.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/scrkernel-footnotes.dtx')
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-footnotes.dtx635
1 files changed, 635 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scrkernel-footnotes.dtx b/macros/latex/contrib/koma-script/scrkernel-footnotes.dtx
new file mode 100644
index 0000000000..58eeee64ea
--- /dev/null
+++ b/macros/latex/contrib/koma-script/scrkernel-footnotes.dtx
@@ -0,0 +1,635 @@
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-footnotes.dtx
+% Copyright (c) Markus Kohm, 2002-2022
+%
+% 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.md.
+% ======================================================================
+%%% From File: $Id: scrkernel-footnotes.dtx 3874 2022-06-05 10:38:02Z kohm $
+%<option>%%% (run: option)
+%<body>%%% (run: body)
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\begingroup
+ \def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
+ \filedate$Date: 2022-06-05 12:38:02 +0200 (So, 05. Jun 2022) $
+ \def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
+ \filerevision$Revision: 3874 $
+ \edef\reserved@a{%
+ \noexpand\endgroup
+ \noexpand\ProvidesFile{scrkernel-footnotes.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (footnotes)]
+ }%
+\reserved@a
+\documentclass[USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\setcounter{StandardModuleDepth}{2}
+\begin{document}
+\DocInput{scrkernel-footnotes.dtx}
+\end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \changes{v2.95}{2002/07/01}{new by splitting \file{scrclass.dtx}}
+% \changes{v3.36}{2022/02/16}{switch over from \cls*{scrdoc} to
+% \cls*{koma-script-source-doc}}
+% \changes{v3.36}{2022/02/16}{whole implementation documentation in English}
+%
+% \GetFileInfo{scrkernel-footnotes.dtx}
+% \title{Index Code of the
+% \href{https://komascript.de}{\KOMAScript} Classes}
+% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
+% \date{Revision \fileversion{} of \filedate}
+% \maketitle
+% \begin{abstract}
+% The code for footnotes with \KOMAScript{} classes in
+% \file{scrkernel-footnotes.dtx} is somehow different from the code of the
+% standard classes. It provides several options and other configuration
+% possibilities. The initial change bases on a comment in the documented
+% \LaTeX{} kernel, \file{source2e.pdf}. But this was long ago and almost
+% everything has been changed meanwhile.
+% \end{abstract}
+% \tableofcontents
+%
+% \section{User Manual}
+%
+% You can find the user documentation the commands implemented here in the
+% \KOMAScript{} manual, either the German \file{scrguide} or the English
+% \file{scrguien}.
+%
+% \MaybeStop{\PrintIndex}
+%
+% \section{Implementation of Footnotes}
+%
+% \subsection{Options}
+%
+% \begin{option}{footnotes}
+% \changes{v2.98c}{2008/02/01}{new value \opt{multiple}}
+% \changes{v3.10}{2011/09/13}{\cs{let} replaced by \cs{def} fixes the using as
+% a class option}
+% \changes{v3.12}{2013/03/05}{using \cs{FamilyKeyStateProcessed}}
+% \changes{v3.17}{2015/03/11}{internal value storage}
+% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}}
+% Multiple footnotes mean, that there are more than one footnote at the same
+% place in the text. Usually this would result in a sequence of numbers (or
+% other footnote signes) not seperated anyhow. So you would not be able, e.g.,
+% if 12 means footnote number 1 and footnote number 2 or footnote number 12. A
+% better solution is to add automatic separation characters between such
+% footnote marks. The functionality has been made similar and compatible with
+% \pkg{footmisc} version 5.x. So it should be compatible with that
+% package. Even switching on and off should also work in case of using the
+% package.
+% \begin{macrocode}
+%<*option>
+\KOMA@key{footnotes}{%
+ \ifx\@footnotemark\scr@saved@footnotemark
+ \else
+ \ifx\@footnotemark\scr@footnotemark
+ \else
+%<class> \ClassWarning{\KOMAClassName}{%
+%<package> \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
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{multiple}%
+ }{%
+ \Ifstr{#1}{nomultiple}{%
+ \let\@footnotemark\scr@saved@footnotemark
+ \let\FN@mf@prepare\relax
+ \let\scr@footmisc@options\@empty
+ \FamilyKeyStateProcessed
+ \KOMA@kav@replacevalue{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{nomultiple}%
+ }{%
+ \KOMA@unknown@keyval{footnotes}{#1}{`multiple' and `nomultiple'}%
+ }%
+ }%
+}
+\AtBeginDocument{%
+ \ifx\@footnotemark\scr@saved@footnotemark
+ \KOMA@kav@removekey{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{nomultiple}%
+ \else\ifx\@footnotemark\scr@footnotemark
+ \KOMA@kav@removekey{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}%
+ \KOMA@kav@add{.%
+%<class> \KOMAClassFileName
+%<package&extend> scrextend.\scr@pkgextension
+ }{footnotes}{multiple}%
+ \fi\fi
+}
+% \end{macrocode}
+% \begin{macro}{\scr@footmisc@options}
+% \changes{v2.98c}{2008/02/14}{added}
+% For better compatibility \opt{footnotes=multiple} will be passed as
+% \opt{multiple} to package \pkg{footmisc} using a \KOMAScript-internal macro.
+% \begin{macrocode}
+\newcommand*{\scr@footmisc@options}{}
+\PassOptionsToPackage{\noexpand\scr@footmisc@options}{footmisc}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\scr@saved@footnotemark,\scr@footnotemark}
+% \changes{v2.98c}{2008/02/01}{added}
+% \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}
+%</option>
+% \end{macrocode}
+% \end{macro}^^A \scr@saved@footnotemark,\scr@footnotemark
+% \end{option}^^A footnotes
+%
+%
+% \subsection{Commands and macros for footnotes}
+%
+% \begin{command}{\footnoterule}
+% \changes{v2.3a}{1995/07/08}{using \cs{@width}}
+% \changes{v2.8q}{2002/02/06}{\cs{raggedbottom} changed}
+% \changes{v2.95}{2002/01/07}{\texttt{.05fil} instead of \texttt{.005fil}}
+% \changes{v3.06}{2010/04/03}{using new length macros}
+% \changes{v3.07}{2010/09/14}{using new font element \fnt{footnoterule}}
+% \changes{v3.19}{2015/08/24}{not with \pkg*{scrextend}}
+% In case of \cs{raggedbottom} the footnote rule is moved downwards. Note,
+% that this does not work, if there is a bottom placed float. The indication
+% of using \cs{raggedbottom} is, \cs{@textbottom} is not \cs{relax}. This can
+% fail, but nevertheless is an improvement.
+% \begin{macrocode}
+%<*body>
+%<*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}{added}
+% Plausibility test for the lengths of the rule.
+% \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}^^A \ftn@rule@test@values
+% \begin{fontelement}{footnoterule}
+% \changes{v3.07}{2010/09/14}{added}
+% \changes{v3.19}{2015/08/24}{not with \pkg*{scrextend}}
+% To be able to change the color of the rule, we are using a font element. The
+% default is empty.
+% \begin{macrocode}
+\newkomafont{footnoterule}{}
+% \end{macrocode}
+% \end{fontelement}
+% \begin{macro}{\ftn@rule@width}
+% \changes{v3.06}{2010/04/03}{added}
+% \changes{v3.19}{2015/08/24}{not with \pkg*{scrextend}}
+% The length of the footnote rule.
+% \begin{macrocode}
+\newcommand*{\ftn@rule@width}{.4\columnwidth}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ftn@rule@height}
+% \changes{v3.06}{2010/04/03}{added}
+% \changes{v3.19}{2015/08/24}{not with \pkg*{scrextend}}
+% The height of the footnote rule (depth is always 0).
+% \begin{macrocode}
+\newcommand*{\ftn@rule@height}{.4\p@}
+% \end{macrocode}
+% \end{macro}
+% \begin{command}{\setfootnoterule}
+% \changes{v3.06}{2010/04/03}{added}
+% \changes{v3.19}{2015/08/24}{not with \pkg*{scrextend}}
+% \changes{v3.28}{2019/11/18}{\cs{ifstr} replaced by \cs{IfArgIsEmpty}}
+% The first optional argument (\texttt{\#1}) it the height of the line. If it
+% is missing, the height is not changed. The first mandatory argument
+% (\texttt{\#2}) is the length of the line.
+% \begin{macrocode}
+\newcommand*{\setfootnoterule}[2][]{%
+ \IfArgIsEmpty{#1}{}{%
+ \renewcommand*{\ftn@rule@height}{#1}%
+ }%
+ \IfArgIsEmpty{#2}{}{%
+ \renewcommand*{\ftn@rule@width}{#2}%
+ }%
+ \ftn@rule@test@values
+}
+%</class>
+% \end{macrocode}
+% \end{command}^^A \setfootnoterule
+% \end{command}^^A \footnoterule
+%
+% \begin{counter}{footnote}
+% The footnote counter is reset with every \cs{chapter}. So the numbering is
+% per chapter.
+% \begin{macrocode}
+%<book|report>\@addtoreset{footnote}{chapter}
+% \end{macrocode}
+% \end{counter}
+%
+% \begin{command}{\deffootnote}
+% \changes{v2.4l}{1997/02/06}{added}
+% \changes{v2.95}{2002/07/09}{paragraph indent fixed}
+% \changes{v2.9l}{2003/01/28}{\cs{edef}\cs{@tempa} replaced}
+% \changes{v2.9q}{2004/01/31}{\cs{ftn@font} does not support an argument
+% because of compatibility with \pkg{footnote}}
+% \changes{v3.22}{2017/01/03}{completely new implementation}
+% \changes{v3.23}{2017/03/27}{using \cs{raggedfootnote}}
+% \changes{v3.36}{2022/02/16}{hooks added}
+% This command defines the formatting of footnotes. The arguments are:
+% \begin{description}
+% \item[\oarg{first indent}:] the indent of the text of the first line of the
+% footnote,
+% \item[\marg{indent}:] the indent from the second line of the footnote,
+% \item[\marg{paragraph indent}:] the indent of the first line of a paragraph
+% if the footnote has more than one paragraph.
+% \item[\marg{mark code}:] the code of the footnote mark in the footnote (for
+% the mark in the text see \cs{deffootnotemark}).
+% \end{description}
+% The \meta{mark code} is additionally encapsulated in a \cs{hbox} of
+% with \meta{first indent}. If \meta{first indent} is not given it is set to
+% \meta{indent}.
+% \begin{macrocode}
+\newcommand\deffootnote[4][]{%
+ \expandafter\ifnum\scr@v@is@ge{3.22}\relax
+ \long\def\@makefntext##1{%
+ \ExecuteDoHook{footnote/text/begin}%
+ \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%
+ \ExecuteDoHook{footnote/text/end}%
+ }%
+ \else
+%<class> \ClassInfo{\KOMAClassName}{%
+%<package> \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}{added}
+% Used to set the mark at the beginning of the footnote. Here we add the font
+% element.
+% \begin{macrocode}
+ \def\@@makefnmark{\hbox{\ftnm@font{#4}}}%
+% \end{macrocode}
+% \end{macro}^^A \@@makefnmark
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{command}^^A \deffootnote
+%
+% \begin{macro}{\raggedfootnote}
+% \changes{v3.23}{2017/03/27}{added}
+% Falk requested a new feature: Being able to change the
+% alignment/justification of the footnote text. The default is to change
+% nothing.
+% \begin{macrocode}
+\newcommand*{\raggedfootnote}{}
+% \end{macrocode}
+% \end{macro}^^A \raggedfootnote
+%
+% \begin{fontelement}{footnotelabel,footnotetext,footnote}
+% \begin{fontelement}{footnotenumber}
+% \changes{v3.36}{2022/02/16}{real alias of \fnt{footnotelabel}}
+% \begin{macro}{\ftn@font,\scr@fnt@footnote,\ftnm@font,\scr@fnt@footnotelabel}
+% \changes{v2.8q}{2001/11/16}{added}
+% There are two new font elements with two aliases. They are not defined using
+% \cs{newkomafont}, because they have to use not the default font commands but
+% another one compatible with \pkg{footnote}.
+% \begin{macrocode}
+\newcommand*{\ftn@font}{\normalfont}
+\newcommand*{\scr@fnt@footnote}{\ftn@font}
+\newcommand*{\ftnm@font}{}
+\aliaskomafont{footnotenumber}{footnotelabel}
+\newcommand*{\scr@fnt@footnotelabel}{\ftnm@font}
+\aliaskomafont{footnotetext}{footnote}
+% \end{macrocode}
+% \end{macro}^^A \fnt@font,\scr@fnt@footnote … \scr@fnt@footnotelabel
+% \end{fontelement}^^A footnotenumber
+% \end{fontelement}^^A footnotelabel,footnotetext,footnote
+%
+% \begin{command}{\deffootnotemark}
+% \changes{v2.4l}{1997/02/06}{added}
+% The definition of the footnote mark in the text can also changed. The
+% default is the usual definition extended by the font element.
+% \begin{macrocode}
+\newcommand*\deffootnotemark[1]{%
+ \def\@makefnmark{\hbox{\ftntm@font{#1}}}%
+}
+% \end{macrocode}
+% \begin{fontelement}{footnotereference}
+% \begin{fontelement}{footnotemark,footnoteref}
+% \changes{v3.36}{2022/02/16}{real alias of \fnt{footnotereference}}
+% \begin{macro}{\ftntm@font,\scr@fnt@footnotereference}
+% \changes{v2.8q}{2001/11/16}{added}
+% The font element of the footnote mark in the text and two aliases.
+% \begin{macrocode}
+\newcommand*{\ftntm@font}{}
+\newcommand*{\scr@fnt@footnotereference}{\ftntm@font}
+\aliaskomafont{footnoteref}{footnotereference}
+\aliaskomafont{footnotemark}{footnotereference}
+% \end{macrocode}
+% \end{macro}^^A \ftntm@font,\scr@fnt@footnotereference
+% \end{fontelement}^^A footnotemark,footnoteref
+% \end{fontelement}^^A footnotereference
+% \begin{macro}{\FN@mf@check}
+% \changes{v2.98c}{2008/02/01}{added}
+% Detect multiple footnotes by \cs{lastkern} and add the separator.
+% \begin{macrocode}
+%<package>\providecommand*{\FN@mf@check}{%
+%<class>\newcommand*{\FN@mf@check}{%
+ \ifdim\lastkern=\multiplefootnotemarker\relax
+ \edef\@x@sf{\the\spacefactor}%
+ \unkern\multiplefootnoteseparator
+ \spacefactor\@x@sf\relax
+ \fi
+}
+% \end{macrocode}
+% \end{macro}^^A \FN@mf@check
+% \begin{macro}{\scr@mf@prepare}
+% \changes{v2.98c}{2008/02/01}{added}
+% Add the kern to detect multiple footnotes without change of the resulting kern.
+% \begin{macrocode}
+\newcommand*{\scr@mf@prepare}{%
+ \kern-\multiplefootnotemarker
+ \kern\multiplefootnotemarker\relax
+}
+% \end{macrocode}
+% \end{macro}^^A \scr@mf@prepare
+% \begin{macro}{\F@mf@prepare}
+% \changes{v2.98c}{2008/02/14}{added}
+% \changes{v3.25a}{2018/04/17}{explicit definition}
+% To stay compatible with \pkg{footmisc} we define this too (but \cs{relax}
+% and only if not defined before).
+% \begin{macrocode}
+\@ifundefined{FN@mf@prepare}{\let\FN@mf@prepare\relax}{}
+% \end{macrocode}
+% \end{macro}^^A \F@mf@prepare
+% \begin{macro}{\@footnotetext}
+% \changes{v3.01a}{2008/11/22}{long}
+% \begin{macro}{\scr@saved@footnotetext}
+% \changes{v2.98c}{2008/02/01}{added}
+% \changes{v3.01a}{2008/11/22}{long}
+% We have to add the multiple footnote preparation to the definition of
+% \cs{@footnotetext}.
+% \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}
+% And \pkg{footmisc} should not warn because of a not expected definition of
+% \cs{@footnotemark}.
+% \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}{\pkg{setspace} workaround}
+% \pkg{setspace} also needs a workaround, because it redefines
+% \cs{@footnotemark} without respect of other definitions. So we use out
+% definition instead and add a \texttt{footnote/text/begin} do-hook.
+% \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}^^A \scr@saved@footnotetext
+% \end{macro}^^A \@footnotetext
+% \end{command}^^A \deffootnotemark
+%
+% \begin{command}{\multiplefootnoteseparator}
+% \changes{v2.98c}{2008/02/01}{added}
+% The multiple footnote separation marker with all formatting needed.
+% \begin{macrocode}
+\newcommand*{\multiplefootnoteseparator}{%
+ \begingroup\let\thefootnotemark\multfootsep\@makefnmark\endgroup
+}
+% \end{macrocode}
+% \end{command}
+%
+% \begin{command}{\multfootsep}
+% \changes{v2.98c}{2008/02/01}{added}
+% The \pkg{footmisc} compatible separation without formatting.
+% \begin{macrocode}
+%<class>\newcommand*{\multfootsep}{,}
+%<package>\providecommand*{\multfootsep}{,}
+% \end{macrocode}
+% \end{command}
+%
+% \begin{command}{\multiplefootnotemarker}
+% \changes{v2.98c}{2008/02/01}{added}
+% \changes{v3.19}{2015/08/24}{\pkg*{scrextend} uses \cs{providecommand}}
+% The kerning of the marker also \pkg{footmisc} compatible.
+% \begin{macrocode}
+%<class>\newcommand*{\multiplefootnotemarker}{3sp}
+%<package>\providecommand*{\multiplefootnotemarker}{3sp}
+% \end{macrocode}
+% \end{command}
+%
+% \begin{command}{\thefootnotemark}
+% \changes{v2.4l}{1997/02/06}{added}
+% User level command using \cs{@thefnmark}.
+% \begin{macrocode}
+%<class>\newcommand*{\thefootnotemark}{\@thefnmark}
+%<package>\providecommand*{\thefootnotemark}{\@thefnmark}
+% \end{macrocode}
+% \end{command}
+%
+% \changes{v2.4l}{1997/02/06}{initialization using \cs{deffootnotemark}}
+% \begin{macro}{\@makefnmark}
+% \changes{v3.10}{2011/09/27}{\pkg*{scrextend} redefines \cs{@makefnmark}
+% to use \cs{thefootnotemark}}
+% \begin{macrocode}
+%<*class>
+\deffootnote[1em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}}
+%</class>
+%<*package>
+\def\reserved@a{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+\ifx\reserved@a\@makefnmark
+%</package>
+\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
+%</package>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Referencing footnote labels}
+%
+% \begin{command}{\footref}
+% \changes{v2.98c}{2008/02/01}{added}
+% \changes{v3.33}{2021/02/24}{using \cs{providecommand} because of
+% \LaTeX{} 2021-05-01}
+% \KOMAScript{} 3 provides this command for more more than 13 longer than
+% the \LaTeX{} kernel. It is compatible with \pkg{footmisc} but has also been
+% published for free in the Usenet.
+% \begin{macrocode}
+\providecommand*{\footref}[1]{%
+ \begingroup
+ \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
+ \endgroup
+ \@footnotemark
+}
+%</body>
+% \end{macrocode}
+% \end{command}
+%
+%
+% \Finale
+% \PrintChanges
+%
+\endinput
+% Local Variables:
+% mode: doctex
+% ispell-local-dictionary: "en_US"
+% eval: (flyspell-mode 1)
+% TeX-master: t
+% TeX-engine: luatex-dev
+% eval: (setcar (or (cl-member "Index" (setq-local TeX-command-list (copy-alist TeX-command-list)) :key #'car :test #'string-equal) (setq-local TeX-command-list (cons nil TeX-command-list))) '("Index" "mkindex %s" TeX-run-index nil t :help "makeindex for dtx"))
+% End: