Problem mit Biber Sourcemapping

Problem mit Biber Sourcemapping

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>dategeneriert Biber/Biblatex automatisch die Felder <datetype>year, <datetype>monthund , 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 .bibDatei. Insbesondere geschieht dies vor dem Schritt, in dem Biber Datumsfelder in ihre Komponenten aufteilt.

Wenn also \DeclareStyleSourcemapausgeführt wird, ist das Datumsfeld noch vorhanden eventdate(wie in der .bibDatei angegeben) eventyearund Freunde sind noch nicht verfügbar.

verwandte Informationen