14

I'm using biblatex with the following options

\usepackage[backend=biber,style=numeric-comp,sorting=none,%
    isbn=false,url=false,doi=false,firstinits=true]{biblatex}

Thus, my bibliography contains neither url nor doi fields, making it nice and short. However, this comes with the disadvantage that references no longer contain clickable links leading to the download location of that particular source.

Is there a way to change this?

5
  • Have you considered the possibilities offered by eprint and eprinttype?
    – cfr
    Commented Oct 13, 2014 at 23:13
  • you can edit the format of url and doi and only print the words url or doi with the hyperlink to the download location (And using doi=true and url=true, of course). Commented Oct 13, 2014 at 23:48
  • Where's a person supposed to click on if the doi and url fields aren't shown?
    – Mico
    Commented Oct 14, 2014 at 3:33
  • Preferably on the publication title but the author name or the whole reference would work just fine as well.
    – Janosh
    Commented Oct 14, 2014 at 8:55
  • 1
    See also tex.stackexchange.com/q/48400/35864
    – moewe
    Commented Jan 25, 2019 at 13:00

1 Answer 1

11

EDIT: Added Title clickable (1. just the title cickable and 2. the whole reference clickable)

1. Just the Title reference clickable

You can redefine the title macro and add the \href to the title using the DeclareFieldFormat. I edited the default definitions in the biblatex.def file.

\DeclareFieldFormat{title}{\myhref{\mkbibemph{#1}}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\myhref{\mkbibquote{#1\isdot}}}

And the macros are:

\newcommand{\doiorurl}{%
  \iffieldundef{doi}
    {\iffieldundef{url}
       {}
       {\strfield{url}}}
    {http://dx.doi.org/\strfield{doi}}%
}

\newcommand{\myhref}[1]{%
 \ifboolexpr{%
   test {\ifhyperref}
   and
   not test {\iftoggle{bbx:url}}
   and
   not test {\iftoggle{bbx:doi}}
  }
  {\href{\doiorurl}{#1}}
  {#1}%
}

MWE

\documentclass{article}
\usepackage[backend=biber,style=numeric-comp,sorting=none,%
    isbn=false,url=false,doi=false,firstinits=true]{biblatex}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents}{\jobname.bib}
@Article{usingdoi,
  author={The First Author},
  title={Using DOI},
  year={2014},
  journal={J. Med. Sc.},
  publisher={Springer},
  doi={10.1103/PhysRevLett.77.3865},
  pages={1-2},
}

@Article{usingurl,
  author={The Other Authors},
  title={Using URL},
  number={2},
  year={1998},
  month={4},
  journal={ACM Trans. Inf. Sys.},
  publisher={Springer},
  volume={16},
  pages={127-160},
  url={https://www.google.com}
}


@Article{nodoiurl,
  author={The Author},
  title={Neither doi or url},
  number={2},
  year={1998},
  month={4},
  journal={ACM Trans. Inf. Sys.},
  publisher={Springer},
  volume={16},
  pages={127-160},
}

\end{filecontents}

\newcommand{\doiorurl}{%
  \iffieldundef{doi}
    {\iffieldundef{url}
       {}
       {\strfield{url}}}
    {http://dx.doi.org/\strfield{doi}}%
}

\newcommand{\myhref}[1]{%
 \ifboolexpr{%
   test {\ifhyperref}
   and
   not test {\iftoggle{bbx:url}}
   and
   not test {\iftoggle{bbx:doi}}
  }
  {\href{\doiorurl}{#1}}
  {#1}%
}

\DeclareFieldFormat{title}{\myhref{\mkbibemph{#1}}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\myhref{\mkbibquote{#1\isdot}}}



\addbibresource{\jobname.bib}

\begin{document}
    \nocite{*}
    \printbibliography
\end{document}%XXIII

enter image description here

2. The whole reference clickable

I found a way that allow to make a reference clickable (The whole text of the reference is clickable)

For this I Modified the definition of DeclareBibliographyDriver to add a \href to the full reference.

This is necessary before biblatex load the bibliography style.

By default, before load the style files, biblatex try load the file biblatex-dm.cfg (biblatex custom data model), then it is possible modify the DeclareBibliographyDriver using this file.

I created the file (biblatex-dm.cfg) in the work directory with the content:

\newcommand{\doiorurl}{%
  \iffieldundef{doi}
    {\iffieldundef{url}
       {}
       {\strfield{url}}}
    {http://dx.doi.org/\strfield{doi}}%
}

\newcommand{\bibdrivercontent}[1]{%
 \ifboolexpr{%
   test {\ifhyperref}
   and
   not test {\iftoggle{bbx:url}}
   and
   not test {\iftoggle{bbx:doi}}
  }
  {\href{\doiorurl}{#1}}
  {#1}%
}

\let\OldDeclareBibliographyDriver\DeclareBibliographyDriver
\renewcommand{\DeclareBibliographyDriver}[2]{\OldDeclareBibliographyDriver{#1}{\bibdrivercontent{#2}}}

This code use \href only if hyperref is loaded and doi and url options are false.

The MWE:

\documentclass{article}
\usepackage[backend=biber,style=numeric-comp,sorting=none,%
    isbn=false,url=false,doi=false,firstinits=true]{biblatex}
\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents}{\jobname.bib}
@Article{usingdoi,
  author={The First Author},
  title={Using DOI},
  year={2014},
  journal={J. Med. Sc.},
  publisher={Springer},
  doi={10.1007/0000-0xz},
  pages={1-2},
}

@Article{usingurl,
  author={The Other Authors},
  title={Using URL},
  number={2},
  year={1998},
  month={4},
  journal={ACM Trans. Inf. Sys.},
  publisher={Springer},
  volume={16},
  pages={127-160},
  url={https://www.google.com}
}


@Article{nodoiurl,
  author={The Author},
  title={Neither doi or url},
  number={2},
  year={1998},
  month={4},
  journal={ACM Trans. Inf. Sys.},
  publisher={Springer},
  volume={16},
  pages={127-160},
}

\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

And the result:

enter image description here

5
  • Thanks for your answer. I added the biblatex-dm.cfg file to my working directory and it indeed made all those references clickable that contain url or doi fields. However, if I click on one, doi.org says page not found, as in this case. I'm not very familiar with this stuff. Do you know what could be causing the problem?
    – Janosh
    Commented Oct 14, 2014 at 8:11
  • It is my mistake. In the doiorurl macro change the www by dx. It means: the line {http://www.doi.org/\strfield{doi}} is replaced by {http://dx.doi.org/\strfield{doi}}. I'm going to edit my answer. Commented Oct 14, 2014 at 11:07
  • @PacificOrion You're welcome. I edited my answer and I added how to make only the title clickable. Commented Oct 14, 2014 at 11:57
  • That's even better. Tested it and works as well. Perhaps you edit your answer so that instructions on on how to add the link to just the reference title come first, as it is simpler and probably what most others would be looking for.
    – Janosh
    Commented Oct 14, 2014 at 13:48
  • A similar approach without the need for another document is posted here. Thanks for your solution anyhow, made me find this one. Commented May 20, 2020 at 14:42

You must log in to answer this question.

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