For example: "Philos Trans R Soc" should become "Philos. Trans. R. Soc."
[Tex/LaTex] Biblatex: How to insert dots into abbreviated journal names in bibliography
biblatexformattingjournal
Related Solutions
Loading biblatex
with the package option giveninits=true
will just print the initial of the author's first name.
Note that this will not work in somewhat old versions, and you must use (the now-deprecated) firstinits=true
option instead, which accomplishes the same thing.
We will need to do two changes.
First we need to tell biblatex
that dots in the journaltitle
fields are by no means full stops, but abbreviation dots. This can be done by adding \isdot
after the field formatting directive.
\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}\isdot}
See In biblatex, treat periods in journal as abbreviation dots and biblatex - How can I force a colon after a period? for a more thorough explanation and investigation of this problem.
We then need to tell biblatex
to print a comma after the journal name, and this can be done via
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addcomma\space}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
Where in the third line we have swapped \setunit*{\addspace}%
for \setunit*{\addcomma\space}%
.
MWE
\documentclass{article}
\usepackage[backend=bibtex,style=numeric-comp,firstinits=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{goss1981simple,
author = "David Goss",
title = "A simple approach to the analytic continuation and values at the negative integers for the Riemann zeta function",
journal= "Proc. Am. Math. Soc.",
volume = "81",
number = "4",
pages = "513-517",
year = 1981,
}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}\isdot}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addcomma\space}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\renewbibmacro{in:}{\addcomma\addspace}
\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[unpublished]{title}{#1}
\DeclareFieldFormat[book]{title}{#1}
\DeclareFieldFormat[article]{volume}{\textbf{#1}}
\DeclareFieldFormat[article]{number}{\bibstring{number}~#1}
\DeclareFieldFormat{pages}{#1}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addcomma\addspace}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\begin{document}
\cite{goss1981simple}
\printbibliography
\end{document}
Best Answer
I prepared a solution using the new
biber
feature. Please update yourbiber
to 0.9.6 first.I prepared this minimal input file:
with this
manuell.bib
-fileLaTeX, biber, LaTeX leads to:
which is the unchanged output. Now, we use the
biber
regular expression matching to change the journal name to a new version with periods. The file namedbiber.conf
has the following content:It is explained in the
biber
manual section3.1.1 The map option
. Please note the regular expression\s
to match a white space. After putting thebiber.conf
file in the actual directory, we get (LaTeX, biber, LaTeX):which is the desired change. It is most likely not possible to do this fully automatic for all journals with one regular expression, because (cp. comment @Michael Palmer)
CNS Drugs rev
would becomeCNS Drugs. rev.
if a period is simply added after every word.Also note, the input file format will change in 0.9.7 and this solution has to be updated once the new version is out.
Quote @PLK:
taken from his answer to this question.
Here is the config file format for biber 0.9.8 and above: