1

I'm trying to polish my thesis with a nice bibliography (with biblatex, backend=bibtex) but I have a problem with the way the backreferences are treated with respect to sets of references.

Indeed, I use @set to group two papers within the same entry (say a paper and an erratum, or two papers by the same set of people on the same thing). The issue then is that the backref does not look the same for a single paper or for a set of papers: the former is between brackets (as I would like) and the latter is not. Also, I would like all of those to be on the next line.

See:

\documentclass[a4paper,12pt]{report}

\usepackage[utf8]{inputenc}
\usepackage[pdftex]{graphicx}
\usepackage{color}
\usepackage{changepage}

\usepackage[backend=bibtex, style=numeric-comp, sorting=none, backref=true, backrefsetstyle=setonly, maxcitenames=3, maxbibnames=10]{biblatex}
\renewbibmacro*{in:}{}
\renewcommand*{\bibpagespunct}{\addspace}
\renewcommand*{\finentrypunct}{}
\renewbibmacro*{volume+number+eid}{
  \setunit*{\addcomma\space}
  \printfield{volume}
  \printfield{number}
}
\DeclareFieldFormat*{author}{#1}
\DeclareFieldFormat*{title}{\mkbibemph{#1}}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat*{volume}{{\bf #1}}
\DefineBibliographyStrings{english}{
  backrefpage = {\uppercase{s}ee p\adddot},
  backrefpages = {\uppercase{s}ee pp\adddot},
}

\addbibresource{Biblio-Dismantled}

\begin{document}

One may have a MOND at such scales~\cite{Milgrom1983set}. MOND theories have been embedded in relativistic modified gravitational field theories, the so-called \emph{Te}nsor-\emph{Ve}ctor-\emph{S}calar (TeVeS) theories of gravity~\cite{Bekenstein2004}.

\printbibliography

\end{document}

with the .bib file:

@string{AJ="The Astrophysical Journal"}
@string{PRD="Physical Review D"}

@set{Milgrom1983set,
entryset =  { Milgrom1983-1, Milgrom1983-2 } 
}

@article{Milgrom1983-1,
    entryset =  { Milgrom1983set },
    author =    { M. Milgrom },
    title =     { A Modification of the Newtonian dynamics as a possible alternative to the hidden mass hypothesis },
    journaltitle =  AJ,
    year =      { 1983 },
    volume =    { 270 },
    pages =     { 365 }
}

@article{Milgrom1983-2,
    entryset =  { Milgrom1983set },
    author =    { \\ },
    title =     { A Modification of the Newtonian dynamics: Implications for galaxies },
    journaltitle =  AJ,
    year =      { 1983 },
    volume =    { 270 },
    pages =     { 371 }
}

@article{Bekenstein2004,
author =    { J. D. Bekenstein },
title =     { Relativistic gravitation theory for the MOND paradigm },
journaltitle =  PRD,
year =      { 2004 },
volume =    { 70 },
number =    { 08 },
pages =     { 083509 }
}
2

There are two macros, setpageref for backrefs in @sets and pageref for all other types. They look very different save for one line where they differ by a [parens] in the optional argument to \printtext. The simple line

\renewbibmacro*{setpageref}{\usebibmacro{pageref}}

should be enough to make the two macros behave the same. (I have no idea why the two formats are different...)


You can get a new line before the backreferences with

\renewcommand*{\bibpagerefpunct}{\newline}

@sets don't use \bibpagerefpunct by default, so we have to modify the driver to also use \bibpagerefpunct.

\DeclareBibliographyDriver{set}{%
  \entryset{}{}%
  \setunit{\bibpagerefpunct}%
  \usebibmacro{setpageref}%
  \finentry}
  • That is great, thanks a lot! As usual, so simple yet not found after so much time spent on it. Anyway, do you have an idea to put it on the next line as well? Thanks again, – Thomas Jul 4 '16 at 16:38
  • @Thomas Check the edit, please. – moewe Jul 4 '16 at 16:42
  • Awesome! Would you mind explaining it quickly? I understand the first line but not the \Declare... Also, what if I'm picky and ultimately I'd like to have the backrefs on a new line for sets only, but not for single entries? – Thomas Jul 4 '16 at 16:52
  • Actually managed to do it: replace \renewcommand*{\bibpagerefpunct}{\newline} \DeclareBibliographyDriver{set}{% \entryset{}{}% \setunit{\bibpagerefpunct}% \usebibmacro{setpageref}% \finentry} with \DeclareBibliographyDriver{set}{% \entryset{}{}% \setunit{\newline}% \usebibmacro{setpageref}% \finentry} Thanks again :) – Thomas Jul 4 '16 at 17:48

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.