Wie wird „Groß- und Kleinschreibung“ in Bibtex definiert? Welches ist die Liste der Wörternichtgroßgeschrieben werden und in welcher Datei ist es definiert? Kann man es ändern? Ich habe die .bst
Datei überprüft, aber anscheinend ist es an eine Funktion delegiert change.case
, deren Definition ich nicht finden kann.
Antwort1
Soweit ich weiß, gibt es keinen BibTeX- biblatex
Stil (oder irgendeinen anderen), der ein Makro/eine Funktion zum Konvertieren in Groß- und Kleinschreibung implementiert (es gabeine Frage vor einiger Zeit, wie man dies erreichen mitbiblatex
biblatex
, die Antwort zeigt einen Weg, wie man mit einem solchen Makro in Biber loslegen kann ).
Es gibt jedoch eine Funktion, um Titel in Groß- und Kleinschreibung umzuwandeln (erster Buchstabe des ersten Wortes groß, Rest klein). Es hängt vom Stil ab, ob diese Funktion verwendet wird oder nicht. Wenn Ihr Stil Groß- und Kleinschreibung verwendet, werden Sie wahrscheinlich eine Zeile wie diese in der .bst
Datei finden title "t" change.case$
.
Die Regel besteht also darin, die Titel in der Datei in Groß- und Kleinschreibung anzugeben .bib
und sie vom Bibliografiestil bei Bedarf in Groß- und Kleinschreibung umwandeln zu lassen (vgl.Welche Groß- und Kleinschreibung muss beim Speichern von Titeln in der Bibliografiedatenbank verwendet werden?).
Generell .bib
sollten Titel in Dateien immer in Groß- und Kleinschreibung angegeben werden, wobei zusätzlich Wörter, diemüssen immer großgeschrieben werdenin bestimmter Weise verwendet werden (Namen, Akronyme, Formeln usw.) werden in geschweifte Klammern eingeschlossen {}
.
Beispiel
title = {From {Brouwer} to {Hilbert}: {The} Debate on the Foundations of Mathematics in the 1920s}
title = {{NASA} Ends Unmanned Launchings in {Florida}}
Siehe auchBibTeX verliert Großbuchstaben beim Erstellen einer .bbl-Datei, besondersAlexis' Antwort.
Antwort2
Die change.case$
eingebaute Funktion wird im Quelltext ( texk/bibtex-x/bibtex-4.c
in TeX Live) beschrieben:
* The |built_in| function change.case$ pops the top two (string)
* literals; it changes the case of the second according to the
* specifications of the first, as follows. (Note: The word `letters' in
* the next sentence refers only to those at brace-level~0, the top-most
* brace level; no other characters are changed, except perhaps for
* special characters, described shortly.) If the first literal is the
* string t, it converts to lower case all letters except the very
* first character in the string, which it leaves alone, and except the
* first character following any |colon| and then nonnull |white_space|,
* which it also leaves alone; if it's the string l, it converts all
* letters to lower case; if it's the string u, it converts all
* letters to upper case; and if it's anything else, it complains and
* does no conversion. It then pushes this resulting string. If either
* type is incorrect, it complains and pushes the null string; however,
* if both types are correct but the specification string (i.e., the
* first string) isn't one of the legal ones, it merely pushes the second
* back onto the stack, after complaining. (Another note: It ignores
* case differences in the specification string; for example, the strings
* t and T are equivalent for the purposes of this |built_in|
* function.)
Das ist komplex und ich habe das meiste davon nicht verstanden, aber in der Praxis muss man sich merken, dass selbst nach Satzzeichen wie ".", "!" oder "?" die Buchstaben standardmäßig in Kleinbuchstaben umgewandelt werden... außer nach ":" (Doppelpunkt). In der Tat,
title = {Test! Test? Test: Test. Test, Test}
in einer .bib-Datei ergibt:
\newblock Test! test? test: Test. test, test.
Diese einzige Ausnahme ist ziemlich seltsam und unerwartet.
Antwort3
Dies kann folgendermaßen erfolgen, wenn Sie bereit sind, eine benutzerdefinierte .bst-Datei zu erstellen. In Ihrem Dokument benötigen Sie die folgenden Zeilen:
\usepackage{titlecaps}
\Addlcwords{the of into}
wobei das Paket \usepackage
verwendet wird, das das Makro enthält. Das Makro stellt eine Liste von Wörtern bereit, die klein geschrieben und nicht großgeschrieben werden sollten.titlecaps
\titlecap
\Addlcwords
In Ihrer .bst
Datei müssen Sie ein neues Makro hinzufügen:
FUNCTION {titlecap}
{ duplicate$ empty$
{ pop$ "" }
{ "\titlecap{" swap$ * "}" * }
if$
}
Sie müssen es nur noch für die verschiedenen Dokumentstile verwenden, die Sie formatieren. Eine Zeile in Ihrem Stil könnte beispielsweise so lauten:
title ". " * output
Das druckt den Titel, fügt einen Punkt hinzu und gibt das Ergebnis aus. Nun können Sie das folgendermaßen bearbeiten:
title titlecap ". " * output
Dadurch wird zuerst das titlecap
Makro auf angewendet title
, bevor der Punkt angehängt und das Ergebnis ausgegeben wird. Der Aufruf von \titlecap
im Makro schreibt den ersten Buchstaben jedes Wortes groß, mit Ausnahme der Wörter in der Ausschlussliste. Siehe Paketdokumentation unterhttp://ctan.org/pkg/titlecaps.