# Making endnotes clickable links with hyperref

I would like to use the endnotes package, hyperref and biblatex together to have links to my endnotes. Here is a MWE that shows how the links don't show up:

\begin{filecontents}{testbib.bib}
@Book{jones00,
author =   {Douglas Jones},
title =    {A book},
publisher =    {The metasyntactic variable publishing company},
year =     2000}
\end{filecontents}

\documentclass{article}
\usepackage{endnotes}
\bibliography{testbib}
\let\footnote\endnote
\usepackage{hyperref}
\begin{document}
Something\autocite[p.12]{jones00} something else\footnote{another endnote?}

\theendnotes
\end{document}


I'm open to other end-note producing options that work better with hyperref, but I'd rather stick with article document class.

-
For what it's worth: endnotes produced by the enotez package work nicely together with hyperref –  clemens Mar 5 '13 at 9:44

I once uncovered the following code on comp.text.tex, credited to Ulrich Dirr:

%%% hyperendnotes.sty
\makeatletter
\newcounter{Hendnote}
% Redefining portions of endnotes-package:
\let\savedhref\href
\let\savedurl\url
\def\endnotemark{%
\@ifnextchar[\@xendnotemark{%
\stepcounter{endnote}%
\protected@xdef\@theenmark{\theendnote}%
\protected@xdef\@theenvalue{\number\c@endnote}%
\@endnotemark
}%
}%
\def\@xendnotemark[#1]{%
\begingroup\c@endnote#1\relax
\unrestored@protected@xdef\@theenmark{\theendnote}%
\unrestored@protected@xdef\@theenvalue{\number\c@endnote}%
\endgroup
\@endnotemark
}%
\def\endnotetext{%
\@ifnextchar[\@xendnotenext{%
\protected@xdef\@theenmark{\theendnote}%
\protected@xdef\@theenvalue{\number\c@endnote}%
\@endnotetext
}%
}%
\def\@xendnotenext[#1]{%
\begingroup
\c@endnote=#1\relax
\unrestored@protected@xdef\@theenmark{\theendnote}%
\unrestored@protected@xdef\@theenvalue{\number\c@endnote}%
\endgroup
\@endnotetext
}%
\def\endnote{%
\@ifnextchar[\@xendnote{%
\stepcounter{endnote}%
\protected@xdef\@theenmark{\theendnote}%
\protected@xdef\@theenvalue{\number\c@endnote}%
\@endnotemark\@endnotetext
}%
}%
\def\@xendnote[#1]{%
\begingroup
\c@endnote=#1\relax
\unrestored@protected@xdef\@theenmark{\theendnote}%
\unrestored@protected@xdef\@theenvalue{\number\c@endnote}%
\show\@theenvalue
\endgroup
\@endnotemark\@endnotetext
}%
\def\@endnotemark{%
\leavevmode
\ifhmode
\edef\@x@sf{\the\spacefactor}\nobreak
\fi
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
{%
\hyper@@anchor{Hendnotepage.\@theenvalue}{\empty}%
}%
}%
\makeenmark
\ifhmode
\spacefactor\@x@sf
\fi
\relax
}%
\long\def\@endnotetext#1{%
\if@enotesopen
\else
\@openenotes
\fi
\immediate\write\@enotes{%
\@doanenote{\@theenmark}{\@theenvalue}%
}%
\begingroup
\def\next{#1}%
\newlinechar='40
\immediate\write\@enotes{\meaning\next}%
\endgroup
\immediate\write\@enotes{%
\@endanenote
}%
}%
\def\theendnotes{%
\immediate\closeout\@enotes
\global\@enotesopenfalse
\begingroup
\makeatletter
\edef\@tempa{\string>}%
\ifnum\catcode\@tempa=12
\let\@ResetGT\relax
\else
\edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
\@makeother\>%
\fi
\def\@doanenote##1##2##3>{%
\def\@theenmark{##1}%
\def\@theenvalue{##2}%
\par
\smallskip %<-small vertical gap between endnotes
\begingroup
\def\href{\expandafter\savedhref}%
\def\url{\expandafter\savedurl}%
\@ResetGT
\edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}%
\enoteformat
}%
\def\@endanenote{%
\par\endgroup
}%
% Redefine, how numbers are formatted in the endnotes-section:
\renewcommand*\@makeenmark{%
\hbox{\normalfont\@theenmark~}%
}%
% font-size of endnotes
\enotesize
\input{\jobname.ent}%
\endgroup
}%
\def\enoteformat{%
\rightskip\z@
\leftskip1.8em
\parindent\z@
\leavevmode\llap{%
\setcounter{Hendnote}{\@theenvalue}%
\refstepcounter{Hendnote}%
\expandafter\@secondoftwo
\else
\expandafter\@firstoftwo
\fi
{\@firstofone}%
{\makeenmark}%
}%
}%
% stop redefining portions of endnotes-package:
\makeatother
% Toggle switch in order to turn on/off back-links in the
% endnote-section:

Load it with the endnotes package (after hyperref) and enjoy.
Beware that hyperendnote.sty appears in at least two completely different versions on comp.text.tex, and one of them doesn't work as well as this one. –  Ryan Reich Jan 7 '11 at 19:26
@Seamus: Those hyperlinks have to come from somewhere (you were expecting them to come from endnotes; this is basically a reimplementation that does this). Also, in case it wasn't clear, you should copy all that code into a file (say, hyperendnotes.sty) and \input or \usepackage it. So no extra code goes into the actual document. –  Ryan Reich Jan 9 '11 at 9:18
It seems that this is not a biblatex issue. The hyperref` README states on page 18 that the endnotes package is "[u]nsupported".