![Problem mit Biber Sourcemapping](https://rvso.com/image/475745/Problem%20mit%20Biber%20Sourcemapping.png)
Unten ein MWE:
\begin{filecontents}[overwrite]{\jobname.bib}
@customa{a,
author = {Author},
eventdate = {1000-01-01},
title = {Title},
journaltitle = {Journaltitle},
date = {3000},
}
@customa{b,
author = {Author},
eventdate = {2000-01-01},
title = {Title},
journaltitle = {Journaltitle},
date = {1000},
}
@customa{c,
author = {Author},
eventdate = {3000-01-01},
title = {Title},
journaltitle = {Journaltitle},
date = {2000},
}
@article{article,
author = {Author},
title = {Title},
journaltitle = {Journaltitle},
date = {2000},
}
\end{filecontents}
\documentclass{article}
\usepackage[style=authortitle]{biblatex}
\addbibresource{\jobname.bib}
\DeclareStyleSourcemap{
\maps{
\map{
\pertype{customa}
\step[fieldsource=eventdate, match=\regexp{\A(\d+)}]
\step[fieldset=sortyear, fieldvalue={$1}]
}
}
}
\DeclareBibliographyDriver{customa}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printnames{author}%
\newunit
\printeventdate
\newunit
\usebibmacro{title}%
\newunit\newblock
\bibstring{in}%
\printunit{\intitlepunct}
\usebibmacro{journal+issuetitle}%
\usebibmacro{finentry}}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Das MWE funktioniert einwandfrei.
So wie ich es verstehe, <datetype>date
generiert Biber/Biblatex automatisch die Felder <datetype>year
, <datetype>month
und , wenn definiert ist <datetype>day
.
Daher sollte der Sourcemapping-Code auch folgendermaßen geschrieben werden können.
\DeclareStyleSourcemap{
\maps{
\map{
\pertype{customa}
\step[fieldsource=eventyear]
\step[fieldset=sortyear, origfieldval]
}
}
}
Aber diese zweite Lösung funktioniert nicht. Warum? Was ist der Fehler? Danke.
Antwort1
Der Sourcemapping-Schritt, in dem Biber Ihre Änderungen auf die Daten anwendet, erfolgt sehr früh während der Verarbeitung der .bib
Datei. Insbesondere geschieht dies vor dem Schritt, in dem Biber Datumsfelder in ihre Komponenten aufteilt.
Wenn also \DeclareStyleSourcemap
ausgeführt wird, ist das Datumsfeld noch vorhanden eventdate
(wie in der .bib
Datei angegeben) eventyear
und Freunde sind noch nicht verfügbar.