According to section 2.2.2 of the biblatex
documentation, the volume
field is intended for
"[t]he volume of a multi-volume book or a periodical" (note the missing plural form!), while the volumes
field should be used for "[t]he total number of volumes of a multi-volume work". If you want to cite some, but not all volumes of a multi-volume work, the correct way seems to be to use multiple bibliography entries (one for each volume, and possibly one for the work as a whole).
EDIT: Inspired by Willie Wong's comment: You could only include the multi-volume work as a whole in the bibliography and cite single volumes in the text using the \volcite
command; its syntax is \volcite[prenote]{volume}[page]{key}
. See section 3.6.6 of the documentation for details.
EDIT2: I've managed to create a somewhat hacky solution. For every bibliography entry that actually represents several volumes of a multi-volume work, you have to add the execute
field - and within this field, some tailor-made TeX code. Here's a working example:
EDIT3: pluton: Now that you mention it ... surely. I've replaced the execute
stuff with a simple test using \iffieldnum
(see p. Section 4.6.2 of the biblatex
documentation for details). No need anymore to manually add fields to the bib-file.
\documentclass{article}
\usepackage{biblatex}
\DeclareFieldFormat{volume}{%
\iffieldnum{volume}{%
\bibstring{volume}~#1%
}{%
\bibstring{volumes}~#1%
}%
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{ref1,
author = "author",
title = "title",
year = "year",
publisher = "publisher",
location = "location",
volume = "1-2-4",
}
@BOOK{ref2,
author = "author",
title = "title",
year = "year",
publisher = "publisher",
location = "location",
volume = "3",
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}