46

I would like to change the way the back references are shown in the bibliography, such that they are all shown within parentheses. So I would like to see

(page x, y, z)

after my bibitems. This is what I think could be a starting point...

\usepackage[backref=page]{hyperref}
\renewcommand{\backrefxxx}[3]{(page \hyperlink{page.#1}{#1})}

But obviously this yields

(page x), (page y), (page z)

1
  • For those looking for how to create back-references without hyperref, consider using the package citeref (listed among the suggestions here, see also this discussion, in particular the comments about licensing).
    – 0 _
    Commented Dec 14, 2017 at 21:14

1 Answer 1

55

Here's a solution using biblatex:

\documentclass{article}

\usepackage[backref=true]{biblatex}

\usepackage{hyperref}

\DefineBibliographyStrings{english}{%
  backrefpage = {page},% originally "cited on page"
  backrefpages = {pages},% originally "cited on pages"
}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

Some text \autocite{A01,B02}.

\clearpage

Some more text \autocite{A01}.

\printbibliography

\end{document}

enter image description here

And a brute-force solution for natbib/backref:

\documentclass{article}

\usepackage[numbers]{natbib}

\usepackage[backref=page]{hyperref}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\BR@backref}{\newblock}{\newblock(page~}{}{}
\patchcmd{\BR@backref}{\par}{)\par}{}{}
\makeatother

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
\end{filecontents}

\begin{document}

Some text \citep{A01,B02}.

\clearpage

Some more text \citep{A01}.

\bibliographystyle{plainnat}
\bibliography{\jobname}

\end{document}

enter image description here

9
  • 1
    Nice, that solution works. Unfortunately am I using the natbib package (and would like to keep it that way) and that clashes with biblatex...
    – D.Roepo
    Commented Nov 27, 2011 at 16:59
  • 4
    @pluton \usepackage{xpatch}\xpatchbibmacro{pageref}{parens}{brackets}{}{}
    – lockstep
    Commented Apr 27, 2012 at 2:57
  • 3
    The more recent question “Formatting back references in bibliography (BibTeX)” gives some bibtex/hyperref-based options (no biblatex required). Commented Oct 24, 2014 at 11:29
  • 3
    @homo_loquens You could have asked a separate (follow-up) question. ;-) Here's the answer: \renewbibmacro*{pageref}{\iflistundef{pageref}{}{\printtext[parens]{\printlist[‌​pageref][-\value{listtotal}]{pageref}}}}. You may replace parens with brackets.
    – lockstep
    Commented Feb 22, 2015 at 10:23
  • 1
    I would rather use the default \DefineBibliographyStrings{english} just like that. Which gives (Cited on pages 1, 2). Not redefining backrefpage and backrefpages as (page 1, 2), since that might give the impression you are referring to pages in the referenced work, whereas you are referring to page locations in your own document.
    – Magne
    Commented Nov 19, 2019 at 16:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .