我习惯footnotebackref
在脚注标记和脚注文本之间建立链接和反向链接。但下面的示例产生了此错误:
! Undefined control sequence.
<argument> \BackrefFootnoteTag
l.5 \footnotetext{My note.}
我的示例文档是:
\documentclass{book}
\usepackage{footnotebackref}
\begin{document}
Some text\footnotemark.
\footnotetext{My note.}
\end{document}
笔记:
以下代码运行时没有错误(但第二个反向链接链接到第一个注释)。
\documentclass{book}
\usepackage{footnotebackref}
\begin{document}
Prenote\footnote{First note}.
\newpage
Some text\footnotemark.
\footnotetext{My note.}
\end{document}
答案1
在 中footnotebackref
,仅\footnote
修补了设置唯一的引用和标签,而还有其他用于设置脚注的用户命令,例如\footnotemark
您正在使用的命令。
下面,我还将该补丁添加到\@footnotemark
(请注意@
),我相信所有可能的用户命令都会调用它来设置脚注。请注意,使用补丁(因为我没有从命令中删除相同的代码\footnote
),调用的脚注\footnote
将获得两个标签,但这应该不是问题,因为标签不可见,只有超链接。
\documentclass{book}
\usepackage{footnotebackref}
\makeatletter
\LetLtxMacro{\BHFN@Old@footnotemark}{\@footnotemark}
\renewcommand*{\@footnotemark}{%
\refstepcounter{BackrefHyperFootnoteCounter}%
\xdef\BackrefFootnoteTag{bhfn:\theBackrefHyperFootnoteCounter}%
\label{\BackrefFootnoteTag}%
\BHFN@Old@footnotemark
}
\makeatother
\begin{document}
Some text\footnotemark.
\footnotetext{My note.}
\end{document}
答案2
好的,这是解决问题的快速尝试。它还处理了包选项。
\makeatletter
\LetLtxMacro{\BHFN@OldFootnotemark}{\footnotemark}
\LetLtxMacro{\BHFN@OldFootnotetext}{\footnotetext}
\renewcommand*\footnotemark{%
\refstepcounter{BackrefHyperFootnoteCounter}%
\edef\BackrefFootnoteTag{bhfn:\theBackrefHyperFootnoteCounter}%
\label{\BackrefFootnoteTag}%
\@ifnextchar[\Backref@OptHyperFootnotemark\Backref@HyperFootnotemark}
\newcommand\Backref@HyperFootnotemark{%
\BHFN@OldFootnotemark}
\newcommand\Backref@OptHyperFootnotemark[1]{%
\BHFN@OldFootnotemark#1}
\renewcommand*\footnotetext{%
\@ifnextchar[\Backref@OptHyperFootnotetext\Backref@HyperFootnotetext}
\newcommand\Backref@HyperFootnotetext[1]{%
\BHFN@OldFootnotetext{\Backref@HyperSymbol#1}}
\newcommand\Backref@OptHyperFootnotetext[2][\empty]{%
\BHFN@OldFootnotetext[#1]{\Backref@HyperSymbol#2}}
\makeatother
请记住,此命令不能影响其他包或环境的行为。我不知道其他包如何改变\footnotemark
和的含义\footnotetext
。我总是尽量避免在我的文档中使用此命令。如果您想在表格中使用脚注,只需尝试tablefootnotes
@Stephen的包。这个包涉及footnotebackref
。也许这对你来说也很有趣:可点击的表格脚注。
答案3
看起来该包footnotebackref
破坏了命令的直接使用 \footnotemark/\footnotetext
。以下内容编译时没有错误:
\documentclass{book}
\usepackage{footnotebackref}
\edef\BackrefFootnoteTag{bhfn:\theBackrefHyperFootnoteCounter}%
\begin{document}
Some text\footnotemark.
\footnotetext{My note.}
Some further text\footnote{My second note}.
\end{document}
但只有第二个脚注创建了反向引用。