summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/koma-script/scrkernel-bibliography.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/koma-script/scrkernel-bibliography.dtx')
-rw-r--r--macros/latex/contrib/koma-script/scrkernel-bibliography.dtx746
1 files changed, 746 insertions, 0 deletions
diff --git a/macros/latex/contrib/koma-script/scrkernel-bibliography.dtx b/macros/latex/contrib/koma-script/scrkernel-bibliography.dtx
new file mode 100644
index 0000000000..17b9b610bd
--- /dev/null
+++ b/macros/latex/contrib/koma-script/scrkernel-bibliography.dtx
@@ -0,0 +1,746 @@
+% \iffalse meta-comment
+% ======================================================================
+% scrkernel-bibliography.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-bibliography.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-bibliography.dtx}%
+ [\filedate\space\filerevision\space
+ KOMA-Script source
+ (bibliography)]%
+ }%
+\reserved@a
+\documentclass[USenglish]{koma-script-source-doc}
+\usepackage{babel}
+\usepackage{hvlogos}
+\setcounter{StandardModuleDepth}{2}
+\begin{document}
+\DocInput{scrkernel-bibliography.dtx}
+\end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \changes{v2.95}{2002/06/30}{new by splitting \file{scrclass.dtx}}
+% \changes{v3.36}{2022/02/21}{switch over from \cls*{scrdoc} to
+% \cls*{koma-script-source-doc}}
+% \changes{v3.36}{2022/02/21}{whole implementation documentation in English}
+%
+% \GetFileInfo{scrkernel-bibliography.dtx}
+% \title{Bibliography and References with
+% \href{https://komascript.de}{\KOMAScript} Classes and Packages}
+% \author{\href{mailto:komascript@gmx.info}{Markus Kohm}}
+% \date{Revision \fileversion{} of \filedate}
+% \maketitle
+% \begin{abstract}
+% \file{scrkernel-bibliography.dtx} provides the usual functionality for the
+% bibliography or references. In comparison with the standard classes
+% several additions are available. Nevertheless it is fully compatible with
+% the known features of the standard classes.
+% \end{abstract}
+% \tableofcontents
+%
+% \section{User Manual}
+%
+% You can find the user documentation of the commands implemented in
+% \file{scrkernel-bibliography.dtx} in the \KOMAScript{} manual, either the
+% German \file{scrguide} or the English \file{scrguien}.
+%
+%
+% \MaybeStop{\PrintIndex}
+%
+% \section{Implementation of Bibliography or References}
+%
+% Bibliography or references are not available with the \KOMAScript{} letter
+% class.
+% \begin{macrocode}
+%<*!letter>
+% \end{macrocode}
+%
+%
+% \subsection{Bibliography styles}
+%
+% \KOMAScript{} provides styles for the bibliography or references. This is
+% similar to the redefinition of \cs{@openbib@code} and \cs{newblock} with the
+% standard classes, but much more configurable.
+%
+% \begin{command}{\newbibstyle}
+% \changes{v2.98c}{2008/02/15}{added}
+% \changes{v3.17}{2015/03/12}{using internal storage of options \opt{bibliography}}
+% Defining new bibliography style:
+% \begin{quote}
+% \cs{newbibstyle}\oarg{parent style}\marg{style name}\marg{style code}
+% \end{quote}
+% The command defines an internal command \cs{scr@bibstyle@\meta{style name}},
+% that can be used to activate a bibliography style. If the \meta{parent
+% style} is given, the code of the \meta{parent style} is executed before the
+% \meta{style code}.
+% \begin{macro}{\@openbib@code}
+% \changes{v2.3g}{1996/01/14}{added}
+% \changes{v2.98c}{2008/02/15}{earlier definition}
+% Typically the \meta{style code} redefines the macro \cs{@openbib@code} and
+% \cs{newblock}.
+% The \cs{@openbib@code} is executed at the very beginning of a
+% bibliography. Originally it has been used to implement the standard option
+% \opt{openbib}. \KOMAScript{} uses it for compatibility for all bibliography
+% styles.
+% \begin{command}{\newblock}
+% \changes{v2.3g}{1996/01/14}{initialization changed}
+% \changes{v2.98c}{2008/02/15}{earlier definition}
+% The command \cs{newblock} is used inside bibliography entries to mark a
+% \emph{new block}. Usually such new blocks are inserted after the author and
+% after the title. But the user or \BibTeX{} style is free to use it different.
+% Both are initialized empty (before the code of a parent
+% style is executed.
+% \begin{macro}{\bib@beginhook,\bib@endhook}
+% \changes{v2.98c}{2008/02/15}{added}
+% Also \cs{bib@beginhook} and \cs{bib@endhook} are initialized empty. So
+% activation of a new bibliography style always removes the hook
+% code. Redefining an already existing style is not supported and results in
+% an error.
+% \begin{macrocode}
+%<*option>
+\newcommand{\newbibstyle}[3][]{%
+ \scr@ifundefinedorrelax{scr@bibstyle@#2}{%
+ \scr@ifundefinedorrelax{scr@bibstyle@#1}{%
+ \ClassError{\KOMAClassName}{%
+ parent bibliography style `#1' does not exist}{%
+ You've told me to define the new bibliography style `#2'\MessageBreak
+ to be a child of bibliography style `#1', but bibliography
+ style\MessageBreak
+ `#1' does not exist.\MessageBreak
+ You have to remove the parent declaration or use an existing parent!
+ See the KOMA-Script manual for more information.%
+ }%
+ }{%
+ \@namedef{scr@bibstyle@#2}{%
+ \let\@openbib@code\@empty
+ \let\newblock\@empty
+ \let\bib@beginhook\@empty
+ \let\bib@endhook\@empty
+% \end{macrocode}
+% \begin{macro}{\scr@current@bibstyle}
+% \changes{v3.17}{2015/03/12}{added}
+% \changes{v3.28}{2019/11/18}{\cs{ifstr} renamed to \cs{Ifstr}}
+% \changes{v3.36}{2022/02/21}{add expanded name to list}
+% To be able to change the current value of option \opt{bibliography} we need
+% to know the current style and save it in \cs{scr@current@bibstyle}. We also
+% have to correct the value in the storage by activating a style.
+% \begin{macrocode}
+ \@ifundefined{scr@current@bibstyle}{}{%
+ \Ifstr{\scr@current@bibstyle}{}{}{%
+ \edef\reserved@a{%
+ \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}%
+ {\scr@current@bibstyle}%
+ }\reserved@a
+ }%
+ }%
+ \def\scr@current@bibstyle{#2}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \KOMA@kav@xadd{.\KOMAClassFileName}{bibliography}{#2}%
+ \csname scr@bibstyle@#1\endcsname
+ #3%
+ }%
+ \ifx\scr@bibstylelist\@empty
+ \edef\scr@bibstylelist{`#2'}%
+ \else
+ \edef\scr@bibstylelist{\scr@bibstylelist, `#2'}%
+ \fi
+ }%
+ }{%
+ \ClassError{\KOMAClassName}{bibliography style `#2' already exists}{%
+ You've told me to define the new bibliography style `#2',\MessageBreak
+ but this style already exists.\MessageBreak
+ You have to use another bibliography style name.\MessageBreak
+ See the KOMA-Script manual for more information.%
+ }%
+ }%
+}
+% \end{macrocode}
+% \begin{macro}{\scr@bibstyle@}
+% \changes{v2.98c}{2008/02/15}{added}
+% Dummy of the empty parent style.
+% \begin{macrocode}
+\newcommand*{\scr@bibstyle@}{}
+% \end{macrocode}
+% \end{macro}^^A \scr@bibstyle@
+% The hook macros are reserved.
+% \begin{macrocode}
+\newcommand*{\bib@beginhook}{}
+\newcommand*{\bib@endhook}{}
+% \end{macrocode}
+% \end{macro}^^A \bib@beginhook,\bib@endhook
+% \begin{macro}{\scr@bibstylelist}
+% \changes{v2.98c}{2008/02/15}{added}
+% \changes{v3.36}{2022/02/21}{\cs{@gobble} removed}
+% \cs{scr@bibstylelist} is a printable comma-separated list of all known
+% styles. Single quotes are used to quote the single styles. It is designated
+% to be used in messages.
+% \begin{macrocode}
+\newcommand*{\scr@bibstylelist}{}
+% \end{macrocode}
+% And also \cs{@openbib@code} and \cs{newblock} are reserved.
+% \begin{macrocode}
+\newcommand*{\@openbib@code}{}
+\newcommand*{\newblock}{}
+% \end{macrocode}
+% \end{macro}^^A \scr@bibstylelist
+% \begin{macro}{\scr@bibstyle@openstyle,\scr@bibstyle@oldstyle}
+% \changes{v2.98c}{2008/02/15}{added}
+% The bibliography style \texttt{openstyle} corresponds to standard option
+% \opt{openbib}. The \cs{newblock} starts a new paragraph.
+% Style \texttt{oldstyle} is the default style where \cs{newblock} inserts a
+% small horizontal distance only.
+% \begin{macrocode}
+\newbibstyle{openstyle}{%
+ \renewcommand*{\@openbib@code}{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+ \renewcommand*{\newblock}{\par}%
+}
+\newbibstyle{oldstyle}{%
+ \renewcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}%
+}
+\scr@bibstyle@oldstyle
+% \end{macrocode}
+% \end{macro}^^A \scr@bibstyle@openstyle,\scr@bibstyle@oldstyle
+% \end{command}^^A \newblock
+% \end{macro}^^A \@openbib@code
+% \end{command}^^A \newbibstyle
+%
+%
+% \subsection{Bibliography heading}
+%
+% \begin{macro}{\bib@heading}
+% \changes{v2.3h}{1995/01/21}{added}
+% \changes{v2.6c}{2000/06/10}{printing preamble}
+% \changes{v2.7b}{2001/01/05}{using \cs{setchapterpreamble}}
+% \changes{v2.7j}{2001/06/27}{printing preamble moved to \env{thebibliography}}
+% \changes{v2.98c}{2008/02/15}{defined ealier}
+% \changes{v3.10}{2011/08/31}{using \cs{MakeMarkcase}}
+% \changes{v3.12}{2012/02/06}{using \cs{ifbib@leveldown}}
+% \changes{v3.13b}{2014/10/10}{running head with \texttt{leveldown} fixed}
+% \changes{v3.25}{2017/10/13}{using always \cs{@mkright} and \cs{@mkdouble}}
+% \changes{v3.25}{2017/10/13}{using \cs{bibliography@heading}}
+% \begin{macro}{\bibliography@heading}
+% \changes{v3.25}{2017/10/13}{added}
+% \changes{v3.26}{2018/09/03}{using \cs{addsecmark} or \cs{subsectionmark}
+% instead of \cs{@mkright}}
+% \cs{bib@heading} runs the more generic \cs{bibliography@heading} with text
+% \cs{refname} resp. \cs{bibname}. This indirect approach has been
+% implemented, to that \pkg{biblatex} can simply call \cs{bibliography} with
+% different texts for multiple bibliographies.
+% \begin{macrocode}
+\newcommand*{\bib@heading}{%
+%<article> \bibliography@heading{\refname}%
+%<book|report> \bibliography@heading{\bibname}%
+}
+\newcommand*{\bibliography@heading}[1]{%
+ \ifbib@leveldown
+%<article> \subsection*{#1}%
+%<book|report> \section*{#1}%
+%<book|report> \addsecmark{#1}%
+%<*article>
+ \begingroup
+ \c@secnumdepth=-\maxdimen
+ \subsectionmark{#1}%
+ \endgroup
+%</article>
+ \else
+%<article> \section*{#1}%
+%<book|report> \chapter*{#1}%
+ \@mkdouble{\MakeMarkcase{#1}}%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}^^A \bibliography@heading
+% \end{macro}^^A \bib@heading
+%
+%
+% \subsection{Options}
+%
+% \begin{option}{bibliography}
+% \changes{v2.98c}{2008/02/15}{added}
+% \changes{v3.10}{2011/08/31}{using \cs{MakeMarkcase}}
+% \changes{v3.12}{2013/02/06}{new value \opt{leveldown}}
+% \changes{v3.12}{2013/02/06}{new value \opt{standardlevel}}
+% \changes{v3.12}{2013/03/05}{adapted to changes of \pkg*{scrbase}}
+% \changes{v3.12}{2013/09/28}{using \cs{addxcontentsline} instead of
+% \cs{addcontentsline}}
+% \changes{v3.12}{2013/09/28}{do not write chapter entries to other directories}
+% \changes{v3.17}{2015/03/12}{using internal value storage}
+% \changes{v3.25}{2017/10/13}{using always \cs{@mkright} and \cs{@mkdouble}}
+% \changes{v3.25}{2017/10/13}{redefining \cs{bibliography@heading} instead of
+% \cs{bib@heading}}
+% \KOMAScript provides several configurations for the bibliography or
+% references using a single option.
+% \begin{macro}{\bib@leveldownfalse,\bib@leveldowntrue,\ifbib@leveldown}
+% \changes{v3.12}{2013/02/06}{added}
+% The boolean \cs{ifbib@leveldown} is used to allow the
+% bibliography/references have a lower heading level.
+% \begin{macrocode}
+\newif\ifbib@leveldown
+% \end{macrocode}
+% \end{macro}
+% The supported values for option \opt{bibliography} are:
+% \begin{macrocode}
+\KOMA@key{bibliography}{%
+ \scr@ifundefinedorrelax{scr@bibstyle@#1}{%
+ \KOMA@set@ncmdkey{bibliography}{@tempa}{%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=notoc}:] (default) don't add the bibliography/references to the
+% table of contents.
+% \end{description}
+% \begin{macrocode}
+ {notoc}{0},{nottotoc}{0},{plainheading}{0},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=totoc}:] add the bibliography/references to the table of
+% contents, but do not number it.
+% \end{description}
+% \begin{macrocode}
+ {totoc}{1},{toc}{1},{notnumbered}{1},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=numbered}:] number the bibliography/references and so also add
+% it to the table of contents.
+% \end{description}
+% \begin{macrocode}
+ {numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},%
+ {numberedtoc}{2},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=leveldown}:] don't use the top heading level (chapters with
+% \cls*{scrbook} or \cls*{scrreprt}, sections with \cs*{scrartcl}) but one
+% level lower (sections with \cls*{scrbook} or \cls*{scrreprt}, subsection
+% with \cs*{scrartcl}) for the bibliography/references.
+% \end{description}
+% \begin{macrocode}
+ {leveldown}{3},%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=standardlevel}:] use the top heading level (chapters with
+% \cls*{scrbook} or \cls*{scrreprt}, sections with \cs*{scrartcl}) for the
+% bibliography/references.
+% \end{description}
+% \begin{macrocode}
+ {standardlevel}{4}%
+ }{#1}%
+ \ifcase \@tempa\relax % notoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{notoc}%
+ \renewcommand*{\bibliography@heading}[1]{%
+ \ifbib@leveldown
+%<article> \subsection*{##1}%
+%<book|report> \section*{##1}%
+ \@mkright{\MakeMarkcase{##1}}%
+ \else
+%<article> \section*{##1}%
+%<book|report> \chapter*{##1}%
+ \@mkdouble{\MakeMarkcase{##1}}%
+ \fi
+ }%
+ \or% totoc
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{totoc}%
+ \renewcommand*{\bibliography@heading}[1]{%
+%<*article>
+ \ifbib@leveldown
+% \end{macrocode}
+% \changes{v3.23}{2017/02/23}{using \cs{ext@toc}}
+% \changes{v3.25}{2017/10/13}{using \cs{addsubsectiontocentry} instead of
+% \cs{addxcontentsline}}
+% From version 3.23 \cs{ext@toc} of \pkg*{tocbasic} is used instead of hard
+% coded |toc|.
+% \begin{macrocode}
+ \subsection*{%
+ \addsubsectiontocentry{}{##1}%
+ ##1%
+ }%
+ \@mkright{\MakeMarkcase{##1}}%
+ \else
+ \addsec{##1}%
+ \@mkdouble{\MakeMarkcase{##1}}%
+ \fi
+%</article>
+%<*book|report>
+ \ifbib@leveldown
+ \addsec{##1}%
+ \else
+ \if@chaptertolists
+ \@chaptertolistsfalse\addchap{##1}\@chaptertoliststrue
+ \else
+ \addchap{##1}%
+ \fi
+ \@mkdouble{\MakeMarkcase{##1}}%
+ \fi
+%</book|report>
+ }%
+ \or% numbered
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{nobibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliography}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{toc}{bibliographynumbered}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{notoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{totoc}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{numbered}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{numbered}%
+ \renewcommand*{\bibliography@heading}[1]{%
+%<*article>
+ \ifbib@leveldown
+ \subsection{##1}%
+ \else
+ \section{##1}%
+ \@mkdouble{\MakeMarkcase{\sectionmarkformat ##1}}%
+ \fi
+%</article>
+%<*book|report>
+ \ifbib@leveldown
+ \section{##1}%
+ \else
+ \if@chaptertolists
+ \@chaptertolistsfalse\chapter{##1}\@chaptertoliststrue
+ \else
+ \chapter{##1}
+ \fi
+ \@mkdouble{\MakeMarkcase{\chaptermarkformat ##1}}%
+ \fi
+%</book|report>
+ }
+ \or% leveldown
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{leveldown}%
+ \bib@leveldowntrue
+ \or% standardlevel
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{leveldown}%
+ \KOMA@kav@remove{.\KOMAClassFileName}{bibliography}{standardlevel}%
+ \KOMA@kav@add{.\KOMAClassFileName}{bibliography}{standardlevel}%
+ \bib@leveldownfalse
+ \fi
+ }{%
+% \end{macrocode}
+% \begin{description}
+% \item[\opt{=\meta{style}}:] all other values are names of styles.
+% \begin{description}
+% \item[ToDo:] Here we should test for valid style names and report an
+% unknown value for unknown styles.
+% \end{description}
+% \end{description}
+% \begin{macrocode}
+ \FamilyKeyStateProcessed
+ \edef\reserved@a{%
+ \noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}%
+ {\scr@current@bibstyle}%
+ }\reserved@a
+ \csname scr@bibstyle@#1\endcsname
+ }%
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{openbib}
+% \begin{macro}{\@openbibfalse,\@openbibtrue,\if@openbib}
+% \changes{v2.3g}{1996/01/14}{removed}
+% \end{macro}
+% \changes{v2.3g}{1996/01/14}{re-implemented}
+% \changes{v2.98c}{2008/02/15}{obsolete}
+% \changes{v3.01a}{2008/11/21}{standard instead of obsolete}
+% The standard option \opt{openbib} is mapped to \opt{bibliography=openstyle}.
+% \begin{macrocode}
+\KOMA@DeclareStandardOption{openbib}{bibliography=openstyle}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{bibtotoc}
+% \changes{v2.3h}{1995/01/21}{added}
+% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} added}
+% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} added}
+% \changes{v2.7}{2001/01/03}{braces fixed}
+% \changes{v2.7j}{2001/06/27}{preamble printing moved to \env{thebibliography}}
+% \changes{v2.98c}{2008/02/15}{obsolete}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% \begin{option}{bibtotocnumbered}
+% \changes{v2.3h}{1995/01/21}{added}
+% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} added}
+% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} added}
+% \changes{v2.7}{2001/01/03}{braces fixed}
+% \changes{v2.7b}{2001/01/05}{using \cs{setchapterpreamble}}
+% \changes{v2.7i}{2001/05/17}{\cs{chapter} instead of \cs{addchap}}
+% \changes{v2.7j}{2001/06/27}{preamble printing moved to \env{thebibliography}}
+% \changes{v2.9p}{2003/07/07}{number in running head}
+% \changes{v2.98c}{2008/02/15}{obsolete}
+% \changes{v3.01a}{2008/11/20}{deprecated}
+% Deprecated options \opt{bibtotoc} and \opt{bibtotocnumbered} are mapped to
+% \opt{bibliography=totoc} resp. \opt{bibliography=totocnumbered}.
+% \begin{macrocode}
+\KOMA@DeclareDeprecatedOption{bibtotoc}{bibliography=totoc}
+\KOMA@DeclareDeprecatedOption{bibtotocnumbered}{bibliography=totocnumbered}
+%</option>
+% \end{macrocode}
+% \end{option}^^A bibtotocnumbered
+% \end{option}^^A bibtotoc
+%
+%
+% \subsection{Names}
+%
+% \begin{command}{\refname,\bibname}
+% \changes{v3.36}{2022/02/15}{explicit definition for English languages}
+% Depending on the class either \cs{refname} or \cs{bibname} is used.
+% \begin{macrocode}
+%<*body>
+%<*article>
+\newcommand*\refname{References}
+\providecaptionname{american,australian,british,canadian,english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\refname{References}
+%</article>
+%<*book|report>
+\newcommand*\bibname{Bibliography}
+\providecaptionname{american,australian,british,canadian,english,newzealand,%
+ UKenglish,ukenglish,USenglish,usenglish}\bibname{Bibliography}
+%</book|report>
+% \end{macrocode}
+% \end{command}
+%
+%
+% \subsection{Printing the bibliography or references}
+%
+% \begin{command}{\setbibpreamble}
+% \changes{v2.6c}{2000/06/10}{added}
+% \changes{v2.7j}{2001/05/27}{\cs{renewcommand} replaced by \cs{def} for
+% better \pkg{natbib} compatibility}
+% \begin{macro}{\bibpreamble}
+% \changes{v2.6c}{2000/06/10}{neue (intern)}
+% \changes{v2.6d}{2000/07/20}{\cs{let} replaced by \cs{newcommand*}}
+% \changes{v2.8q}{2002/01/10}{\cs{newcommand*} replaced by \cs{let}}
+% \changes{v2.7j}{2001/05/27}{preamble printing moved to \env{thebibliography}}
+% \cs{bibpreamble} should be interpreted as an internal macro. The user
+% command name space has been used for compatibility with \pkg{natbib}
+% only. The official \KOMAScript{} user interface is using
+% \begin{quote}
+% \cs{setbibpreamble}\marg{preamble}
+% \end{quote}
+% Also for compatibility \cs{bibpreamble} is not set by \cs{bib@heading} but
+% inside environment \env{theenvironment}.
+% \begin{macrocode}
+\newcommand*{\bibpreamble}{\relax}
+\let\bibpreamble\relax
+\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}}
+% \end{macrocode}
+% \end{macro}^^A \bibpreamble
+% \end{command}^^A \setbibpreamble
+%
+% \begin{length}{bibindent}
+% The indent of entries with option \opt{bibliography=openstyle}. Default is 1.5\,em.
+% \begin{macrocode}
+\newdimen\bibindent
+\bibindent=1.5em
+% \end{macrocode}
+% \end{length}
+%
+% \begin{environment}{thebibliography}
+% \changes{v2.2a}{1995/02/01}{for \cls*{scrartcl} \cs{bibname} replaced by
+% \cs{refname}}
+% \changes{v2.3h}{1995/01/21}{using \cs{bib@heading}}
+% \changes{v2.8q}{2002/01/10}{handling empty preamble}
+% \changes{v2.9o}{2003/03/06}{fix of comparing \cs{bibpreamble} with \cs{@empty}}
+% \changes{v2.98c}{2008/02/15}{new hooks \cs{bib@before@hook} and
+% \cs{bib@after@hook}}
+% This environment is used to print the bibliography or references. Note: This
+% environment is redefined by almost all bibliography packages like
+% \pkg{natbib} or \pkg{biblatex}. No one of these supports all features of
+% \KOMAScript{}. So if such a package is used, users should consult the
+% package manual instead of using a \KOMAScript{} feature.
+% \begin{macrocode}
+\newenvironment{thebibliography}[1]{%
+ \if@bib@break@
+ \bib@beginhook
+ \else
+%<*book|report>
+ \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else
+ \setchapterpreamble{\bibpreamble}%
+ \fi\fi
+%</book|report>
+ \bib@heading
+%<*article>
+ \ifx\bibpreamble\relax\else\ifx\bibpreamble\@empty\else
+ \noindent\bibpreamble\par\nobreak
+ \fi\fi
+%</article>
+ \bib@beginhook
+ \bib@before@hook
+ \fi
+% \end{macrocode}
+% \begin{command}{\BreakBibliography}
+% \changes{v2.98c}{2008/02/15}{added}
+% Redefining \cs{BreakBibliography} to work with our definition of
+% \env{thebibliography}.
+% \begin{macrocode}
+ \renewcommand{\BreakBibliography}[1]{%
+ \@bib@break
+ \end{thebibliography}%
+ \begingroup ##1\endgroup
+ \begin{thebibliography}{#1}
+ }%
+% \end{macrocode}
+% \end{command}
+% \begin{macrocode}
+% Start the list for the entries.
+ \list{%
+ \@biblabel{\@arabic\c@enumiv}%
+ }{%
+ \settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \if@bib@break@
+ \edef\@tempa{%
+ \noexpand\usecounter{enumiv}%
+ \noexpand\setcounter{enumiv}{\the\c@enumiv}%
+ }\@tempa
+ \no@bib@break
+ \else
+ \usecounter{enumiv}%
+ \fi
+ \let\p@enumiv\@empty
+ \renewcommand*\theenumiv{\@arabic\c@enumiv}%
+ }%
+ \sloppy\clubpenalty4000 \widowpenalty4000
+ \sfcode`\.=\@m
+}{%
+ \if@bib@break@
+ \def\@noitemerr{%
+ \@latex@warning{%
+ \string\BreakBibliography\space at begin of `thebibliography'
+ environment\MessageBreak
+ or following \string\BreakBibliography}%
+ }%
+ \else
+ \def\@noitemerr{%
+ \@latex@warning{%
+ Empty `thebibliography' environment or
+ \string\BreakBibliography\MessageBreak
+ before end of `thebibliography' environment}%
+ }%
+ \fi
+ \endlist
+ \if@bib@break@
+ \else
+ \bib@after@hook
+ \let\bib@before@hook\@empty
+ \let\bib@after@hook\@empty
+ \fi
+ \bib@endhook
+}
+% \end{macrocode}
+% \begin{macro}{\if@bib@break@,\no@bib@break,\@bib@break}
+% \changes{v2.98c}{2008/02/15}{added}
+% To be used as global switch.
+% \begin{description}
+% \item[ToDo:] Maybe redefine \cs{@bib@break@true} and \cs{@bib@break@false}.
+% \end{description}
+% \begin{macrocode}
+\newif\if@bib@break@
+\newcommand{\no@bib@break}{\global\let\if@bib@break@\iffalse}
+\newcommand*{\@bib@break}{\global\let\if@bib@break@\iftrue}
+% \end{macrocode}
+% \end{macro}^^A \if@bib@break@,\no@bib@break,\@bib@break
+% \begin{macro}{\bib@before@hook,\bib@after@hook}
+% \changes{v2.98c}{2008/02/15}{added}
+% \begin{macrocode}
+\newcommand*{\bib@before@hook}{}
+\newcommand*{\bib@after@hook}{}
+% \end{macrocode}
+% \end{macro}^^A \bib@before@hook,\bib@after@hook
+% \end{environment}^^A thebibliography
+%
+% \begin{command}{\BreakBibliography}
+% \changes{v2.98c}{2008/02/15}{added}
+% The initial definition is a do nothing but warn, because the command makes
+% sense only inside \env{thebibliography}.
+% \begin{macrocode}
+\newcommand{\BreakBibliography}[1]{%
+ \ClassWarning{\KOMAClassName}{%
+ You've used \string\BreakBibliography\space either outside of\MessageBreak
+ the bibliography or `thebibliography' was redefined\MessageBreak
+ incompatible, e.g., using a bibliography package.\MessageBreak
+ \string\BreakBibliography\space ignored%
+ }%
+}
+% \end{macrocode}
+% \end{command}^^A \BreakBibliography
+%
+% \begin{command}{\AfterBibliographyPreamble,\AtEndBibliography}
+% \changes{v2.98c}{2008/02/15}{added}
+% Add code to the two new hooks inside our definition of
+% \env{thebibliography}. So any bibliography package can break this
+% functionality.
+% Note: The hooks are always emptied by selecting a style using
+% \opt{bibliography=\meta{style name}}.
+% \begin{macrocode}
+\newcommand{\AfterBibliographyPreamble}{\g@addto@macro\bib@before@hook}
+\newcommand{\AtEndBibliography}{\g@addto@macro\bib@after@hook}
+%</body>
+% \end{macrocode}
+% \end{command}
+%
+%
+% \begin{macrocode}
+%</!letter>
+% \end{macrocode}
+%
+% \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: