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}
First thing to do is to add a field for the journal abbreviation to the article entrytype, journalabbr
in the MWE. Therefore you need to declare a datamodel (an extra file; in the MWE I've used filecontents to simulate that) and you have to tell biblatex/biber to use it in the package options.
Then you have to modify the cite command, so it fits your needs. \citep
from the authoryear-style (your citestyle) uses the \cite
command. There you just have to add a switch, which checks if the field journalabbr
is empty or not, and prints it out or not.
Last but not least you have to add the abbreviation fields to the entries.
MWE:
\begin{filecontents}{min.bib}
@article{boisson2003unexpected,
title={Unexpected protein families including cell defense components feature in the N-myristoylome of a higher eukaryote},
author={Boisson, B. and Giglione, Carmela and Meinnel, Thierry},
journal={Journal of Biological Chemistry},
journalabbr={JBC},
year={2003},
publisher={ASBMB}
}
\end{filecontents}
\begin{filecontents}{authorjabbryear.dbx}
\ProvidesFile{authorjabbryear.dbx}
\DeclareDatamodelFields[type=field,datatype=literal]{journalabbr}
\DeclareDatamodelEntryfields[article]{journalabbr}
\end{filecontents}
\documentclass[fontsize=11pt, paper=a4, ngerman, DIV=calc]{scrartcl}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage{fixltx2e}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage[german=quotes]{csquotes}
\usepackage[style=authoryear-comp,sortcites=true,sorting=nyt,isbn=false,natbib=true, citestyle=authoryear,bibstyle=authoryear,backend=biber,maxnames=1,maxcitenames=1,
,datamodel=authorjabbryear%added!
] {biblatex}
\DefineBibliographyStrings{ngerman}{ andothers = {{et\,al\adddot}} }
\renewbibmacro*{cite}{%from authoryear.cbx
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\iffieldundef{journalabbr}{}{%
\printfield{journalabbr}%
\setunit{\nameyeardelim}%
}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
\addbibresource{min.bib}
\begin{document}
\citep{boisson2003unexpected}
How it should look like:
(Boisson et al., JBC, 2003)
\printbibliography
\end{document}
Best Answer
You need to add
\selectfont
after your\fontsize{}{}
invocation.I strongly prefer
\bibfont
over\AtBibliography
or\AtNextBibliography
for font changes. Of course\bibfont
applies to all bibliographies, so that will only work in case you only have one bibliography (or several and you want to increase the font size for all of them).\AtNextBibliography
is really only a good idea if you have several bibliographies and you want to have stuff apply only to one specific bibliography.The great advantage of
\bibfont
is that it applies to the label width measuring. If you use\AtNextBibliography{\fontsize{15}{18}\selectfont}
you'll find that the second lines of your bibliography entries are not perfectly aligned with the first line. That is because in that case the label width is calculated using the normal document font size. If you use\bibfont
biblatex
will use that font size to measure the label width.Compare
\renewcommand*{\bibfont}{\fontsize{15}{18}\selectfont}
with
\AtNextBibliography{\fontsize{15}{18}\selectfont}