Implementierung von „Title Case“ in Bibtex

Implementierung von „Title Case“ in Bibtex

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 .bstDatei ü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- biblatexStil (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 mitbiblatexbiblatex, 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 .bstDatei finden title "t" change.case$.

Die Regel besteht also darin, die Titel in der Datei in Groß- und Kleinschreibung anzugeben .bibund 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 .bibsollten 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.cin 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 \usepackageverwendet 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 .bstDatei 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 titlecapMakro auf angewendet title, bevor der Punkt angehängt und das Ergebnis ausgegeben wird. Der Aufruf von \titlecapim Makro schreibt den ersten Buchstaben jedes Wortes groß, mit Ausnahme der Wörter in der Ausschlussliste. Siehe Paketdokumentation unterhttp://ctan.org/pkg/titlecaps.

verwandte Informationen