为什么不为空的或非空的 biblatex \DeclareSourcemap 会删除我的参考书目访问日期条目?

为什么不为空的或非空的 biblatex \DeclareSourcemap 会删除我的参考书目访问日期条目?

最近我发现我的Access Date参考书目条目丢失了。在搜索了我的整个代码后,我发现这是由于 造成的\DeclareSourcemap

在下一个使用空的构建示例中\DeclareSourcemap{}Access Date参考书目条目将被删除:

在此处输入图片描述

但是如果你删除该行\DeclareSourcemap{},那么该Access Date字段就会正确显示:

在此处输入图片描述

如何阻止\DeclareSourcemap{}命令删除我的Access Date参考书目条目?

我做什么都没关系。例如,如果我声明一个空的\DeclareSourcemap,如下所示:

\DeclareSourcemap{}

我的Access Date书目将被删除。

如果我让我的原创\DeclareSourcemap

\DeclareSourcemap
{
  \maps[datatype=bibtex]
  {
    \map{
      \step[fieldset=pagetotal, null]
    }
    \map
    {
      \pertype{inproceedings}
      \step[fieldset=venue, null]
      \step[fieldset=eventdate, null]
      \step[fieldset=eventtitle, null]
      \step[fieldset=isbn, null]
      \step[fieldset=volume, null]
    }
  }
}

我的Access Date书目条目仍然被删除。

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@mvbook{assis08,
    author = {Machado de Assis},
    title = {Obra completa em quatro volumes},
    year = {2008},
    editor = {Aluizio Leite and Ana Lima Cecilio and Heloisa Jahn},
    editortype = {organizer},
    edition = {2},
    volumes = {4},
    publisher = {Nova Fronteira},
    location = {Rio de Janeiro},
    series = {Biblioteca luso-brasileira. Série brasileira brasileira brasiled},
    urlaccessdate = {2018-02-17},
}
\end{filecontents*}
\PassOptionsToPackage{brazil,main=english,spanish,french}{babel}
\documentclass[12pt,a4paper,english]{abntex2}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage[style=abnt,repeatfields=true,backend=biber,backref=true]{biblatex}
\pdfstringdefDisableCommands{\let\uppercase\relax}
\addbibresource{\jobname.bib}

\DeclareSourcemap{} % <-- Remove this and the `Access Date` will show up correctly

\begin{document}
Citing \cite{assis08}. \printbibliography
\end{document}

答案1

您正在运行的版本已过时,biblatex不允许使用多个\DeclareSourcemaps。此限制已在 3.11 版(2018-02-20)中解除biblatex,请参阅https://github.com/plk/biblatex/issues/227

urlaccessdate不是biblatexURL 访问日期的标准字段。标准字段是urldate。为了向后兼容abntex2cite biblatex-abnt重新映射urlaccessdate和其他字段到biblatex中的等价字段\DeclareSourcemap

在您的过时版本中biblatex只能有一个源映射,并且序言中的文档级源映射将覆盖样式级源映射。这就是为什么\DeclareStyleSourcemap可以使用样式而不会干扰用户级映射的原因。

如果你更新,biblatex一切都会按预期工作。biblatex-abnt应该使用DeclareStyleSourcemap,但是,请参阅https://github.com/abntex/biblatex-abnt/pull/56

作为临时解决方法,您可以abnt.bbxhttps://github.com/abntex/biblatex-abnt/pull/56或者将您的源图和样式源图合并到

\DeclareSourcemap{%% >>>2
  % This maps some fields used in abntex2cite to biblatex fields.
  \maps[datatype=bibtex]{%
    \map{%
      \step[fieldsource=conference-number,fieldtarget=number]%
      \step[fieldsource=conference-year,fieldtarget=eventdate]%
      \step[fieldsource=conference-location,fieldtarget=venue]%
      \step[fieldsource=conference-number,fieldtarget=number]%
      \step[fieldsource=org-short,fieldtarget=shortauthor]%
      \step[fieldsource=urlaccessdate,fieldtarget=urldate]%
      \step[fieldsource=year-presented,fieldtarget=eventyear]%
      \step[fieldsource=furtherresp,fieldtarget=titleaddon]%
      \step[typesource=journalpart,typetarget=supperiodical]%
    }%
    \map[overwrite=false]{%
          \step[fieldsource=reprinted-from, final]%
          \step[fieldset=related, origfieldval]%
    }%
    \map[overwrite=false]{%
          \step[fieldsource=reprinted-text, final]%
          \step[fieldset=relatedtype, fieldvalue={reprintfrom}]%
    }%
    \map{%
          \pertype{patent}% Use the organization as sourcekey for patents
          \step[fieldsource=organization, final]%
          \step[fieldset=sortkey, origfieldval]%
    }%
    \map[overwrite=false]{%
      \pertype{thesis}%
      \pertype{phdthesis}%
      \pertype{mastersthesis}%
      \pertype{monography}%
      \step[fieldset=bookpagination, fieldvalue={sheet}]%
    }%
    \map{
      \step[fieldset=pagetotal, null]
    }
    \map
    {
      \pertype{inproceedings}
      \step[fieldset=venue, null]
      \step[fieldset=eventdate, null]
      \step[fieldset=eventtitle, null]
      \step[fieldset=isbn, null]
      \step[fieldset=volume, null]
    }
  }%
}% <<<2

在您的文档中。

相关内容