请考虑以下示例:
\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
不是有效的输入字段。虽然year
和month
保留以保证向后兼容,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
没有任何用处,所以我会将其删除,但在实际文档中可能会有所不同。