... gegen Computerkopfschmerzen

BibTeX: Stile anpassen

In diesem Tutorial wird gezeigt, wie man BibTeX-Stile anpassen kann, indem man Änderungen an der bst-Datei vornimmt.

Ich möchte in einem meiner Dokumente auf Quellen verweisen, die zu keinem der vordefinierten Stile von BibTeX passen. Hier zeige ich, wie man mit ein paar einfachen Änderungen das gewünschte Ergebnis erzielen kann.

Beispieldokument erstellen

Zuerst erstelle ich ein minimales LaTeX-Dokument Dokument.tex, das Referenzen aus der Datei Literatur.bib nutzt. Ich nutze den Zitierstil bibliographystyle{alpha}, weil man damit bereits am Verweis erkennen kann, um welche Art Dokument es sich handelt und aus welchem Jahr es stammt.

Dokument.tex:
\documentclass{article}

% für Umlaute
\usepackage[latin1]{inputenc}
% für deutsche Überschrift
\usepackage[german]{babel}
% für Quellenangaben
\usepackage{cite}

\begin{document}
Eine Heiratsurkunde \cite{Hei33}.

Ein Eintrag im Adressbuch \cite{Fre96}.
\bibliographystyle{alpha}
\bibliography{Literatur}
\end{document}

Literatur.bib:
@Manual{Hei33,
title = {Robert Traugott Pöhle und Martha Tugendreich Borrmann},
year = {1933},
author = {Heiratsurkunde},
organization = {Standesamt Großenhain},
address = {Nr. 1716},
month = {30. Januar},
note = {beglaubigte Kopie},
}

@Misc{Fre96,
year = {1896},
howpublished = {S. 239},
author = {Adressbuch Freiberg},
note = {Eintrag im Namensteil},
}


Das Ergebnis sieht so aus:
Standardformatierung von Manual und Misc

Um den Stil der zitierten Quellen zu ändern, kopiert man zuerst die Datei alpha.bst unter einem neuen Namen in das Verzeichnis, in dem das Dokument liegt. In diesem Beispiel ist das der Ordner BibTeX_Beispiel, die neue Stildatei heißt meinalpha.bst. (Der Speicherort der Datei alpha.bst hängt von der verwendeten LaTeX-Distribution ab.)
BibTeX_Beispiel$ cp /usr/local/texlive/2017basic/texmf-dist/bibtex/bst/base/alpha.bst  meinalpha.bst

Dann wird in Dokument.tex der Eintrag für bibliographystyle angepaßt:
anpassen: 

Ein Eintrag im Adressbuch \cite{Fre96}.
\bibliographystyle{meinalpha}
\bibliography{Literatur}


Nach dem Kompilieren sollte man man das gleiche Ergebnis wie oben erhalten.

Änderungen am Literaturtyp Manual

Nun soll der Eintrag für die Heiratsurkunde geändert werden.
vorher:
Heiratseintrag vorher

hinterher:
Heiratseintrag hinterher

… d.h. hinter dem Wort „Heiratsurkunde“ soll ein Komma anstelle eines Punktes stehen, die Namen sollen nicht kursiv gesetzt sein, und es soll ein Feld für einen Dateinamen oder eine URL eingefügt werden.
Zuerst ändern wir den Punkt und die Formatierung der Namen:
BibTeX_Beispiel$ vi meinalpha.bst

anpassen:

FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
% new.block
% format.btitle "title" output.check
format.title "title" output.check

