# biblatex \printfield prints nothing

Consider the following example:

\documentclass{article}

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

\DeclareBibliographyDriver{unpublished}{%
\printtext{%
\printfield{day}}%
}

\begin{document}

\fullcite{something}

\end{document}


and the respective bib file:

@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}
}


Compiling the above gives ", 2018, Sept.,".

Indeed the field day is not in the list of available fields given on page 12 of the biblatex manual. However, location is the list of optional fields, and is still not showing.

Are there any rules that govern this behavior, or is this a bug? Moreover, how can I display fields such as day above?

I am using the latest update of the 2017 mactex distribution.

• location is a list, so you have to use \printlist{location}. See also tex.stackexchange.com/q/122095/35864 and tex.stackexchange.com/q/430833/35864 – moewe Sep 7 '18 at 20:41
• As for day, you should usually not have to write \printfield{day} or \printfield{month}. Instead you should use \printdate and customise the date format accordingly (if necessary). – moewe Sep 7 '18 at 20:44
• In the MWE the outer \printtext is unnecessary (though it could be more useful if it applied additional formatting). You should also consider using the punctuation tracker and \setunit{\addcomma\space} instead of putting \addcomma\space directly. Have a look at §4.11.7 Using the Punctuation Tracker of the manual. – moewe Sep 7 '18 at 20:46
• Actually the fact that you can not show day is not a problem of your code, it is a problem of your input. day is not a valid input field. year and month are supported for backwards compatibility reasons, but day-precision dates must be given in the date field in the form YYYY-MM-DD. Things should work when you say date = {2018-09-07}, in the bib file. – moewe Sep 7 '18 at 20:54
• @moewe I followed your advice on the date format, and also renewed the command \newunitpunct. All this works well, but I am having trouble with \newblockpunct and \finentrypunct, as \newblock and \finentry don't print anything. Any suggestions? – dow Sep 7 '18 at 21:19

There are two issues at hand here.

As explained in Unable to Call "Publisher" or "Location" in Biblatex and adding location field on biblatex entry you actually need

\printlist{location}


instead of \printfield{location}. biblatex's fields actually come in three flavours (i) field, (ii) list and (iii) name list and you have to use the right command (\printfield, \printlist and \printnames respectively) for each flavour.

The day issue is two-fold. day is not a valid input field. While year and month are retained for backwards compatibility, day is not. So if you want day-precision dates, you must use the date field in the .bib file

date = {2018-09-07},


instead of year = {2018}, month = {9}, day = {7} (which is wrong and will only come out with a year+month date, day is explicitly ignored).

But ideally you should also not use \printfield{month} or \printfield{day} (I would also argue that one should avoid \printfield{year} as well, but there may be legitimate uses for that), instead you should try to use \printdate which will print the date in the correct date format for the active localisation.

When you write your own bibliography drivers you should also look into using biblatex's punctuation tracker. §4.11.7 Using the Punctuation Tracker of the biblatex manual would be the obvious place to start. Normally you will want to wrap commands like \addcomma\space into a \setunit when they are used in a driver.

In the MWE the outer \printtext does nothing useful, so I would remove it, but that can be different in your actual document.