我在数学模式的显示样式中使用方程内的footnotemark
和footnotetext
。我已经知道,为了使其工作,您需要在环境外部写入,但问题是我在环境中footnotetext
有多个,但每个都认为它链接到最后一个。我尝试在每个中指定数字,但这似乎只会改变显示的数字,而不是链接到相应标记。我也尝试过修改出现之前的计数器,但同样,这只会改变显示的数字!footnotemark
footnotetext
footnotemark
footnotetext[n]
footnotemark
footnote
footnotetext
例如,
\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage[spanish]{babel}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{mathrsfs}
\usepackage[shortlabels]{enumitem}
\usepackage{relsize}
\usepackage{marvosym}
\usepackage{graphicx}
\graphicspath{ {./images/} }
\usepackage[official]{eurosym}
\usepackage[hang]{footmisc} % used only for hanged style
\usepackage{fnpct}% fix multiple footnotes separator
\usepackage[colorlinks=true]{hyperref}% hyperlinks to footnotes
\hypersetup{allcolors=blue}
\usepackage{footnotebackref}% hyperlinks to text, loads hyperref
\title{Super lorem ipsum}
\author{}
\date{}
\setlength{\parskip}{10pt plus 1pt minus 1pt}
\renewcommand{\baselinestretch}{1.2}
\makeatletter
\LetLtxMacro{\BHFN@Old@footnotemark}{\@footnotemark}
\renewcommand*{\@footnotemark}{%
\refstepcounter{BackrefHyperFootnoteCounter}%
\xdef\BackrefFootnoteTag{bhfn:\theBackrefHyperFootnoteCounter}%
\label{\BackrefFootnoteTag}%
\BHFN@Old@footnotemark}
\makeatother
\makeatletter
\renewcommand\@makefntext[1]{%
\renewcommand\@makefnmark{%
\mbox{{\normalfont%
\hyperref[\BackrefFootnoteTag]{\@thefnmark}}}.}%
\BHFN@OldMakefntext{#1}}%
\makeatother
\begin{document}
\maketitle
\[1=1\footnotemark\Rightarrow 2=2\footnotemark\Rightarrow 3=3\footnotemark\]
\footnotetext{This should be linked to 1=1}
\footnotetext{This should be linked to 2=2}
\footnotetext{This is linked, along with the other footnotes, to 3=3}
\end{document}
有没有办法指定或更改标记计数器,以便将 的第一个实例footnotetext
链接到环境中 的第一个实例?如果需要的话,footnotemark
我愿意对 的每个实例都这样做!提前祝你好运。footnotetext
答案1
\footnotemark
好吧,和之间的脚注链接\footnotetext
很难 ;-)。只要你有一排\footnotemark
超链接,名字就会松散。
您可以尝试使用某种明确的标签:
\documentclass{article}
\usepackage{hyperref}
\usepackage{lipsum}
\makeatletter
\ExplSyntaxOn
\newcommand\storefnmark[1]
{
\tl_new:c{g__darsen_fnmark.#1_tl}%
\tl_gset:cx{g__darsen_fnmark.#1_tl}{{\Hy@footnote@currentHref}{\int_use:N\c@footnote}}
}
\newcommand\restorefnmark[1]
{
\tl_gset:Nx\Hy@footnote@currentHref
{\exp_last_unbraced:Nv\use_i:nn {g__darsen_fnmark.#1_tl}}
\setcounter{footnote}{\exp_last_unbraced:Nv\use_ii:nn {g__darsen_fnmark.#1_tl}}
}
\ExplSyntaxOff
\makeatother
\begin{document}
\footnote{a}\quad \footnotemark\storefnmark{b}\quad \footnotemark\storefnmark{c}
\lipsum[1]
\footref{fn:b}
\restorefnmark{b}\footnotetext{\label{fn:b}b}%
\restorefnmark{c}\footnotetext{c}
\end{document}
作为替代方案,您可以尝试新的输出例程代码,它会尝试自动跟踪。但请注意,它还不兼容所有东西(例如,它目前会因 footmisc 的挂起选项而出错):
\DocumentMetadata{testphase={new-OR}}
\documentclass{article}
\usepackage{hyperref}
\usepackage{lipsum}
\begin{document}
\footnote{a}\quad \footnotemark\quad \footnotemark
\lipsum[1]
\footref{fn:b}
\addtocounter{footnote}{-1}\footnotetext{\label{fn:b}b}%
\stepcounter{footnote}\footnotetext{c}
\end{document}
我没有尝试使用您的 backref 代码,我个人不建议这样做。它无法处理与脚注相关的多个标记的情况。最好使用 pdf 查看器的按键返回。