author empty$
{ organization empty$


Das Auskommentieren von new.block macht aus dem Punkt ein Komma, und format.title setzt den Text im Feld title normal statt kursiv.
Das Ergebnis sieht so aus:
title nicht kursiv

format.title setzt die Anfangsbuchstaben der Wörter im Feld title klein, nur das erste Wort wird großgeschrieben. Das kann man in Literatur.bib ändern, indem man den Eintrag in doppelte geschweifte Klammern setzt:
einfügen:

title = {{Robert Traugott Pöhle und Martha Tugendreich Borrmann}},

Jetzt sieht es so aus:
Große Anfangsbuchstaben im title


Nun soll noch ein Feld eingefügt werden, in dem ein Dateiname oder ein URL stehen soll, der als solche auf einen Blick kenntlich ist. Hierfür verwende ich das Feld volume, das im Stil Manual von Haus aus nicht enthalten ist. Zuerst wird das Feld volume und sein Inhalt in Literatur.bib eingefügt:
einfügen:

month = {30. Januar},
volume = {Hei33.pdf},
note = {beglaubigte Kopie},

…und dann die Ausgabe des Feldes in meinalpha.bst ergänzt:
einfügen:

FUNCTION {manual}
…..
format.edition output
format.date output
new.block
volume output
note output
fin.entry
}


Jetzt sieht es so aus:
mit Feld für Dateinamen oder URL


Damit der Inhalt des Feldes volume optisch heraussteht und auch eine URL enthalten kann, wird in Dokument.tex der Inhalt des Feldes volume als URL gekennzeichnet:
anpassen:

volume = {\url{Hei33.pdf}},

…und in Dokument.tex das Paket url eingefügt:
einfügen:

% für Quellenangaben
\usepackage{cite}
% für URLs
\usepackage{url}



Das Ergebnis sieht so aus:
Dateiname oder URL mit anderem Font


Änderungen am Literaturtyp Misc

Als nächstes soll der Adreßbucheintrag angepaßt werden:
vorher:
Adreßbucheintrag vorher

nachher:
Adreßbucheintrag nachher


Zuerst entfernen wir den Punkt hinter dem Wort „Freiberg“:
BibTeX_Beispiel$ vi meinalpha.bst

anpassen:

FUNCTION {misc}
{ output.bibitem
% format.authors output
format.authors *
" " *

title howpublished new.block.checkb
format.title output
howpublished new.block.checka
howpublished output
format.date output
new.block
note output
fin.entry
empty.misc.check
}


Der Stern (*) anstelle von output sorgt dafür, daß Punkt und Leerzeichen entfallen, letzteres wird in der folgenden Zeile wieder eingefügt.

Jetzt sieht es so aus:
ohne Punkt hinter dem Ort


Jetzt muß noch die Reihenfolge von Jahr und Seite getauscht werden, die in den Feldern date und howpublished stehen.
BibTeX_Beispiel$ vi meinalpha.bst

anpassen:

FUNCTION {misc}
{ output.bibitem
% format.authors output
format.authors *
" " *
title howpublished new.block.checkb
format.title output
% howpublished new.block.checka
% howpublished output

format.date output
howpublished output
new.block
note output
fin.entry
empty.misc.check
}


Die Zeile howpublished output wird nach unten verschoben, die Zeile howpublished new.block.checka wird auskommentiert, da sonst ein Punkt zwischen Jahr und Seite anstelle des gewünschten Kommas stehen würde. Das Ergebnis sieht jetzt so aus:
fertig formatierter Adreßbucheintrag


Zusammenfassung

Hier sind noch einmal alle Änderungen an der Stildatei auf einen Blick:
BibTeX_Beispiel$ diff /usr/local/texlive/2017basic/texmf-dist/bibtex/bst/base/alpha.bst meinalpha.bst 
714,715c714,716
< new.block
< format.btitle "title" output.check
---
> % new.block
> % format.btitle "title" output.check
> format.title "title" output.check
731a733
> volume output
753c755,757
< format.authors output
---
> % format.authors output
> format.authors *
> " " *
756,757d759
< howpublished new.block.checka
< howpublished output
758a761,762
> % howpublished new.block.checka
> howpublished output


LaTeX Version: TeX Live 2017
BibTeX Version: 0.99d
pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017)
TeXShop Version 3.92 (3.92)
macOS Sierra