![pdflatex 警告 manyfoot 和 hyperref,但在 xelatex 中不存在](https://linux22.com/image/398411/pdflatex%20%E8%AD%A6%E5%91%8A%20manyfoot%20%E5%92%8C%20hyperref%EF%BC%8C%E4%BD%86%E5%9C%A8%20xelatex%20%E4%B8%AD%E4%B8%8D%E5%AD%98%E5%9C%A8.png)
下面的代码
\documentclass{report}
\usepackage{manyfoot}
\DeclareNewFootnote{R}[alph]
\usepackage{hyperref}
\begin{document}
The default\footnote{Default} footnote works fine, but
manyfoot\footnoteR{Many foot} with pdflatex throws a warning. xelatex
run on the same code also does not throw a warning!
\end{document}
使用 pdflatex 编译时会引发警告
pdfTeX 警告(目标):名称{Hfootnote.2} 已被引用但不存在,已由固定名称替换
类似的问题这里。但是,将 hyperref 作为最后一个包加载的解决方案在存在的情况下仍然会抛出错误曼尼福特。 A建议包括 hyperfootnote=false,可以识别来源,但是在需要超链接时并不是一个解决方案。
奇怪的是,如果使用 xelatex 运行代码,则不会出现任何警告,并且会生成 PDF,并且链接可以正常工作。
我们如何使用 pdflatex 编译器来抑制警告,同时保持超链接处于活动状态?
以下是供快速参考的输出图像:
答案1
您可以尝试添加这样的目标目的地:
\documentclass{report}
\usepackage{manyfoot}
\usepackage{etoolbox}
\makeatletter
\newcommand\manyfoottarget{\makebox[0pt][r]{\hypertarget{Hfootnote.\theHfootnote}\quad}}
\patchcmd\MFL@fnoteplain{\rule}{\manyfoottarget\rule}{}{\fail}
\makeatother
\usepackage{hyperref}
\DeclareNewFootnote{R}[alph]
\begin{document}
The default\footnote{Default}works fine, but
manyfoot\footnoteR{Many Foot} with pdflatex throws a warning. xelatex
run on the same code also does not throw a warning!
\end{document}