PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Biblatex, Capitalization of Titles



kpboateng
13-03-2012, 14:54
Hallo,

ich habe folgendes Problem. Ich benutze mit mehreren Usern die gleichen Bibtex Datenbank, und verwalte diese mit dem Programm JabRef. Es sind vornehmlich englische "Article" in der Datenbank.

Nun wollen verschiedene User (verwenden Biblatex) unterschiedliche Zitierstile verwenden. Z.b. möchte einer der User, dass die Worte der Titel der "Article" alle mit einem Großbuchstaben beginnen. So ist es in verschiedenen wissenschaftlichen Zeitungen üblich. Andere möchten, dass jeweils nur der erste Buchstabe des gesamten Titels groß geschrieben wird.

Meine Frage nun: Wie müssen die Einträge in der Datenbank formatiert sein, damit beide Usergruppen über Befehle ihres Latex/Lyx-Dokuments die gewünschte Zitationsweise erhalten? Weiter frage ich mich, welche Befehle, dass wohl sein könnten?

Vielleicht hat jemand von euch einen Hinweis.

Festus
13-03-2012, 19:00
Ohne genau zu wissen ob das so funktioniert oder nicht:

Es gibt in BibLaTeX das Makro \MakeSentenceCase*{Text}, das Text im Sentence-Stil der benutzten Sprache setzt. Man könnte jetzt evtl in der Bib-Datei alle Titel folgendermaßen aufbauen:


\MakeSentenceCase*{This is a Title with Exactly one {Proper Name} in it}

Bei normaler Benutzung wird nur alles, was in den geschweiften Klammern steht so gelassen wie es ist. Ergibt: "This is a title with exactly one Proper Name in it".

Für die Leute, die alles groß haben wollen, müsste man dann in der TEX Datei das Makro umdefinieren, und da weiß ich nich genau, wie das elegant geht. Ich weiß gar nicht, ob es in LaTeX ein Kommando á la "lass alles wie es ist" gibt. Falls man das irgendwie hinkriegt, dass \MakeSentenceCase*{} mit einer kleiner Umdefinition ignoriert wird, sollte diese Methode funktionieren.

Aber vielleicht hat ja jemand noch 'ne viel bessere Idee.

sensemann
14-03-2012, 09:16
Du kannst die Formatierung bestimmter Felder über \DeclareFieldFormat beeinflussen. In deinem Fall müsste das, ohne Gewähr und in der Annahme, das das obige Makro funktioniert, dann etwa so aussehen:



\DeclareFieldFormat[article]{title}{\MakeSentenceCase{#1}}

Damit müsste das erste Wort mit Großbuchstaben, die andere klein erscheinen.
Bin mir gerade nicht sicher, ob man auch titlecase nehmen kann, jedenfalls lohnt ein Blick unter http://tex.stackexchange.com/questions/20335/proper-casing-in-citation-bibliography-titles-using-biblatex-biber

Festus
14-03-2012, 09:25
Du kannst die Formatierung bestimmter Felder über \DeclareFieldFormat beeinflussen. In deinem Fall müsste das, ohne Gewähr und in der Annahme, das das obige Makro funktioniert, dann etwa so aussehen:



\DeclareFieldFormat[article]{title}{\MakeSentenceCase{#1}}

Damit müsste das erste Wort mit Großbuchstaben, die andere klein erscheinen.
Bin mir gerade nicht sicher, ob man auch titlecase nehmen kann, jedenfalls lohnt ein Blick unter http://tex.stackexchange.com/questions/20335/proper-casing-in-citation-bibliography-titles-using-biblatex-biber

Diese Lösung ist natürlich noch eleganter. Dann musst du nur noch daran denken, alle Titel-Wörter die trotzdem groß geschrieben bleiben müssen (weil Eigenname) in geschweifte Klammern zu setzen. Für das Bsp. oben hieße das, dass alle deine Titeleinträge in der Bib-Datei folgendem Schema folgen müssen.


This is a Title with Exactly one {Proper Name} in it

Wer großgeschriebene Titel haben will lässt alles wie es ist. Wer sentence case braucht nimmt die Codezeile von sensemann mit in die Tex-Datei auf.

Deacon
08-04-2018, 18:41
Guten Tag,

bei mir funktioniert der Befehl

\DeclareFieldFormat[article]{title}{\MakeSentenceCase{#1}}
leider nicht. Es funktioniert nur, wenn ich anstatt "title" im entsprechenden Feld "titlecase" einfüge. Dann habe ich aber das Problem, dass nicht nur der Titel der Referenz im Sentence Case ausgegeben wird, sondern auch das Journal. (Dieses Problem wurde auch hier diskutiert: https://tex.stackexchange.com/questions/22980/sentence-case-for-titles-in-biblatex; ich verstehe aber nicht die Lösung, die dort vorgeschlagen wird.)

Ich verwende MiKTeX 2.9, Biblatex 3.4, Biber 2.5.

Leider bekomme ich bei Nutzung von "title" nur eine nichtssagende Fehlermeldung. Hat jemand eine Idee, warum das bei mir nicht funktioniert?

Minimalbeispiel:


\documentclass[paper=A4,BCOR=8mm,DIV=10,headsepline, twoside=on]{scrbook}
\usepackage{scrlayer-scrpage}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}

\usepackage[backend=biber, natbib=true, minbibnames=30, maxbibnames=99, mincitenames=1, maxcitenames=2, style=numeric, eprint=false, isbn=false, url=false, doi=false, date=year, giveninits=true, language=autobib, defernumbers=true]{biblatex} % bibliography
\addbibresource{testref.bib}

\DeclareFieldFormat[article]{title}{\MakeSentenceCase{#1}}


\begin{document}
\nocite{*}


\printbibheading[heading=bibintoc]
\printbibliography[heading=subbibliography, title={General references}, resetnumbers=false]

\end{document}


Meine testref.bib Datei sieht so aus:


@Article{Arogeti2010,
author = {S. A. Arogeti and D. Wang and C. B. Low},
title = {Mode Identification of Hybrid Systems in the Presence of Fault},
journal = {IEEE Transactions on Industrial Electronics},
year = {2010},
volume = {57},
number = {4},
month = {April},
pages = {1452-1467},
issn = {0278-0046},
doi = {10.1109/TIE.2009.2030213},
}


Im Übrigen verstehe ich nicht, warum nicht automatisch Sentence Case für die Artikel im Literaturverzeichnis verwendet wird. In der Biblatex-Dokumentation steht nämlich folgendes:

By default, converting to sentence case is enabled for the following language identifiers:
american, british, canadian, english, australian, newzealand as well as the
aliases USenglish and UKenglish. Use \DeclareCaseLangs to extend or change this
list.

Schönen Gruß,

Sebastian