在支持超链接的迷你页面内制作全局脚注

在支持超链接的迷你页面内制作全局脚注

我想在使用全局脚注计数器和 hyperref 包的小页面内制作脚注。

我无法让 hyperref 做出正确的引用。我想我需要更改 Hfootnote 计数器,但我没有成功,而且我不确定到底发生了什么。我尝试添加 \addtocounter{Hfootnote}{-1} 和 \stepcounter{Hfootnote},但没有帮助。

下面是一个简单的例子。

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\noindent\ldots{} main text\footnote{Before minipage} \ldots\par
\fbox{\begin{minipage}{.5\linewidth}
    A footnote to use global footnotes.\footnotemark
    A second global footnote.\footnotemark
\end{minipage}}
\addtocounter{footnote}{-1}
\footnotetext{First global footnote inside minipage}
\stepcounter{footnote}
\footnotetext{Second global footnote inside minipage}
\par
\noindent\ldots{} main text\footnote{After minipage} \ldots\par
\end{document}

单击小页面中的第一个脚注不会产生预期的结果。

答案1

我终于明白了!简而言之,Hyperref 的脚注功能很差劲。

谢谢Gonzalo Medina 对类似问题的回答我能够采用一种解决方法。我是 tex.stackechange 的新手,所以如果我能给予 Medina 更多信任,请告诉我怎么做。

下面是工作示例。

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\noindent\ldots{} main text\footnote{Before minipage} \ldots\par
\makeatletter
\fbox{\begin{minipage}{.5\linewidth}
    A footnote to use global footnotes.\footnotemark\global\let\saved@Href@A\Hy@footnote@currentHref
    A second global footnote.\footnotemark\global\let\saved@Href@B\Hy@footnote@currentHref
\end{minipage}}
\addtocounter{footnote}{-1}
\let\Hy@footnote@currentHref\saved@Href@A 
\footnotetext{First global footnote inside minipage}
\stepcounter{footnote}
\let\Hy@footnote@currentHref\saved@Href@B
\footnotetext{Second global footnote inside minipage}
\makeatother
\par
\noindent\ldots{} main text\footnote{After minipage} \ldots\par 
\end{document}

答案2

我认为我找到了一个更清晰的解决方案,但我不得不使用+mdframed而不是,因为某种原因它会导致脚注消失。fboxminipagefbox

\documentclass{article}

\usepackage{mdframed}
\usepackage{footnotehyper}
% Make mdframed pushes all footnotes to the end of the page
\makesavenoteenv{mdframed}
\usepackage{hyperref}
% Fix \footnotetext inside boxes causing numbers to disappear at the end of the page
\let\thempfootnote\thefootnote

\begin{document}
\noindent\ldots{} main text\footnote{Before minipage} \ldots\par

\begin{mdframed}[userdefinedwidth=0.5\linewidth]
A footnote to use global footnotes.\footnotemark
\footnotetext{First global footnote inside minipage}
A second global footnote.\footnotemark
\footnotetext{Second global footnote inside minipage}
\end{mdframed}

\par
\noindent\ldots{} main text\footnote{After minipage} \ldots\par
\end{document}

相关内容