Fot the day of publication you can use the date
field. A date can be specified YYYY-MM-DD
or using a date range YYYY-MM-DD/YYYY-MM-DD
months and days are optional.
For the other issues, how to specify double month entires, the best option is to use either issue
or number
. Here are the relevant extracts from the biblatex
manual:
issues
(literal)
The issue of a journal. This field is intended for journals whose individual issues are identified by a designation such as ‘Spring’ or ‘Summer’ rather than the month or a number. Since the placement of issue is similar to month and number, this field may also be useful with double issues and other special cases. See also month
, number
, and § 2.3.9.
month
(integer)
The publication month. This must be an integer, not an ordinal or a string. Don’t say month={January}
but month={1}
. The bibliography style converts this to a language dependent string or ordinal where required. See also date as well as §§ 2.3.9 and 2.3.8.
number
(literal)
The number of a journal or the volume/number of a book in a series. See also issue as well as §§ 2.3.7 and 2.3.9. With @patent
entries, this is the number or record token of a patent or patent request.
EDIT
When biblatex
is used with biber, then one can use the \DeclareSourcemap
feature to "transform" the entries and the field in a .bib
file in place. Here is a definition of the source map for the given format of month.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=month,
match=\regexp{\d\d/\d\d},
fieldset=number, origfieldval]
\step[fieldsource=month,
match=\regexp{(\d\d)\s*(\d+)},
fieldset=day, fieldvalue={$2}]
\step[fieldsource=month,
match=\regexp{(\d\d)\d*}, replace=\regexp{$1}]
}
}
}
Use an existing field (part
)
If you use the part
field for tome information1, there is not a lot to be done in the standard styles. If you have a non-standard/custom style that moves around the part
information though, you would need to tell us more about it.
These four lines should do what you want. They redefine the string part to be "tomo" and print ", tomo #" after the volume.
\DefineBibliographyStrings{italian}{%
part = {tomo},
}
\DeclareFieldFormat{part}{\addcomma\space\bibstring{part}\space #1}
All the standard styles use the sequence
\printfield{volume}%
\printfield{part}%
to print part
information, so we should be fine.
(Normally, putting \addcomma
and the like in \DeclareFieldFormat
is frowned upon, but the part
field seems to be special insofar that the default format is {.#1}
and that there is no other punctuation inserted between volume
and part
by any of the standard styles.)
Your bib
entry would be
@InProceedings{bertolini:1992,
author = "Francesco Bertolini",
title = "Società di trasmissione orale: mito e folclore",
booktitle = "Lo spazio letterario della Grecia antica",
editor = "G. Cambiano and L. Canfora and D. Lanza",
publisher = "Salerno",
location = "Roma",
year = "1992",
volume = "1",
part = "2",
pages = "47--75",
}
Full MWE
\documentclass[italian]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[]{biblatex}
\usepackage{filecontents}
%\DeclareFieldFormat{part}{.#1}% physical part of a logical volume
\DefineBibliographyStrings{italian}{%
part = {tomo},
}
\DeclareFieldFormat{part}{\addcomma\space\bibstring{part}\space #1}
\begin{filecontents*}{\jobname.bib}
@InProceedings{bertolini:1992,
author = "Francesco Bertolini",
title = "Società di trasmissione orale: mito e folclore",
booktitle = "Lo spazio letterario della Grecia antica",
editor = "G. Cambiano and L. Canfora and D. Lanza",
publisher = "Salerno",
location = "Roma",
year = "1992",
volume = "1",
part = "2",
pages = "47--75",
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\cite{bertolini:1992}
\printbibliography
\end{document}
1 The biblatex
documentation states on page 21, §2.2.2 Data Fields,
part
(field (literal)) The number of a partial volume. This field applies to books only, not
to journals. It may be used when a logical volume consists of two or
more physical ones. In this case the number of the logical volume goes
in the volume
field and the number of the part of that volume in the
part
field.
Map the field to an existing field (part
)
You could also map the field tome
to part
thus creating an alias for input purposes
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=tome]
\step[fieldset=part, origfieldval]
}
}
}
The sample entry might look like this then
@InProceedings{bertolini:1992,
author = "Francesco Bertolini",
title = "Società di trasmissione orale: mito e folclore",
booktitle = "Lo spazio letterario della Grecia antica",
editor = "G. Cambiano and L. Canfora and D. Lanza",
publisher = "Salerno",
location = "Roma",
year = "1992",
volume = "1",
tome = "3",
pages = "47--75",
}
For more general purposes, biblatex
defines the five generic fields usera
to userf
(as well as lista
to listf
for lists fields and namea
to namec
for names). While it might be awkward to use these fields in the input .bib
file, where more useful names are expected, they are useful for internal remapping.
Declare a new field
If you absolutely insist on creating a new data field tome
, create a new datamodel file, tome.dbx
, with the following content and put it somewhere LaTeX can find it (this is necessary since version 2.9, before that it was possible to use datamodel commands directly in the document, but this is not guaranteed to work and therefore strongly discouraged, see Data model macro cannot be used in preamble; LaTeX will be able to find the .dbx
file if you place it in the same folder as your main .tex
document, other options to make the file globally available are discussed in https://texfaq.org/FAQ-inst-wlcf).
\ProvidesFile{tome.dbx}[2019/20/02 add tome field to biblatex data model]
\DeclareDatamodelFields[type=field,datatype=literal]{tome}
\DeclareDatamodelEntryfields{tome}
(In the MWE below this file is created automatically using the filecontents
package.)
We then have to load biblatex
with the option datamodel=tome
in order to get load the correct datamodel where tome
is defined. Alternatively, you can put the above lines into biblatex-dm.cfg
(see How to include price in bibliography?).
Again we use localisation strings
\NewBibliographyString{tome}
\DefineBibliographyStrings{italian}{%
tome = {tomo},
}
\DeclareFieldFormat{tome}{\bibstring{tome}\space #1}
We will then have to patch all the drivers/macros to include tome
information, that is quite a task...
We renew
some macros
\renewbibmacro*{maintitle+title}{%
\iffieldsequal{maintitle}{title}
{\clearfield{maintitle}%
\clearfield{mainsubtitle}%
\clearfield{maintitleaddon}}
{\iffieldundef{maintitle}
{}
{\usebibmacro{maintitle}%
\newunit\newblock
\iffieldundef{volume}
{}
{\printfield{volume}%
\setunit{addcomma\space}%
\printfield{tome}
\printfield{part}%
\setunit{\addcolon\space}}}}%
\usebibmacro{title}%
\newunit}
\renewbibmacro*{maintitle+booktitle}{%
\iffieldundef{maintitle}
{}
{\usebibmacro{maintitle}%
\newunit\newblock
\iffieldundef{volume}
{}
{\printfield{volume}%
\setunit{addcomma\space}%
\printfield{tome}
\printfield{part}%
\setunit{\addcolon\space}}}%
\usebibmacro{booktitle}%
\newunit}
And add tome to the drivers
\newcommand*{\addtometo}[1]{%
\xpatchbibdriver{#1}
{\printfield{volume}}
{\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{tome}}
{}
{\typeout{failed to add tome to #1 driver}}
}
\addtometo{inproceedings}
\addtometo{book}
MWE
\documentclass[italian]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{filecontents}
\begin{filecontents*}{tome.dbx}
\ProvidesFile{tome.dbx}[2019/20/02 add tome field to biblatex data model]
\DeclareDatamodelFields[type=field,datatype=literal]{tome}
\DeclareDatamodelEntryfields{tome}
\end{filecontents*}
\usepackage[backend=biber,datamodel=tome]{biblatex}
%\DeclareFieldFormat{part}{.#1}% physical part of a logical volume
\NewBibliographyString{tome}
\DefineBibliographyStrings{italian}{%
tome = {tomo},
}
\DeclareFieldFormat{tome}{\bibstring{tome}\space #1}
\usepackage{xpatch}
\newcommand*{\addtometo}[1]{%
\xpatchbibdriver{#1}
{\printfield{volume}}
{\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{tome}}
{}
{\typeout{failed to add tome to #1 driver}}
}
\addtometo{proceedings}
\addtometo{inproceedings}
\addtometo{book}
\addtometo{inbook}
\renewbibmacro*{maintitle+title}{%
\iffieldsequal{maintitle}{title}
{\clearfield{maintitle}%
\clearfield{mainsubtitle}%
\clearfield{maintitleaddon}}
{\iffieldundef{maintitle}
{}
{\usebibmacro{maintitle}%
\newunit\newblock
\iffieldundef{volume}
{}
{\printfield{volume}%
\setunit{addcomma\space}%
\printfield{tome}
\printfield{part}%
\setunit{\addcolon\space}}}}%
\usebibmacro{title}%
\newunit}
\renewbibmacro*{maintitle+booktitle}{%
\iffieldundef{maintitle}
{}
{\usebibmacro{maintitle}%
\newunit\newblock
\iffieldundef{volume}
{}
{\printfield{volume}%
\setunit{addcomma\space}%
\printfield{tome}
\printfield{part}%
\setunit{\addcolon\space}}}%
\usebibmacro{booktitle}%
\newunit}
\begin{filecontents*}{\jobname.bib}
@InProceedings{bertolini:1992,
author = "Francesco Bertolini",
title = "Società di trasmissione orale: mito e folclore",
booktitle = "Lo spazio letterario della Grecia antica",
editor = "G. Cambiano and L. Canfora and D. Lanza",
publisher = "Salerno",
location = "Roma",
year = "1992",
volume = "1",
tome = "3",
pages = "47--75",
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\cite{bertolini:1992}
\printbibliography
\end{document}
That much hassle probably is not worth it as we have part
that seems to do what you want rather well.
Best Answer
By default,
biblatex
does not seem to support a supervisor, so some changes have to be made, but we can keep these changes to a minimum.Firstly, we define the new name list
supervisor
via a new datamodel (thesis.dbx
)Save the lines above in a file called
thesis.dbx
and put it somewhere LaTeX can find it. In the MWE below, this is done automatically viafilecontents
.The datamodel needs to be loaded via the
datamodel
option (datamodel=thesis
, e.g.\usepackage[style=authoryear,backend=biber,datamodel=thesis]{biblatex}
).Secondly, we need to declare the new strings you asked for in an
.lbx
file (the file should be calledenglish-thesis.lbx
)Make sure to save the file somewhere LaTeX can find it (as above: in the MWE below, the file is created with
filecontents
).We then employ this language variant via
\DeclareLanguageMapping{english}{english-thesis}
.Finally, we define a new bibmacro
that prints the supervisor and the introducing string depending on the number of supervisors.
We then patch the
@thesis
driver to use our new macro (that is done with the awesomexpatch
package).The supervisor is now simply added to the
supervisor
field like soMWE
If you cannot create the new name list
supervisor
, you could try and abuse theeditor
field, then there is no need for the.dbx
file. This solution should work with BibTeX as well.The macros
thesissupervisor
becomesYou then give the supervisor in the
editor
field in the bib entry like soMWE