To make use of the excellent localisation features of biblatex
, the following approach might be more apt.
\DeclareFieldFormat[article]{volume}{\bibstring{jourvol}\addnbspace #1}
\DeclareFieldFormat[article]{number}{\bibstring{number}\addnbspace #1}
Note the use of a non-breaking space (\addnbspace
), if you prefer a normal space, go with \addpspace
.
(Edit: One should probably better use \bibstring{jourvol}
instead of \bibstring{volume}
, I have changed this, for German at least the output changes, this is not reflected in the image below.)
This, however, results in "Bd. 21.Nr. 1", so we modify the bibmacro volume+number+eid
a bit to include a comma (and a space) between the volume and number.
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%<---- was \setunit*{\adddot}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
So the MWE
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[backend = biber,style = authoryear,natbib = true]{biblatex}
\usepackage[autostyle = true]{csquotes}
\begin{filecontents}{\jobname.bib}
@article{kakimoto_monitoring_2006,
title = {Monitoring of Interarea Oscillation Mode by Synchronized Phasor Mesurement},
volume = {21},
issn = {0885-8950},
doi = {10.1109/TPWRS.2005.861960},
number = {1},
journal = {{IEEE} Transactions on Power Systems},
author = {Kakimoto, Naoto and Sugumi, Masahiro and Makino, Tohru and Tomiyama, Katsuyuki},
month = feb,
year = {2006},
pages = {260 -- 268}
}
\end{filecontents}
\DeclareFieldFormat[article]{volume}{\bibstring{jourvol}\addnbspace #1}
\DeclareFieldFormat[article]{number}{\bibstring{number}\addnbspace #1}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\renewcommand*{\multinamedelim}{\addsemicolon\space}
\addbibresource{\jobname.bib}
\begin{document}
\cite{kakimoto_monitoring_2006}
\nocite{*}
\printbibliography
\end{document}
yields
If you wish to include a comma before the volume
, add to your preamble.
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addcomma\space}% was: \setunit*{\addspace}
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addcomma\space}}% was: \setunit{\addspace}
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
Even in a numeric style it might sometimes be helpful to be able to refer to a source by (#, Author, year) not just [#].
The following defines a new cite command to deliver exactly this additional information.
This command is as of now neither capable of compressing (authors, numbers) nor ibidem functions.
You can add the following code to your preamble.
\DeclareCiteCommand{\morecite}[\mkbibparens]%
{\usebibmacro{prenote}}%
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{%
\printfield{prefixnumber}%
\printfield{labelnumber}%
\ifbool{bbx:subentry}
{\printfield{entrysetcount}}
{}}%
\ifnameundef{labelname}%
{}
{\setunit{\addcomma\space}%
\printnames{labelname}}%
\setunit{\addcomma\space}%
\printfield{labelyear}}
{\multicitedelim}%
{\usebibmacro{postnote}}%
This will declare a new cite command called \morecite
that displays the label number, author and year. There is no fancy year disambiguation etc. (if you want those authoryear
or friends is for you), since the label number is the ultimate way to identify the sources.
\documentclass[a4paper,american]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage[style=custom-numeric-comp,backend=biber]{biblatex}
\usepackage{hyperref}
\ExecuteBibliographyOptions{labelyear}
\DeclareCiteCommand{\morecite}[\mkbibparens]%
{\usebibmacro{prenote}}%
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{%
\printfield{prefixnumber}%
\printfield{labelnumber}%
\ifbool{bbx:subentry}
{\printfield{entrysetcount}}
{}}%
\ifnameundef{labelname}%
{}
{\setunit{\addcomma\space}%
\printnames{labelname}}%
\setunit{\addcomma\space}%
\printfield{labelyear}}
{\multicitedelim}%
{\usebibmacro{postnote}}%
\addbibresource{biblatex-examples.bib} % includes file "example_ref_list.bib" with data on the cited references
\begin{document}
\morecite{westfahl:space} and \morecite{westfahl:frontier}
\printbibliography
\end{document}
yields
Best Answer
This problem can be simplified by putting restrictions on the data found in the
number
field and using existing citation commands.Here I've assumed that patent numbers contain at least three consecutive digits. The numbers can have an alphabetic prefix or suffix, possibly with a dash separator. New field formats are defined to add a thousands separator in patent numbers. This is done via some hacks based on the numprint package. The three citation variants you're wanting can be achieved on the basis of any standard author-year citation style.
With the compact author-year citation styles, citations lists are sorted according to the scheme specified by the
sorting
option. Compact lists can look awkward with a mix of patents and other entry types. See the list by Sorace et al. above, for example.To avoid this we can incorporate
number
into sorting with biber as the backend and\DeclareSortingScheme
. Since other entry types might usenumber
, we can configure biber to copy patent numbers to an empty field, say,usera
.Just save this as
biber.conf
in the same folder as the above document. In the document preamble we can modify thenyt
scheme to includeusera
.By default a minimum value is used as a fallback for
usera
. So under this scheme non-patent entries appear first in a compact citation list.Loading biblatex with
now gives the following output.