表格中的 hyperref + 表格 + 脚注错误

表格中的 hyperref + 表格 + 脚注错误

代码如下:

\documentclass[12pt,letterpaper]{article}

\usepackage{array}

\newcommand{\fntxt}[1]{\footnotetext{#1}}
\newcommand{\fnstep}{\stepcounter{footnote}}
\newcommand{\fnmark}{\footnotemark}

\usepackage{hyperref}

\begin{document}

\begin{tabular}{| c | c |}
\hline
Test1\fnmark & Test2\fnmark \\ \hline
\end{tabular}

\addtocounter{footnote}{-1}
\fntxt{Footnote 1}
\fnstep
\fntxt{Footnote 2}

\end{document}

pdflatex点击了两次。问题是:(1) 当我点击第一个脚注时,我被“转移”到同一页面,而不是指向第一个脚注文本;(2) 当我点击第二个脚注时,我被正确地指向第二个脚注文本。

我也尝试在表格中添加两个以上的脚注。结果发现只有最后一个引用有效。

这背后的原因是什么?如何解决?

多谢。

答案1

对脚注的支持hyperref很容易被破坏;以下是hyperref文档中关于该hyperfootnotes选项的说明:

Makes the footnote marks into hyperlinks to the footnote text. Easily broken...

此主题压缩文本.tex,Heiko Oberdiek 说(指的是这里讨论的同一问题):

hyperref它超出了脚注支持的范围。因此,您可以禁用它:hyperfootnotes=false 或者您必须摆弄内部宏。

以下是他宣布的适合您特定情况的演奏方法(并通过示例进行说明):

\documentclass[12pt,letterpaper]{article}
\usepackage{hyperref}

\begin{document}

\makeatletter 
\begin{tabular}{cc}
Test1\footnotemark 
  \global\let\saved@Href@A\Hy@footnote@currentHref 
&
Test2\footnotemark 
  \global\let\saved@Href@B\Hy@footnote@currentHref 
\end{tabular}

\addtocounter{footnote}{-1}% 
\let\Hy@footnote@currentHref\saved@Href@A 
\footnotetext{Footnote text}% 
\addtocounter{footnote}{1}% 
\let\Hy@footnote@currentHref\saved@Href@B 
\footnotetext{Footnote text}% 

\makeatother

\end{document}

答案2

如果你可以在表格环境中使用表格,那么你可以使用表脚注打包并在表格中使用\tablefootnote{ ... }。(您也可以选择将表格居中并添加标题。)

\documentclass[12pt,letterpaper]{article}
\usepackage{array}
\usepackage{hyperref}
\usepackage{tablefootnote}
\begin{document}

\begin{table}
%\centering
\begin{tabular}{| c | c |}
\hline
Test1\tablefootnote{Footnote 1} & Test2\tablefootnote{Footnote 2} \\ \hline
\end{tabular}
%\caption{This is a table.\label{FirstTable}}
\end{table}

A pagebreak:

\pagebreak

and a second page, so that you can see that the hyperlinks really work.

\end{document}

相关内容