Ich versuche seit geraumer Zeit, mir einen bibliography driver für Pakete zu definieren. Das mache ich mit biblatex mit biber als Backend. Im großen und ganzen bin ich mit dem Ergebnis, dass ihr unten sehen könnt, zufrieden. Was mir aber nicht gelingen will, ist, ein neues Feld maintainer zu definieren. Oder genauer: es ist definiert, weder biblatex noch biber beschweren sich, aber die Information landet nicht in der Bibliographie. Ich habe den Verdacht, dass ich noch eine passende source map definieren muss, aber ehrlich gesagt werde ich aus dem entsprechenden Teil der biblatex-Dokumentation nicht recht schlau, trotz einiger Beispiele, die dort gegeben sind.
Bonusfrage: wieso hat \DeclareFieldFormat[package]{subtitle}{\mkbibemph{#1}} keinen Effekt? Statt dessen wird das Format für title verwendet. \DeclareFieldFormat[package]{title}{{\packageformat#1}} funktioniert wunderbar. Offenbar wird subtitle einfach als Teil von title gesetzt, was gut und logisch ist. Dennoch hätte ich erwartet, dass die Formatierung sich ändern ließe.
Versuch es mal mit dem Befehl \DeclareDatamodelFields (WICHTIG: Funktioniert nur mit biber!). In der biblatex Anleitung steht dazu auf Seite 149 (v2.7a 14/07/2013):
The default data model is defined in
the core biblatex file blx-dm.def
[…]. […] In practice, changing the data
model means that you can define the
entrytypes and fields for your
datasources and validate your data
against the data model. Naturally,
this is not much use unless your style
supports any new entrytypes or fields
and it raises issues of portability
between styles […].
Um es kurz zu fassen, soweit ich es verstanden habe, kannst du damit einfach neue Felder und Eingangs-Typen definieren.
Der Rest ist – mehr oder weniger – einfach:
Die Datei blx-dm.def suchen,
herausfinden durch welchen Befehl z.B. author definiert wurde (da ich annehme, dass author und maintainer beide ähnliche Typen sind),
dieselben Einstellungen nehmen mit denen auch author definiert wurde, und damit in der eigenen benutzerdefinieten Datei biblatex-dm.cfg ein neues Feld (z.B. maintainer) definieren.
Noch einmal der Hinweis: Funktioniert nur mit biber! Außerdem gehört \DeclareDatamodelFields in die eigens-definierte Datei biblatex-dm.cfg. Außerdem habe ich noch den bibstring maintainer definiert, damit man Autor und Maintaier besser außeinanderhalten kann.
Zur Bonusfrage: Das Feld title und subtitle sind miteinander gekoppelt und werden durch den bibmacro-Befehl title gesetzt. In biblatex.def der Befehl title folgendermaßen definiert:
Das bedeutet: Zum einem werden title und subtitle von außen durch \printtext[title] formatiert. Wenn nun das Feld-Format „title“ als fett definiert wurde (durch \DeclareFieldFormat{title}{\textbf{#1}} ), werden sowohl title als auch subtitle automatisch fett.
Um nun zu verstehen, warum man subtitle nicht allein verändern kann, ist es wichtig den Befehl \printfield[Format]{Feld} zu verstehen.
Wenn nur das benötigte Argument angegeben wird (z.B. \printfield{Test}) und kein optionales, so wird das Format automatisch zum Inhalt des benötigten Arguments (\printfield{Test} = \printfield[Test]{Test}).
Hier kannst du einfach \DeclareFieldFormat{Test}{ \textbf{#1} } schreiben und Test wird Fett ausgegeben.
Wenn nun das optionale Argument angegeben wird, zählt dieses als Format. Wenn also \printfield[Versuch]{Test} steht, kannst du \DeclareFieldFormat{Test}{ \textbf{#1} } sooft ändern wie du willst, da das Feld ja durch „Versuch“ formatiert wird. Eine Formatänderung wäre hier durch \DeclareFieldFormat{Versuch}{ \textbf{#1} } erreichbar.
Und so ist es auch hier: \printfield[titlecase]{subtitle} bedeutet, dass das Feld subtitle durch „titlecase“ formatiert wird. Du kannst also das Format „subtitle“ sooft verändern wie du willst, das Feld subtitle wird ja durch das Format „titlecase“ formatiert. Willst du nun das subtitle Feld formatieren, änderst du entweder die „titlecase“ Formatierung (was auch zu einer Formatänderung beim Feld title führen würde, also unerwünscht ist) oder du löscht das [titlecase] bei subtitle:
Code, hier editierbar zum Übersetzen:
1
2
3
4
5
6
7
8
9
10
11
12
13
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield{subtitle}}% selbe wie \printfield[subtitle]{subtitle}
Dadurch kannst du das subtitle Feld durch \DeclareFieldFormat{subtitle}{ \emph{#1} } formatieren (wobei du beachten musst, dass es ja noch zusätzlich mit „title“ formatiert wird; „title“= fett, „subtitle“= kursiv =>Titelsubtitle )
PS. Da das Format „title“ sowohl title als auch subtitle formatiert, bedeutet das, dass du einfach \DeclareFieldFormat[package]{title}{\textsf{#1}} schreiben kannst und beide Felder haben keine Serifen.