my goal:
I want my equation tags to function as clickable links to endnotes, where the latters' counters should look exactly like the equation tags they refer to (e.g. if the equation tag was (1.2), then so should be the counter before the endnote text).
my efforts so far:
To my knowledge, I have two main options as regards endnotes: 'endnotes' and 'enotez'. My first try was with 'endnotes', where I included the following hack I found in the inet to make 'endnotes' comply with 'hyperref':
Code: Select all
%%% hyperendnotes.sty
\makeatletter
\newif\ifenotelinks
\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
\ifenotelinks
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi
{%
\Hy@raisedlink{%
\hyper@@anchor{Hendnotepage.\@theenvalue}{\empty}%
}%
}%
\hyper@linkstart{link}{Hendnote.\@theenvalue}%
\makeenmark
\hyper@linkend
\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~}%
}%
% header of endnotes-section
\enoteheading
% font-size of endnotes
\enotesize
\input{\jobname.ent}%
\endgroup
}%
\def\enoteformat{%
\rightskip\z@
\leftskip1.8em
\parindent\z@
\leavevmode\llap{%
\setcounter{Hendnote}{\@theenvalue}%
\addtocounter{Hendnote}{-1}%
\refstepcounter{Hendnote}%
\ifenotelinks
\expandafter\@secondoftwo
\else
\expandafter\@firstoftwo
\fi
{\@firstofone}%
{\hyperlink{Hendnotepage.\@theenvalue}}%
{\makeenmark}%
}%
}%
% stop redefining portions of endnotes-package:
\makeatother
% Toggle switch in order to turn on/off back-links in the
% endnote-section:
\enotelinkstrue
%\enotelinksfalse
Now comes my minimal example with 'endnotes':
Code: Select all
\documentclass{article}
\usepackage[backref = page, hyperfootnotes, colorlinks = true, linkcolor = blue]{hyperref}
\usepackage{endnotes}
\usepackage{hyperendnotes} % Hack für 'endnotes' obendrüber
\usepackage{mathtools}
\numberwithin{equation}{section}
\numberwithin{endnote}{section}
\usepackage{lastpage}
\newcommand\notelink[1]{\hyperref[LastPage]{(#1)}}
\newtagform{notetag}[\notelink]{}{}
\usetagform{notetag}
\renewcommand\notesname{Formula Sources \vspace{.25cm}}
\renewcommand\makeenmark{(\theenmark)\hspace{.15cm}}
\begin{document}
\begin{section}{Weltgleichung}
\begin{equation} \refstepcounter{endnote} \endnotetext{Weltgleichung I }
a + b = c
\end{equation}
\newpage
\begin{equation} \refstepcounter{endnote} \endnotetext{Weltgleichung II}
1 + 2 = 3
\end{equation}
\end{section}
\clearpage
\theendnotes
\end{document}
- I) The equation tags link to the page containing the endnotes, but not the endnotes themselves (not so important).
II) The endnote backlinks do not refer back to the equations where their endnote texts were defined (very bad).
Code: Select all
\documentclass{article}
\usepackage[hyperfootnotes, colorlinks = true, linkcolor = blue]{hyperref}
\usepackage[backref]{enotez}
\renewcommand\enotezwritemark[1]{}
\usepackage{mathtools}
\numberwithin{equation}{section}
\usepackage{lastpage}
\newcommand\notelink[1]{\hyperref[LastPage]{(#1)}}
\newtagform{notetag}[\notelink]{}{}
\usetagform{notetag}
\renewcommand*\enmark[1]{#1}
\DeclareInstance{enotez-list}{plain}{paragraph}{number = (\enmark{#1})}
\begin{document}
\begin{section}{Weltgleichung}
\begin{equation} \endnote{Weltgleichung I}
a + b = c
\end{equation}
\end{section}
\newpage
\begin{section}{Weltgleichung zum Zweiten}
\begin{equation} \endnote{Weltgleichung II}
1 + 2 = 3
\end{equation}
\end{section}
\clearpage
\printendnotes
\end{document}
After consultation with package maintainer Clemens Niederberger this is not a trivial problem to solve since 'enotez' does not employ a LaTeX counter but a 'expl3 int variable' named '\g__enotez_endnote_mark_int' (no idea why). Hence, I am totally clueless how to change this.
Can someone come up with an elegant solution to this? Otherwise, I would need to dive deep into the intestines of TeX, which I would like to avoid.
Thank you and best regards,
bodhisat