Hyperref 与 pagebackref 需要手动转义 URL 中的百分号

Hyperref 与 pagebackref 需要手动转义 URL 中的百分号

只要不使用该选项,参考书目项目中带有%20(代表空格)的 URL 就可以在该包中正常工作。如果使用该选项,Latex 会失败,并显示:hyperrefpagebackref

xxx.bbl:xx: Paragraph ended before \BR@@bibitem was complete,

即百分号不会自动转义,因此 URL 字段未正确终止。在 .bib 文件中使用反斜杠对其进行转义可以解决这个问题,但每次生成新的 .bib 文件时都需要手动操作。

还有其他方法可以解决这个问题吗?

梅威瑟:

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@MISC{refID,
  title="title",
  url = {http://www.somesite.com/8%20report}
  }
\end{filecontents}
\documentclass{article}
\usepackage[pagebackref=true]{hyperref}
\begin{document}
\cite{refID}
\bibliography{\jobname}
\bibliographystyle{IEEEtran} 
\end{document}

答案1

backref活动状态下,文件中的整个书目记录.bbl将被读取作为参数,因此所制作的类别代码技巧\url不起作用。

但是, bib 样式提供了在参考书目开始时执行的IEEEtran钩子;使用它将其变成可打印的字符。生成的文件不应该在后面有注释,至少就我所见是这样。\BIBdecl%.bbl\BIBdecl

\begin{filecontents*}{\jobname.bib}
@MISC{refID,
  title="title",
  url = {http://www.somesite.com/8%20report}
  }
\end{filecontents*}
\documentclass{article}
\usepackage[pagebackref=true]{hyperref}

\newcommand{\BIBdecl}{\catcode`\%=12 }

\begin{document}
\cite{refID}
\bibliography{\jobname}
\bibliographystyle{IEEEtran} 
\end{document}

在此处输入图片描述

相关内容