biblatex \printfield 不打印任何内容

biblatex \printfield 不打印任何内容

请考虑以下示例:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage[american]{babel}
\usepackage[backend=biber]{biblatex}


\DeclareBibliographyDriver{unpublished}{%
  \printtext{%
    \printfield{location}\addcomma\space%
    \printfield{year}\addcomma\space%
    \printfield{month}\addcomma\space%
    \printfield{day}}%
}

\addbibresource{my.bib}


\begin{document}

\fullcite{something}

\end{document}

以及相应的 bib 文件:

@unpublished{something,
  author       = {Me C. and You K.},
  title        = {Some Awesome Work},
  eventtitle   = {Workshop on Awesome Stuff},
  location     = {Some County in the U.S.},
  year         = {2018},
  month        = {9},
  day          = {7},
  howpublished = {http://www.someurl.com}
}

编译上述内容得到“,2018 年,9 月,”。

事实上,该字段day不在biblatex 手册。但是,location是可选字段的列表,并且仍然没有显示。

是否有任何规则来控制此行为,或者这是一个错误?此外,我如何显示如上所示的字段day

我正在使用 2017 mactex 发行版的最新更新。

答案1

这里有两个问题。

正如解释的那样无法在 Biblatex 中调用“出版商”或“位置”在 biblatex 条目上添加位置字段你确实需要

\printlist{location}

而不是\printfield{location}.biblatex的字段实际上有三种形式 (i) 字段、(ii) 列表和 (iii) 名称列表,并且您必须对每种形式使用正确的命令(\printfield\printlist\printnames分别)。

当天的问题有两个方面。day不是有效的输入字段。虽然yearmonth保留以保证向后兼容,day但不是。因此,如果您想要精确到天的日期,则必须使用文件date中的字段.bib

date = {2018-09-07},

而不是year = {2018}, month = {9}, day = {7}(这是错误的,只会出现year+month日期,day被明确忽略)。

但理想情况下,您也不应该使用\printfield{month}\printfield{day}(我还认为应该避免\printfield{year},但可能有合法的用途),而应该尝试使用\printdate将以正确的日期格式打印活动本地化的日期。

当你编写自己的参考书目驱动程序时,你还应该考虑使用biblatex标点符号跟踪器。§4.11.7使用标点符号追踪器手册biblatex显然是要从这里开始。通常,在驱动程序中使用命令时,您会希望将命令包装\addcomma\space到 中。\setunit

在 MWE 中,外部\printtext没有任何用处,所以我会将其删除,但在实际文档中可能会有所不同。

相关内容