Problema com mapeamento de origem do Biber

Problema com mapeamento de origem do Biber

Abaixo de um 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}

O mwe funciona bem.

Pelo que entendi, if <datetype>dateestá definido, biber/biblatex gera automaticamente os campos <datetype>year, <datetype>monthe <datetype>day.

Portanto, o código de mapeamento de origem também deve poder ser escrito da seguinte maneira.

\DeclareStyleSourcemap{
  \maps{
    \map{
      \pertype{customa}
      \step[fieldsource=eventyear]
      \step[fieldset=sortyear, origfieldval]
    }
  }
}

Mas esta segunda solução não funciona. Por que? Qual é o erro? Obrigado.

Responder1

A etapa de mapeamento de origem, na qual Biber aplica suas alterações aos dados, acontece logo no início do processamento do .bibarquivo. Em particular, isso acontece antes da etapa em que o Biber divide os campos de data em seus componentes.

Portanto, quando \DeclareStyleSourcemapé executado, o campo de data ainda está eventdate(conforme fornecido no .bibarquivo) e eventyearos amigos ainda não estão disponíveis.

informação relacionada