Nach der Frage
Welche Groß- und Kleinschreibung muss beim Speichern von Titeln in der Bibliografiedatenbank verwendet werden?Ich speichere Titel in Groß- und Kleinschreibung in der BIB-Datei und {Schütze} Eigennamen usw., was ich biblatex-chicago
bisher verwendet habe und bei dem ich auf keine Probleme gestoßen bin, da Chicago Groß- und Kleinschreibung ohnehin vorschreibt.
Aber jetzt habe ich Probleme biblatex-apa
mit Anführungszeichen und Hervorhebungen – APA bevorzugt Groß- und Kleinschreibung. Da \mkbibquote{}
und \mkbibemph{}
bereits die Groß- und Kleinschreibung des Inhalts schützen, wird die Groß- und Kleinschreibung aufgehoben, wenn man sie in zusätzliche Klammern setzt {\mkbibquote{}}
. Aber dann habe ich eine Reihe von Problemen.
Betrachten Sie dieses MWE:
% !TEX TS-program = xelatexmk
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{bib.bib}
@book{Author2000,
Title = {This is a Title with Something in {\mkbibquote{Quotes that Should Be Downcased}}},
Author = {Author, Anton},
Date = {1990},
}
@book{Author2000a,
Title = {{\mkbibquote{But if the Title starts in Quotes}} It Turns into All Caps},
Author = {Author, Anton},
Date = {2000},
}
@book{Author2000b,
Title = {A Discussion of the Book {\mkbibemph{{My} New Book}}: It Should Keep the First Word Capitalized},
Author = {Author, Anton},
Date = {2010},
}
@book{Author2000c,
Title = {{\mkbibemph{And if the Title starts with Emphasis}} It also Turns into All Caps and Doesn't Apply the Emphasis},
Author = {Author, Anton},
Date = {2001},
}
@book{Author2000d,
Title = {And If {\mkbibquote{an Acronym {{{AAEE}}} is Included}}, How to Preserve it?},
Author = {Author, Anton},
Date = {2011},
}
\end{filecontents}
\addbibresource{bib.bib}
\begin{document}
\autocites{Author2000,Author2000a,Author2000b,Author2000c,Author2000d}
\printbibliography % print the bibliography
\end{document}
Die Ausgabe ist folgende:
Es gibt zahlreiche Probleme. Wenn mkbibquote
oder mkbibemph
am Anfang der Zeichenfolge ausgegeben werden, wird die gesamte Zeichenfolge in GROSSBUCHSTABEN umgewandelt. Außerdem habe ich keine Ahnung, wie ich bestimmte Wörter in einer Zeichenfolge schützen kann, die bereits von mkbibquote
oder umschlossen ist mkbibemph
.
Antwort1
Die Satzschreibfunktion für biblatex
ist in LaTeX implementiert. Die Satzschreibfunktion von BibTeX hingegen ist direkt in BibTeX implementiert. Das bedeutet, dass es einige subtile und nicht so subtile Unterschiede zwischen den beiden gibt. Insbesondere biblatex
versucht die Satzschreibfunktion von , Makros nach Möglichkeit zu erweitern.
Das Hauptproblem hierbei ist, dass geschweifte Klammern mit Bedeutung überladen sind: In LaTeX dienen sie als Argumenttrennzeichen oder zur Gruppierung; in BibTeX schützen sie Zeichenfolgen vor der Änderung der Groß- und Kleinschreibung und markieren LaTeX-Makros für Nicht-ASCII-Zeichen wieä -> {\"a}
(vgl.Wie schreibt man „ä“ und andere Umlaute und Akzentbuchstaben im Literaturverzeichnis?). Die unterschiedlichen Bedeutungen kollidieren von Zeit zu Zeit. In diesen Fällen sind Workarounds erforderlich, um das Problem zu lösen.
Siehe auch die jüngstenhttps://github.com/plk/biblatex/issues/871und verknüpfte Themen sowie die Dokumentationsergänzungenhttps://github.com/plk/biblatex/commit/863fea969a9f1d37d7f944265cb276cf18293334Undhttps://github.com/plk/biblatex/commit/a291e72a6c8ba2b896eb3f53ada6cc938c2cfa86.
Für die Anwendungsfälle, die Sie im MWE zeigen, kann ich die folgende Problemumgehung anbieten. Die Idee besteht darin, die Verwendung von Klammern durch die Verwendung von abgegrenzten Argumenten (eine Art \foo <argument>\endfoo
Syntax) zu umgehen. Abgegrenzte Argumente bringen ihre eigenen Probleme mit sich, wenn sie verschachtelt sind, aber sie funktionieren im MWE gut genug.
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\protected\def\horriblemkbibquote#1\endhorriblemkbibquote{\mkbibquote{#1}}
\let\endhorriblemkbibquote\relax
\protected\def\horriblemkbibemph#1\endhorriblemkbibemph{\mkbibemph{#1}}
\let\endhorriblemkbibemph\relax
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Author2000,
title = {This is a Title with Something in {\mkbibquote{Quotes that Should Be Downcased}}},
author = {Author, Anton},
date = {1990},
}
@book{Author2000a,
title = {\horriblemkbibquote {But} if the Title starts in Quotes\endhorriblemkbibquote{} It Turns into All Caps},
author = {Author, Anton},
date = {2000},
}
@book{Author2000b,
title = {A Discussion of the Book \horriblemkbibemph{My} New Book\endhorriblemkbibemph{}: It Should Keep the First Word Capitalized},
author = {Author, Anton},
date = {2010},
}
@book{Author2000c,
title = {\horriblemkbibemph {And} if the Title starts with Emphasis\endhorriblemkbibemph{} It also Turns into All Caps and Doesn't Apply the Emphasis},
author = {Author, Anton},
date = {2001},
}
@book{Author2000d,
title = {And If \horriblemkbibquote an Acronym {AAEE} is Included\endhorriblemkbibquote{}, How to Preserve it?},
author = {Author, Anton},
date = {2011},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocites{Author2000,Author2000a,Author2000b,Author2000c,Author2000d}
\printbibliography % print the bibliography
\end{document}
Auf lange Sicht scheint mir die wünschenswerte Lösung die Implementierung einer neuen Funktion zur Änderung der Groß- und Kleinschreibung zu sein, die ein anderes Markup zur Angabe der geschützten Zeichenfolgen verwendet, sodass geschweifte Klammern nicht mehr damit kollidieren.
Die Funktion zur Änderung der Groß- und Kleinschreibung von BibTeX weist ähnliche Probleme auf. Sie schreibt Wörter am Anfang der Zeichenfolge nicht groß, sodass sie nicht unter dem GROSSBUCHSTABEN-Problem leidet, aber die beiden anderen Probleme mit dem Schützen innerhalb des Schutzes sind ebenfalls vorhanden.