
Ich möchte Änderungen an meinem Bibtex-Titel vornehmen. Dies kann durch Ändern von \bibname erfolgen. Wenn es jedoch darum geht, den Abstand zwischen dem Titel „Bibliographie“ und den folgenden Einträgen zu verringern, möchte ich zunächst wissen, wie viel Abstand dort überhaupt angegeben wird.
Generell bin ich neugierig, wie die internen Komponenten von Bibtex funktionieren. Ich kann dazu keine Dokumentation finden. Meine Fragen sind also:
- Wo finde ich Informationen dazu, wie Bibtex die Bibliografieseite(n) formatiert?
- Genauer gesagt: Wodurch wird der Abstand zwischen dem Titel und den darunter liegenden Einträgen bestimmt?
Antwort1
Die Ausgabe von BibTeX ist eine .bbl
Datei, die eine thebibliography
Umgebung enthält. Es ist die Aufgabe der Dokumentklasse, diese Umgebung zu definieren.
Normalerweise ist es so etwas wie
\section*{\refname}
\begin{list}{<code>}
<bib items>
\end{list}
für Klassen ohne Kapitel und
\chapter*{\bibname}
\begin{list}{<code>}
<bib items>
\end{list}
Dies kann je nach geladenen Paketen variieren; greift beispielsweise natbib
hier ein, verwendet jedoch ein \bibsection
Makro, das im Wesentlichen dem oben genannten entspricht \section*
oder \chapter*
in den oben genannten Fällen vorhanden ist.
Sie können die Definition über die Kommandozeile finden texdef
. Beispielsweise kann die Kommandozeile
texdef -t latex -c article -s thebibliography
wird ausgeben
% article.cls, line 570:
\newenvironment{thebibliography}[1]
{\section*{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
Es muss geändert werden \makeatletter
und \makeatother
.
Beachten Sie, dass es schwierig sein kann, die tatsächliche Definition zu finden, wenn case natbib
(oder möglicherweise andere Pakete) verwendet wird, da die Umgebung am Anfang des Dokuments neu definiert wird. Ein Blick auf den Paketcode zeigt jedoch
\renewenvironment{thebibliography}[1]{%
\bibsection
\parindent\z@
\bibpreamble
\bibfont
\list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
\ifNAT@openbib
\renewcommand\newblock{\par}%
\else
\renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
\fi
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.\@m
\let\NAT@bibitem@first@sw\@firstoftwo
\let\citeN\cite \let\shortcite\cite
\let\citeasnoun\cite
}{%
\bibitem@fin
\bibpostamble
\def\@noitemerr{%
\PackageWarning{natbib}{Empty `thebibliography' environment}%
}%
\endlist
\bibcleanup
}%
Um den Abstand zwischen dem Titel und dem ersten Element zu ändern, müssen Sie in beiden Fällen lediglich \vspace
davor einen entsprechenden Befehl einfügen.\list