脚注可以通过\footnotemark
在脚注中放置 ,然后添加随附的 来添加脚注\footnotetext
。但是,只有单身的脚注可以放在脚注内,因为脚注计数器不同步.这个问题是解决了,但解决方案结果与\hyperref
包不兼容(尽管hyperfootnotes
在\usepackage{hyperref}
声明中禁用)。
下面的 MWE 证明了这种不兼容性。
\documentclass[10pt]{article}
% comment the below line to resolve the footnote numbering problem
\usepackage[colorlinks=true,urlcolor=red,hyperfootnotes=false]{hyperref}
% solution proposed by Werner (begin)
\usepackage{letltxmacro}
\newcounter{fnmarkcntr}\newcounter{fntextcntr}
\makeatletter
\renewcommand{\footnotemark}{%
\@ifnextchar[\@xfootnotemark
{\stepcounter{fnmarkcntr}%
\refstepcounter{footnote}\label{footnotemark\thefnmarkcntr}%
\protected@xdef\@thefnmark{\thefootnote}%
\@footnotemark}}
\makeatother
\LetLtxMacro{\oldfootnotetext}{\footnotetext}
\renewcommand{\footnotetext}[1]{%
\stepcounter{fntextcntr}%
\oldfootnotetext[\ref{footnotemark\thefntextcntr}]{#1}
}
% solution proposed by Werner (end)
\begin{document}
This text has a footnote\footnote%
{Which contains a sub-footnote\footnotemark}
\footnotetext{This footnote should be labeled `2'}
\end{document}
下面显示的是删除命令后的上述代码的输出\usepackage{hyperref}
。
下面显示的是错误包含命令的上述代码的输出\usepackage{hyperref}
。
请注意,包含该hyperref
软件包会导致嵌套脚注的编号不正确(0 而不是 2),并且footnotemark
文本正文中会出现不需要的脚注(尽管编号正确)(它应该放在脚注中)。这个不需要的脚注footnotemark
被错误地超链接了。
答案1
你可能想(滥用)使用表脚注包裹:
\documentclass{article}
\usepackage{tablefootnote}[2011/11/26]% v1.0e
\makeatletter
\newcommand{\spewnotes}{%
\tfn@tablefootnoteprintout%
\global\let\tfn@tablefootnoteprintout\relax%
\gdef\tfn@fnt{0}%
}
\makeatother
\usepackage{hyperref}
\begin{document}
This is a footnote\footnote{Here is a footnote within the footnote%
\tablefootnote{This footnote should be labeled `2'}. %
And here is another one\tablefootnote{This footnote should be labelled `3'}.}%
\spewnotes{}. Text\footnote{Another footnote%
\tablefootnote{This footnote should be labelled `5'}. %
And here is another one\tablefootnote{This footnote should be labelled `6'}}\spewnotes{}.
\newpage
Some text (which is necessary to get two pages,
thus one can choose continuous view of the pdf-file and then check
that the hyperreferences indeed aim to the correct point.
\end{document}
您只需要确保 '\footnote{...}' 和 之间没有分页符\spewnotes
,否则喷出的脚注将在第二页结束。(我没有测试当您使用与tablefootnote
脚注位于同一页的表格时会发生什么,但在不太可能发生的情况下,可以处理该问题。)
答案2
如果您将\ref
Werner 的答案中的\getrefnumber
从它refcount
使用的包中更改为hyperref
(如果hyperfootnote=false
没有传递,则会出现有关footnotemark
无处可去的链接的警告)。
\documentclass[10pt]{article}
\usepackage[colorlinks=true,urlcolor=red,hyperfootnotes=false]{hyperref}
% modified solution by Werner (begin)
\usepackage{letltxmacro}
\usepackage{refcount}
\newcounter{fnmarkcntr}\newcounter{fntextcntr}
\makeatletter
\renewcommand{\footnotemark}{%
\@ifnextchar[\@xfootnotemark
{\stepcounter{fnmarkcntr}%
\refstepcounter{footnote}\label{footnotemark\thefnmarkcntr}%
\protected@xdef\@thefnmark{\thefootnote}%
\@footnotemark}}
\makeatother
\LetLtxMacro{\oldfootnotetext}{\footnotetext}
\renewcommand{\footnotetext}[1]{%
\stepcounter{fntextcntr}%
\oldfootnotetext[\getrefnumber{footnotemark\thefntextcntr}]{#1}
}
% modified solution by Werner (end)
\begin{document}
This text has a footnote\footnote%
{Which contains a sub-footnote\footnotemark}
\footnotetext{This footnote should be labeled `2'}
\end{document}