我想在使用全局脚注计数器和 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
而不是,因为某种原因它会导致脚注消失。fbox
minipage
fbox
\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}