I’m using the following technique for having multiple references to the same footnote, with hyperref, combining advice from its documentation and several posts here:
\newcommand{\Hair}{\kern.16667em}
[…]
Falls hierbei Fehler auftauchen prüfen Sie […] die
Logs\Hair\textsuperscript{\ref{fn:tomcatlogs}}.
[…]
Prüfen Sie ggfs. die Logausgaben\Hair\footnote{\label{fn:tomcatlogs}in
\texttt{/var/log/tomcat7/catalina.out}}, […]
As you can see, this makes it easily possible to reference a footnote multiple times once it has been defined anywhere in the document, even later. This is important because footnotes cannot be defined (with \footnote) inside tables or minipages.
Now, I thought I could simply define the body of a footnote with a line like this:
\stepcounter{footnote}\footnotetext{\label{fn:foo}foobar}%
Unfortunately, while referencing this footnote inside a table works, it’s not hyperlinked because hyperref only applies to \footnote but not the split \footnotemark + \footnotetext. So, what we really want is to call \footnote but not render its output.
Easier said than done. But we can temporarily redefine the command that actually sets the mark into the text – \@makefnmark – to nothing. That works, but it requires a paragraph or it will create one, so you would have to do something like:
[…]
\end{tabular}
Some paragraph here.\hyperfootnotetext{\label{fn:foo}foobar}\hyperfootnotetext{…}
As you can see, that quickly becomes illegible, especially with multiple of them. So I tried to temporarily prevent leaving vmode… except, the code still tries to set the (empty) fnmark as hyperlink to the footnote, which only works in horizontal mode. Meh. At this point I was about to call it a day…
… except I found out that we can temporarily prevent setting hyperlinks, too, without giving up the ability to link from a footnote to another.
SSCCE
This example shows how to use footnotes from tables, multiple times, with hyperlinks to the footnotes as well as hyperlinks in the footnotes themselves, with the ability to declare those footnotes outside of any paragraphs:
\documentclass{scrartcl}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\usepackage{mwe}
\RequirePackage[pdftex]{hyperref}
\hypersetup{
colorlinks = true,
linkcolor = blue,
urlcolor = blue,
}
% em dash
\def\dash{\unskip\kern.16667em\textemdash\penalty\exhyphenpenalty\hskip.16667em\relax}
% for footnotes
\newcommand{\Hair}{\kern.16667em}
\makeatletter%
% \hyperfootnotetext is what \footnotetext is supposed to be:
% like \footnote except not rendering anything (it will not
% generate a paragraph if you append % to all lines)
\newcommand\hyperfootnotetext[1]{%
% new local scope
{%
% temporarily redefine this macro to empty
\renewcommand{\@makefnmark}{}%
% temporarily prevent leaving vmode
\renewcommand{\leavevmode}{}%
% this also means we cannot create a(n empty) hyperlink
\renewcommand{\hyper@linkstart}[2]{}%
\renewcommand{\hyper@linkend}{}%
% call the original \footnote macro
\footnote{#1}%
% exit the local scope with the redefined macro
}%
% end of command
}%
\makeatother%
\begin{document}
\section{First page}\label{sec:first}
These are the system requirements:
\begin{tabular}{| r || l | l | l |}\hline
& minimum & recommended & maximum\\\hline\hline
Operating System & Debian 7 & Debian 7 or 8 & Debian unstable\Hair\textsuperscript{\ref{fn:req-nolimit}}\\\hline
Webserver & Apache 2.2 & Apache 2.2 & Apache 2.4\Hair\textsuperscript{\ref{fn:req-notmore}}\\\hline
Java Runtime & OpenJDK 7 & OpenJDK 8 & OpenJDK 8\Hair\textsuperscript{\ref{fn:req-notmore}}\\\hline
Application Server & Tomcat 7 & Tomcat 7 & Tomcat 7\Hair\textsuperscript{\ref{fn:req-nonewer}}\\\hline
\end{tabular}
% note no paragraph here before next section!
\hyperfootnotetext{\label{fn:req-nolimit}%
no practical limitation}%
\hyperfootnotetext{\label{fn:req-notmore}%
newer versions were not tested\Hair\textsuperscript{\ref{fn:didnot}}}%
\hyperfootnotetext{\label{fn:req-nonewer}%
newer versions do \emph{not} work!}%
\section{Second half}\label{sec:second}
Page break upcoming.
\newpage
Some systems were not tested\Hair\footnote{\label{fn:didnot}… or
did not exist at the time of this writing}.
\end{document}
Application note: you will most likely have your \hyperfootnotetext calls directly below the table (unless you’re re-using a footnote defined elsewhere) to get them ideally placed on the same page.
Side note: originally I had my \hyperfootnotetext reimplement the original \footnote except inlining \@footnotemark minus its \@makefnmark call… this would have gotten old quick… finally I found you can temporarily redefine commands inside other commands for their duration only. (I don’t understand yet why setting hyperlinks inside footnote texts still works in my example, but I’m happy about that.)
ObNote: this ought to work for minipages, too.