# biblatex: clickable doi outside the reference section

Is there a way to insert the doi of an entry in the text as an hyperlink?

I've tried \citefield{<key>}{doi} but the result is not an hyperlink. I've also tried to use the above command within \url and \href but the result is not what I had in mind.

P.S. Here is a MWE:

\documentclass{article}%twoside
\usepackage{filecontents}
\begin{filecontents}{mybib.bib}
@Article{Chen-2015,
author       = {Chen, Yi and Moore, Katie L. and Miller, Anthony J. and {McGrath}, Steve P. and Ma, Jian Feng and Zhao, Fang-Jie},
title        = {The role of nodes in arsenic storage and distribution in rice},
volume       = {66},
pages        = {3717--3724},
doi          = {10.1093/jxb/erv164},
journaltitle = {Journal of Experimental Botany},
url          = {http://jxb.oxfordjournals.org/content/66/13/3717},
}

@Article{Sasaki-2015,
author       = {Sasaki, Akimasa and Yamaji, Naoki and Mitani-Ueno, Namiki and Kashino, Miho and Ma, Jian Feng},
title        = {A node-localized transporter {OsZIP}3 is responsible for the preferential distribution of Zn to developing tissues in rice},
volume       = {84},
pages        = {374--384},
doi          = {10.1111/tpj.13005},
journaltitle = {The Plant Journal},
url          = {http://onlinelibrary.wiley.com/doi/10.1111/tpj.13005/abstract},
}
\end{filecontents}

\usepackage{biblatex}
\usepackage{hyperref}
\bibliography{mybib}
\begin{document}
\citefield{Chen-2015}{doi}\\ %doi as it should be printed but not an hyperlink
\href{http://dx.doi.org/\citefield{Chen-2015}{doi}}{\citefield{Chen-2015}{doi}}\\ % Doesn't work
\citefield{Sasaki-2015}{doi}\\
\printbibliography
\end{document}

• You can specify a different format for the citation using \citefield{<key>}[<format>]{<field>}. If needed, you can create a custom format using \DeclareFieldFormat. – cfr Jul 17 '16 at 0:05

For example can you define a new field format mydoi with:

\DeclareFieldFormat{mydoi}{%
\ifhyperref
}


That allows you to get rid of the leading DOI: (see commented line in the code above ...). Now you can use this new field format to get the result I think you want.

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{Chen-2015,
author       = {Chen, Yi and Moore, Katie L. and Miller, Anthony J.
and {McGrath}, Steve P. and Ma, Jian Feng and Zhao, Fang-Jie},
title        = {The role of nodes in arsenic storage and distribution in rice},
volume       = {66},
pages        = {3717--3724},
doi          = {10.1093/jxb/erv164},
journaltitle = {Journal of Experimental Botany},
url          = {http://jxb.oxfordjournals.org/content/66/13/3717},
}
@Article{Sasaki-2015,
author       = {Sasaki, Akimasa and Yamaji, Naoki and Mitani-Ueno, Namiki
and Kashino, Miho and Ma, Jian Feng},
title        = {A node-localized transporter {OsZIP}3 is responsible
for the preferential distribution of Zn to developing
tissues in rice},
volume       = {84},
pages        = {374--384},
doi          = {10.1111/tpj.13005},
journaltitle = {The Plant Journal},
url          = {http://onlinelibrary.wiley.com/doi/10.1111/tpj.13005/abstract},
}
\end{filecontents}

\documentclass{article}%twoside

\usepackage{csquotes}
\usepackage{biblatex}

\usepackage{hyperref}

\DeclareFieldFormat{mydoi}{%
\ifhyperref
}

\begin{document}
\citefield{Chen-2015}[doi]{doi}

\citefield{Chen-2015}[mydoi]{doi} % <===================================

\citefield{Chen-2015}[citeurl]{url} % <=================================

\citefield{Chen-2015}[url]{url}

\citefield{Sasaki-2015}[mydoi]{doi} % <=================================

\cite{Chen-2015} \cite{Sasaki-2015}
\printbibliography
\end{document}


with the result:

I marked the relevant code lines for you with <==============.

• If one needs the DOI more often, it could be a good idea to create a new dedicated command with \DeclareCiteCommand. That saves some typing of brackets and curly braces. See also How to extract BibTeX entries (as DOI, abstract, etc.) – moewe Jul 17 '16 at 12:17
• I don't think we should close this question as a duplicate, the plain \citefield command without an additional format argument did not give the expected result because the generic format citefield was used. The discussions of the formats is crucial here. – moewe Jul 18 '16 at 7:03