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.
Hier ist das Beispiel:
\documentclass{article}
\usepackage{filecontents}
\usepackage[backend=biber,style=alphabetic]{biblatex}
\usepackage[ngerman]{babel}
\begin{filecontents*}{\jobname.bib}
@package{chngcntr,
title = {chngcntr} ,
subtitle = {Changing counter properties} ,
author = {Peter Wilson} ,
maintainer = {Will Robertson} ,
date = {2009-09-02} ,
version = {1.0a} ,
url = {http://mirror.ctan.org/macros/latex/contrib/chngcntr}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\DeclareBibliographyDriver{package}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\addcomma\addspace}%
\usebibmacro{maintainer}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{maintitle+title}%
\printfield{version}%
\setunit{\addcomma\addspace}%
\usebibmacro{date}%
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\usebibmacro{finentry}%
}
\NewBibliographyString{maintainer}
\DefineBibliographyStrings{ngerman}{%
maintainer = {Die Person die gerade daran arbeitet}
}
\newbibmacro*{maintainer}{%
\printtext{%
\ifnameundef{maintainer}
{}
{\bibstring{maintainer}%
\setunit{\addcolon\addspace}%
\printnames{maintainer}}%
}}
\DeclareNameAlias{maintainer}{default}
\begin{filecontents*}{biblatex-dm.cfg}
\ProvidesFile{biblatex-dm.cfg}
\DeclareDatamodelFields[type=list, datatype=name]{maintainer}
\endinput
\end{filecontents*}
\newcommand*\packageformat{\sffamily}
\begin{document}
See~\cite{chngcntr}
\printbibliography
\end{document}
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.
![alt text][1]
---
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:
\newbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit}%
\printfield{titleaddon}}
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`:
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield{subtitle}}% selbe wie \printfield[subtitle]{subtitle}
\newunit}%
\printfield{titleaddon}}
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* =>**Titel** ***subtitle*** )
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.
[1]: http://texwelt.de/wissen/upfiles/Hochladen_7.jpg