部分 BibLatex 条目

部分 BibLatex 条目

我有一个 bib 文件,其中包含在线来源。此 bib 文件用于多篇在不同时间编写的文档,并引用了此在线来源。编译是使用 Biber 和 BibLatex 完成的。

现在我必须调整源上的日期以正确反映我访问此资源的时间。但是当我在 bib 文件中执行此操作时,我的所有文档现在都有错误的日期。

我的目标是设置每个文档的访问日期,但从我的 bib 文件中获取所有其他数据。有没有办法覆盖每个文档的条目选项?

答案1

当我读到问题标题时,我立即想到crossrefBibtex crossref 字段用于什么?, 哪个@samcarter_is_at_topanswers.xyz已在评论中链接。但对于您的用例,我可能更喜欢 Biber 源映射,以便从文档中轻松覆盖字段值.tex

将文件中的值.bib(2020-02-02) 与源映射设置的值(输出中显示的值)进行比较 (2023-02-20)。请注意,仅当条目urldate中存在a 时,源映射才会起作用.bib(它不会将urldates 添加到尚无 s 的条目中 - 可以这样做,但可能有点过头了)。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear]{biblatex}

\DeclareSourcemap{
  \maps{
    \map[overwrite=true]{
      \step[fieldsource=urldate, final]
      \step[fieldset=urldate,  fieldvalue={2023-02-20}]
    }
  }
}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
  url       = {https://example.edu/~elk/bronto},
  urldate   = {2020-02-02},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,elk}

\printbibliography
\end{document}

Elk, Anne (1972)。《雷龙理论》。伦敦:Monthy & Co. 网址:https://example.edu/~elk/bronto(访问日期:2023 年 2 月 20 日)。

此处显示的源图适用于所有条目。如果您需要为不同的条目提供不同的日期,您可以按 进行筛选entrykey,但这当然可能很快就会变得混乱

\DeclareSourcemap{
  \maps{
    \map[overwrite=true]{
      \step[fieldsource=entrykey, match=\regexp{\Aelk\Z}, final]
      \step[fieldsource=urldate, final]
      \step[fieldset=urldate,  fieldvalue={2023-02-20}]
    }
  }
}

另请比较biblatex:从特定条目中删除字段

相关内容