2

I am trying to remove the dot after the volume field for articles in my bibliography. I haven't managed to find a solution that works yet. I suspect I need to redefined setunit using \DeclareFieldFormat[article]{volume} but I haven't managed to make it work yet. Does anybody have any ideas what I would have to do to remove the dot?

The MWE looks as follows:

\documentclass[a4paper]{book}

\usepackage[style=numeric-comp,sorting=none,backend=biber,isbn=false,date=year,url=false]{biblatex}
\renewbibmacro{in:}{}
\AtEveryBibitem{
    \iffieldundef{pages}{}{\clearfield{doi}}
}
\DeclareFieldFormat[article]{number}{}
\DeclareFieldFormat[article]{pages}{#1}
\renewcommand*{\bibpagespunct}{%
    \ifentrytype{article}
    {\addspace}
    {\addcomma\space}}
\addbibresource{\jobname.bib}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{Debnath2013,
author = {Debnath, Mainak and Dutta, Arpan and Biswas, Surajit and Das, Kalyan Kumar and Lee, Hon Man and V{\'{i}}cha, Jan and Marek, Radek and Marek, Jaromir and Ali, Mahammad},
doi = {10.1016/j.poly.2013.07.013},
file = {:D$\backslash$:/pmj27/Mendeley/Library/Debnath et al. - 2013 - Catalytic oxidation of aromatic hydrocarbons by mono-oxido-alkoxidovanadium(V) complexes of ONNO donor ethylened.pdf:pdf},
issn = {02775387},
journal = {Polyhedron},
keywords = {benzoic acid,ethylenediamine- bis,phenolate,terpenes,toluene},
mendeley-tags = {benzoic acid,terpenes,toluene},
month = {oct},
number = {2},
pages = {189--198},
publisher = {Elsevier Ltd},
title = {{Catalytic oxidation of aromatic hydrocarbons by mono-oxido-alkoxidovanadium(V) complexes of ONNO donor ethylenediamine-bis(phenolate) ligands}},
url = {http://linkinghub.elsevier.com/retrieve/pii/S027753871300538X},
volume = {63},
year = {2013}
}
\end{filecontents}
\begin{document}

\cite{Debnath2013}

\printbibliography
\end{document}
  • The result I get with your code is "Polyhedron 63 (2013) 189–198." No dot. – gusbrs Aug 9 '17 at 18:04
  • My mistake. Please try again. The MWE had no "number" field. – P-M Aug 9 '17 at 18:09
  • Do not remove fields by making their field format empty: \DeclareFieldFormat[article]{number}{}. This is bound to confuse and upset biblatex's punctuation tracker. – moewe Aug 10 '17 at 12:40
3

The added dot is hardcoded in volume+number+eid macro, of standard.bbx. Once you want to remove the journal number (which this macro expects), you could redefine it, instead of using \DeclareFieldFormat[article]{number}{}. With:

\renewbibmacro{volume+number+eid}{%
    \printfield{volume}%
    \setunit{\addcomma\space}%
    \printfield{eid}}

As far as I know, this macro is only used by the article driver in numeric-comp, but I'm not absolutely sure of this, so some attention for undesired effects is due. [See edit below]

A full MWE:

\documentclass[a4paper]{book}

\usepackage[style=numeric-comp,sorting=none,backend=biber,isbn=false,date=year,url=false]{biblatex}
\renewbibmacro{in:}{}
\AtEveryBibitem{
    \iffieldundef{pages}{}{\clearfield{doi}}
}
%\DeclareFieldFormat[article]{number}{}
\renewbibmacro{volume+number+eid}{%
    \printfield{volume}%
    \setunit{\addcomma\space}%
    \printfield{eid}}

\DeclareFieldFormat[article]{pages}{#1}
\renewcommand*{\bibpagespunct}{%
    \ifentrytype{article}
    {\addspace}
    {\addcomma\space}}
\addbibresource{\jobname.bib}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
    @article{Debnath2013,
        author = {Debnath, Mainak and Dutta, Arpan and Biswas, Surajit and Das, Kalyan Kumar and Lee, Hon Man and V{\'{i}}cha, Jan and Marek, Radek and Marek, Jaromir and Ali, Mahammad},
        doi = {10.1016/j.poly.2013.07.013},
        file = {:D$\backslash$:/pmj27/Mendeley/Library/Debnath et al. - 2013 - Catalytic oxidation of aromatic hydrocarbons by mono-oxido-alkoxidovanadium(V) complexes of ONNO donor ethylened.pdf:pdf},
        issn = {02775387},
        journal = {Polyhedron},
        keywords = {benzoic acid,ethylenediamine- bis,phenolate,terpenes,toluene},
        mendeley-tags = {benzoic acid,terpenes,toluene},
        month = {oct},
        number = {2},
        pages = {189--198},
        publisher = {Elsevier Ltd},
        title = {{Catalytic oxidation of aromatic hydrocarbons by mono-oxido-alkoxidovanadium(V) complexes of ONNO donor ethylenediamine-bis(phenolate) ligands}},
        url = {http://linkinghub.elsevier.com/retrieve/pii/S027753871300538X},
        volume = {63},
        year = {2013}
    }
\end{filecontents}
\begin{document}

    \cite{Debnath2013}

    \printbibliography
\end{document}

Resulting in:

enter image description here

Edit: You can make the change conditional on the entrytype, to play on the safe side, with:

\AtEveryBibitem{%
    \ifentrytype{article}{%
        \renewbibmacro{volume+number+eid}{%
            \printfield{volume}%
            \setunit{\addcomma\space}%
            \printfield{eid}}%
        }%
        {}%
    }

Edit 2: moewe confirms in the comments that, in the standard styles, volume+number+eid is indeed used only by the article entrytype. So, in this context, it is perfectly safe to go with the initially proposed solution.

  • Works excellently and the \AtEveryBibitem idea was very useful! – P-M Aug 9 '17 at 18:50
  • 1
    @P-M, I must add a comment. Though this works, I don't really think that it is a good idea to remove the information on the number of the journal. Not every journal has a continuous page numbering throughout the volume, and this can result in insufficiently specified references. – gusbrs Aug 9 '17 at 18:54
  • 1
    I would be inclined to agree with you, these are the guidelines I have been given though. – P-M Aug 9 '17 at 19:48
  • 1
    The code from the edit should be unnecessary. With the standard styles volume+number+eid is only used in @article, so the \ifentrytype{article} adds no protection. Since the macro will not occur in citations (unless \fullcite) is used, there is no need for \AtEveryBibitem. – moewe Aug 10 '17 at 7:28
  • Thanks, @moewe! As far as I had checked, I thought so, but it is somewhat hard to be sure sometimes. I'll edit the question to add the info. – gusbrs Aug 10 '17 at 9:42
3

There is an alternative solution that clears the number field in \AtEveryBibitem similarly to how you handle the DOI already

\AtEveryBibitem{%
  \iffieldundef{pages}
    {}
    {\clearfield{doi}}%
  \ifentrytype{article}
    {\clearfield{number}}
    {}}

You won't have to redefine a macro that way, but you hook into every bibitem. If you use \fullcite anywhere you will need the same for \AtEveryCitekey

\AtEveryCitekey{%
  \iffieldundef{pages}
    {}
    {\clearfield{doi}}%
  \ifentrytype{article}
    {\clearfield{number}}
    {}}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.