You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
741 lines
26 KiB
741 lines
26 KiB
% \CheckSum{421}
|
|
% \iffalse meta-comment
|
|
% ======================================================================
|
|
% scrkernel-bibliography.dtx
|
|
% Copyright (c) Markus Kohm, 2002-2019
|
|
%
|
|
% 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-bibliography.dtx
|
|
% Copyright (c) Markus Kohm, 2002-2019
|
|
%
|
|
% 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-bibliography.dtx 3390 2019-11-18 17:09:35Z kohm $
|
|
%<option>%%% (run: option)
|
|
%<body>%%% (run: body)
|
|
%<*dtx>
|
|
% \fi
|
|
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
|
|
\begingroup
|
|
\def\filedate$#1: #2-#3-#4 #5${\gdef\filedate{#2/#3/#4}}
|
|
\filedate$Date: 2019-11-18 18:09:35 +0100 (Mon, 18 Nov 2019) $
|
|
\def\filerevision$#1: #2 ${\gdef\filerevision{r#2}}
|
|
\filerevision$Revision: 1872 $
|
|
\edef\reserved@a{%
|
|
\noexpand\endgroup
|
|
\noexpand\ProvidesFile{scrkernel-bibliography.dtx}%
|
|
[\filedate\space\filerevision\space
|
|
KOMA-Script source
|
|
(bibliography)]%
|
|
}%
|
|
\reserved@a
|
|
% \iffalse
|
|
\documentclass[parskip=half-]{scrdoc}
|
|
\usepackage[english,ngerman]{babel}
|
|
\CodelineIndex
|
|
\RecordChanges
|
|
\GetFileInfo{scrkernel-bibliography.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}
|
|
%</dtx>
|
|
% \fi
|
|
% \selectlanguage{ngerman}
|
|
%
|
|
% \changes{v2.95}{2002/06/30}{%
|
|
% erste Version aus der Aufteilung von \texttt{scrclass.dtx}}
|
|
%
|
|
% \section{Literaturverzeichnis}
|
|
%
|
|
% Das Literaturverzeichnis unterscheidet sich bei \KOMAScript{} nicht
|
|
% wesentlich von den Standardklassen.
|
|
%
|
|
% Briefe haben kein Literaturverzeichnis.
|
|
%
|
|
% \StopEventually{\PrintIndex\PrintChanges}
|
|
%
|
|
% \iffalse
|
|
%<*!letter>
|
|
% \fi
|
|
%
|
|
% \iffalse
|
|
%<*option>
|
|
% \fi
|
|
% \subsection{Anweisungen, die für die Optionen benötigt werden}
|
|
%
|
|
% Einige Anweisungen werden über Optionen verändert. Dazu müssen sie aber
|
|
% bereits vor der Abarbeitung der Optionen definiert sein.
|
|
%
|
|
% \subsubsection{Literaturverzeichnisstile}
|
|
%
|
|
% \begin{macro}{\newbibstyle}
|
|
% \changes{v2.98c}{2008/02/15}{Neu}%^^A
|
|
% \changes{v3.17}{2015/03/12}{interne Speicherung des Werts für Option
|
|
% \texttt{bibliography}}%^^A
|
|
% Neue Literaturverzeichnisstile müssen mit dieser Anweisung definiert werden,
|
|
% wenn sie von der Fehlermeldung korrekt angezeigt werden sollen. Das erste,
|
|
% optionale Argument ist der Name eines Elternstils. Das zweite
|
|
% Argument ist der Name des Stils. Das dritte Argument ist Code für den
|
|
% Stil. Darin sollten normalerweise Umdefinierungen für \cs{@openbib@code},
|
|
% \cs{newblock}, \cs{bib@beginhook}, \cs{bib@endhook} enthalten sein. Die
|
|
% genannten Makros werden am Anfang des Stils zurückgesetzt. Danach wird der
|
|
% Elternstil geladen und dann die eigenen Definitionen.
|
|
% \begin{macrocode}
|
|
\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}{Neu (intern)}%^^A
|
|
% \changes{v3.28}{2019/11/18}{\cs{ifstr} umbenannt in \cs{Ifstr}}%^^A
|
|
% Das Makro \cs{scr@current@bibstyle} wird benötigt, um den aktuellen Wert von
|
|
% Option \texttt{bibliography} korrigieren zu können. Es wird direkt vom Stil
|
|
% definiert, der auch die Korrektur des Optionenwerts durchführt.
|
|
% \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%
|
|
}%
|
|
\g@addto@macro\scr@bibstylelist{, `#2'}%
|
|
}%
|
|
}{%
|
|
\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}{Neu (intern)}%
|
|
% Nur ein Dummy, wenn kein Elternstil existiert.
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@bibstyle@}{}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \begin{macro}{\bib@beginhook}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
|
|
% \begin{macro}{\bib@endhook}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
|
|
% Die beiden Haken, wie sie durch den Literaturverzeichnisstil vorgegeben
|
|
% werden.
|
|
% \begin{macrocode}
|
|
\newcommand*{\bib@beginhook}{}
|
|
\newcommand*{\bib@endhook}{}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \begin{macro}{\scr@bibstylelist}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
|
|
% Liste der mit \cs{newbibstyle} definierten und daher bekannten
|
|
% Literaturverzeichnisstile.
|
|
% \begin{macro}{\@openbib@code}
|
|
% \changes{v2.3g}{1996/01/14}{Neu (intern)}%^^A
|
|
% \changes{v2.98c}{2008/02/15}{wird nun früher definiert}%^^A
|
|
% Code, der am Anfang des Literaturverzeichnisses ausgeführt wird und
|
|
% normalerweise ursprünglich für die \texttt{openbib}-Funktionalität verwendet
|
|
% wurde. Inzwischen wird er für die komplette Stilauswahl verwendet.
|
|
% \begin{macro}{\newblock}
|
|
% \changes{v2.3g}{1996/01/14}{Grundeinstellung geändert}%^^A
|
|
% \changes{v2.98c}{2008/02/15}{wird nun früher definiert}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\scr@bibstylelist}{\@gobble}
|
|
\newcommand*{\@openbib@code}{}
|
|
\newcommand*{\newblock}{}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \begin{macro}{\scr@bibstyle@openstyle}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%
|
|
% Vordefiniert sind zwei Stile. Mit dem Bibliographystil \texttt{openstyle}
|
|
% kann eine alternative Darstellung der Literatureinträge aktiviert
|
|
% werden. Dabei fügt \cs{newblock} keinen horizontalen Abstand mehr ein,
|
|
% sondern beginnt einen neuen Absatz (in Form einer neuen Zeile).
|
|
% \begin{macro}{\scr@bibstyle@oldstyle}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%^^A
|
|
% Der Stil \texttt{oldstyle} entspricht hingegen der Voreinstellung.
|
|
% \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}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsubsection{Überschrift des Literaturverzeichnisses}
|
|
%
|
|
% \begin{macro}{\bib@heading}
|
|
% \changes{v2.3h}{1995/01/21}{neu (intern)}%^^A
|
|
% \changes{v2.6c}{2000/06/10}{die Präambel wird gesetzt}%^^A
|
|
% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird verwendet}%^^A
|
|
% \changes{v2.7j}{2001/06/27}{Setzen der Präambel in die
|
|
% \texttt{thebibliography}-Umgebung verschoben}%^^A
|
|
% \changes{v2.98c}{2008/02/15}{wird nun früher definiert}%^^A
|
|
% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}%^^A
|
|
% \changes{v3.12}{2012/02/06}{\cs{ifbib@leveldown} wird beachtet}%^^A
|
|
% \changes{v3.13b}{2014/10/10}{running head with \texttt{leveldown}%^^A
|
|
% fixed}%^^A
|
|
% \changes{v3.25}{2017/10/13}{use always \cs{@mkright} and \cs{@mkdouble}}%^^A
|
|
% \changes{v3.25}{2017/10/13}{using \cs{bibliography@heading}}%^^A
|
|
% \begin{macro}{\bibliography@heading}
|
|
% \changes{v3.25}{2017/10/13}{neu (intern)}
|
|
% \changes{v3.26}{2018/09/03}{Verwendung von \cs{addsecmark}
|
|
% oder \cs{subsectionmark} statt \cs{@mkright}}%^^A
|
|
% Befehl zum Setzen der Überschrift des Literaturverzeichnisses.
|
|
% \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}
|
|
% \end{macro}%
|
|
%
|
|
%
|
|
% \subsection{Optionen für das Literaturverzeichnis}
|
|
%
|
|
% \begin{option}{bibliography}
|
|
% \changes{v2.98c}{2008/02/15}{Neu}%^^A
|
|
% \changes{v3.10}{2011/08/31}{\cs{MakeMarkcase} wird beachtet}%^^A
|
|
% \changes{v3.12}{2013/02/06}{neuer Wert \texttt{leveldown}}%^^A
|
|
% \changes{v3.12}{2013/02/06}{neuer Wert \texttt{standardlevel}}%^^A
|
|
% \changes{v3.12}{2013/03/05}{an die Änderungen in \textsf{scrbase}%^^A
|
|
% angepasst}%^^A
|
|
% \changes{v3.12}{2013/09/28}{Verwendung von \cs{addxcontentsline} statt
|
|
% \cs{addcontentsline}}%^^A
|
|
% \changes{v3.12}{2013/09/28}{Es werden keine Kapiteleinträge in andere
|
|
% Verzeichnisse geschrieben.}%^^A
|
|
% \changes{v3.17}{2015/03/12}{interne Speicherung der Werte}%^^A
|
|
% \changes{v3.25}{2017/10/13}{use always \cs{@mkright} and
|
|
% \cs{@mkdouble}}%^^A
|
|
% \changes{v3.25}{2017/10/13}{redefines \cs{bibliography@heading} instead of
|
|
% \cs{bib@heading}}%^^A
|
|
% Dies ist der Generalschlüssel für alle Optionen, die das
|
|
% Literaturverzeichnis betreffen. Neu ist, dass verschiedene Stile definiert
|
|
% werden können. Desweiteren kann man \texttt{totoc} und
|
|
% \texttt{totocnumbered} wieder mit \texttt{nottotoc} aufgeben.
|
|
% \begin{macro}{\ifbib@leveldown}
|
|
% \changes{v3.12}{2013/02/06}{neuer Schalter (intern)}%^^A
|
|
% Für den ab Version~3.12 neuen Wert \texttt{leveldown} und dessen
|
|
% Gegenstück \texttt{standardlevel} wird außerdem ein Schalter benötigt.
|
|
% \begin{macrocode}
|
|
\newif\ifbib@leveldown
|
|
\KOMA@key{bibliography}{%
|
|
\scr@ifundefinedorrelax{scr@bibstyle@#1}{%
|
|
\KOMA@set@ncmdkey{bibliography}{@tempa}{%
|
|
{notoc}{0},{nottotoc}{0},{plainheading}{0},%
|
|
{totoc}{1},{toc}{1},{notnumbered}{1},%
|
|
{numbered}{2},{totocnumbered}{2},{tocnumbered}{2},{numberedtotoc}{2},%
|
|
{numberedtoc}{2},%
|
|
{leveldown}{3},%
|
|
{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}{Verwendung von \cs{ext@toc}}%^^A
|
|
% \changes{v3.25}{2017/10/13}{Verwendung von \cs{addsubsectiontocentry} statt
|
|
% \cs{addxcontentsline}}%^^A
|
|
% Ab Version 3.23 wird das von \textsf{tocbasic} bereitgestellte
|
|
% \cs{ext@toc} statt dem hart codierten \texttt{toc} verwendet.
|
|
% \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
|
|
}{%
|
|
\FamilyKeyStateProcessed
|
|
\edef\reserved@a{%
|
|
\noexpand\KOMA@kav@remove{.\KOMAClassFileName}{bibliography}%
|
|
{\scr@current@bibstyle}%
|
|
}\reserved@a
|
|
\csname scr@bibstyle@#1\endcsname
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{option}
|
|
%
|
|
% \begin{option}{openbib}
|
|
% \changes{v2.3g}{1996/01/14}{\cs{if@openbib} (\cs{@openbibtrue},
|
|
% \cs{@openbibfalse}) entfernt}
|
|
% \changes{v2.3g}{1996/01/14}{Definition der openbib Option neu
|
|
% implementiert}%^^A
|
|
% \changes{v2.98c}{2008/02/15}{obsolete}%^^A
|
|
% \changes{v3.01a}{2008/11/21}{standard statt obsolet}%^^A
|
|
% Mit dieser Option kann eine alternative Darstellung der
|
|
% Literatureinträge aktiviert werden. Dabei fügt \cs{newblock} keinen
|
|
% horizontalen Abstand mehr ein, sondern beginnt einen neuen Absatz
|
|
% (in Form einer neuen Zeile).
|
|
% \begin{macrocode}
|
|
\KOMA@DeclareStandardOption{openbib}{bibliography=openstyle}
|
|
% \end{macrocode}
|
|
% \end{option}
|
|
%
|
|
% \begin{option}{bibtotoc}
|
|
% \changes{v2.3h}{1995/01/21}{neue Option}%^^A
|
|
% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingefügt}
|
|
% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingefügt}
|
|
% \changes{v2.7}{2001/01/03}{Klammerung korrigiert}%^^A
|
|
% \changes{v2.7j}{2001/06/27}{Setzen der Präambel in die
|
|
% thebibliography-Umgebung verschoben}%^^A
|
|
% \changes{v2.98c}{2008/02/15}{obsolete}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% \begin{option}{bibtotocnumbered}
|
|
% \changes{v2.3h}{1995/01/21}{neue Option}%^^A
|
|
% \changes{v2.6b}{2000/05/26}{\cs{@mkboth} eingefügt}
|
|
% \changes{v2.6c}{2000/06/10}{\cs{bibpreamble} eingefügt}
|
|
% \changes{v2.7}{2001/01/03}{Klammerung korrigiert}%^^A
|
|
% \changes{v2.7b}{2001/01/05}{\cs{setchapterpreamble} wird
|
|
% verwendet}
|
|
% \changes{v2.7i}{2001/05/17}{\cs{chapter} statt \cs{addchap}}
|
|
% \changes{v2.7j}{2001/06/27}{Setzen der Präambel in die
|
|
% thebibliography-Umgebung verschoben}%^^A
|
|
% \changes{v2.9p}{2003/07/07}{Nummerierung im Kolumnentitel}%^^A
|
|
% \changes{v2.98c}{2008/02/15}{obsolete}%^^A
|
|
% \changes{v3.01a}{2008/11/20}{deprecated}%^^A
|
|
% Die Option \texttt{bibtotoc} sorgt dafür, dass das
|
|
% Literaturverzeichnis im Inhaltsverzeichnis aufgeführt wird.
|
|
% Demgegenüber erweitert die Option \texttt{bibtotocnumbered} zu einem
|
|
% normalen Kapitel einschließlich Nummerierung.
|
|
% \begin{macrocode}
|
|
\KOMA@DeclareDeprecatedOption{bibtotoc}{bibliography=totoc}
|
|
\KOMA@DeclareDeprecatedOption{bibtotocnumbered}{bibliography=totocnumbered}
|
|
% \end{macrocode}
|
|
% \end{option}
|
|
% \end{option}
|
|
%
|
|
%
|
|
% \iffalse
|
|
%</option>
|
|
%<*body>
|
|
% \fi
|
|
%
|
|
%
|
|
% \subsection{Standardbezeichner}
|
|
%
|
|
% \begin{macro}{\refname}
|
|
% \begin{macro}{\bibname}
|
|
% Je nach Klasse wird \cs{refname} oder \cs{bibname} verwendet.
|
|
% \begin{macrocode}
|
|
%<article>\newcommand*\refname{References}
|
|
%<book|report>\newcommand*\bibname{Bibliography}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsection{Definitionen für das Literaturverzeichnis}
|
|
%
|
|
% \begin{macro}{\setbibpreamble}
|
|
% \changes{v2.6c}{2000/06/10}{neu}%^^A
|
|
% \changes{v2.7j}{2001/05/27}{\cs{renewcommand} durch \cs{def}
|
|
% ersetzt zur Erhöhung der \textsf{natbib}-Kompatibilität}
|
|
% \begin{macro}{\bibpreamble}
|
|
% \changes{v2.6c}{2000/06/10}{neue (intern)}%^^A
|
|
% \changes{v2.6d}{2000/07/20}{Makro funktioniert nachdem \cs{let}%^^A
|
|
% durch \cs{newcommand*} ersetzt wurde}
|
|
% \changes{v2.8q}{2002/01/10}{wieder \cs{let}}
|
|
% \cs{bibpreamble} kann vom Benutzer mit \cs{setbibpreamble} auf
|
|
% einen Text gesetzt werden, der nach der Überschrift eingefügt
|
|
% wird. Dasselbe Makro wird von \textsf{natbib} als \cs{relax}
|
|
% definiert; aus Kompatibilitätsgründen wird hier vergleichbar
|
|
% verfahren und \cs{let} bzw. \cs{def} statt \cs{renewcommand}
|
|
% verwendet.
|
|
% \changes{v2.7j}{2001/05/27}{Setzen der Präambel in die
|
|
% \texttt{thebibliography}-Umgebung verschoben}
|
|
% Außerdem wird ab Version 2.7j die Präambel nicht mehr in
|
|
% \cs{bib@heading} gesetzt, sondern in der
|
|
% \texttt{thebibliography}-Umgebung. Dies dient ebenfalls der
|
|
% Kompatibilität mit natbib. Trotz aller Kompatibilität ist
|
|
% \cs{bibpreamble} als internes Makro zu betrachten.
|
|
% \begin{macrocode}
|
|
\newcommand*{\bibpreamble}{\relax}
|
|
\let\bibpreamble\relax
|
|
\newcommand{\setbibpreamble}[1]{\def\bibpreamble{#1}}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{Length}{bibindent}
|
|
% Der Einzug der Einträge bei \texttt{openbib}. Voreingestellt sind
|
|
% 1,5\,em.
|
|
% \begin{macrocode}
|
|
\newdimen\bibindent
|
|
\bibindent=1.5em
|
|
% \end{macrocode}
|
|
% \end{Length}
|
|
%
|
|
% \begin{environment}{thebibliography}
|
|
% \changes{v2.2a}{1995/02/01}{in \textsf{scrartcl} \cs{bibname}
|
|
% vollständig durch \cs{refname} ersetzt}
|
|
% \changes{v2.3h}{1995/01/21}{Verwendung von \cs{bib@heading}}
|
|
% \changes{v2.8q}{2002/01/10}{Erkennung und gesonderte Behandlung
|
|
% leerer Präambeln}%^^A
|
|
% \changes{v2.9o}{2003/03/06}{Vergleich \cs{bibpreamble} mit \cs{@empty}
|
|
% korrigiert}
|
|
% \changes{v2.98c}{2008/02/15}{Neue Haken \cs{bib@before@hook} und
|
|
% \cs{bib@after@hook} eingefügt}
|
|
% Nun werden noch die Umgebung für das Literaturverzeichnis und der
|
|
% Befehl für die einzelnen Einträge definiert.
|
|
% \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{macro}{\BreakBibliography}
|
|
% \changes{v2.98c}{2008/02/15}{Neu}%^^A
|
|
% An dieser Stelle wird \cs{BreakBibliography} passend umdefiniert.
|
|
% \begin{macrocode}
|
|
\renewcommand{\BreakBibliography}[1]{%
|
|
\@bib@break
|
|
\end{thebibliography}%
|
|
\begingroup ##1\endgroup
|
|
\begin{thebibliography}{#1}
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \begin{macrocode}
|
|
% Hier geht es jetzt mit \texttt{thebibliography} weiter.
|
|
\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@}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%^^A
|
|
% \begin{macro}{\no@bib@break}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%^^A
|
|
% \begin{macro}{\@bib@break}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%^^A
|
|
% Dieser Hilfsschalter arbeitet immer global!
|
|
% \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}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \begin{macro}{\bib@before@hook}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%^^A
|
|
% \begin{macro}{\bib@after@hook}
|
|
% \changes{v2.98c}{2008/02/15}{Neu (intern)}%^^A
|
|
% \begin{macrocode}
|
|
\newcommand*{\bib@before@hook}{}
|
|
\newcommand*{\bib@after@hook}{}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{environment}
|
|
%
|
|
% \begin{macro}{\BreakBibliography}
|
|
% \changes{v2.98c}{2008/02/15}{Neu}%^^A
|
|
% Diese Anweisung unterbricht normalerweise das Literaturverzeichnis für ein
|
|
% paar eigene Anweisungen (z. B. Unterüberschriften). Wenn jedoch nicht das
|
|
% \KOMAScript-Literaturverzeichnis verwendet wird, dann gibt es eine Warnung
|
|
% aus.
|
|
% \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{macro}
|
|
%
|
|
% \begin{macro}{\AfterBibliographyPreamble}
|
|
% \changes{v2.98c}{2008/02/15}{Neu}%^^A
|
|
% \begin{macro}{\AtEndBibliography}
|
|
% \changes{v2.98c}{2008/02/15}{Neu}%^^A
|
|
% Zwei neue Anweisungen, um am Anfang des Literaturverzeichnisses, nach
|
|
% Überschrift und Präambel, und am Ende des Literaturverzeichnisses, nach
|
|
% Abschluss der Liste, Code einschleusen zu können. Das funktioniert natürlich
|
|
% nur so lange, wie keine Paket verwendet wird, das die Umgebung umdefiniert.
|
|
% \begin{macrocode}
|
|
\newcommand{\AfterBibliographyPreamble}{\g@addto@macro\bib@before@hook}
|
|
\newcommand{\AtEndBibliography}{\g@addto@macro\bib@after@hook}
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \iffalse
|
|
%</body>
|
|
% \fi
|
|
%
|
|
% \iffalse
|
|
%</!letter>
|
|
% \fi
|
|
%
|
|
% \Finale
|
|
%
|
|
\endinput
|
|
%
|
|
% end of file `scrkernel-bibliography.dtx'
|
|
%%% Local Variables:
|
|
%%% mode: doctex
|
|
%%% TeX-master: t
|
|
%%% End:
|
|
|