如何使 hyperref 与包含冒号的 bibitem 键一起使用并使用 babel 法语选项?

如何使 hyperref 与包含冒号的 bibitem 键一起使用并使用 babel 法语选项?

如图所示此主题\cite,当所选语言为法语且 bibitem 键包含(这是 babel french 中的活动字符)时,该命令会出现错误:。事实上,相关的超链接始终指向第 1 页,而不是指向参考书目项目的锚点。

显然,这是一个错误hyperref,可以通过多种方式解决,例如:

  • \cite每一个都用\selectlanguage{english}...包围\selectlanguage{french}
  • 使用cite包(参见此回复
  • ETC。

对我来说,使用这个cite包似乎是迄今为止最简单、最优雅的解决方法。但如果我不能使用这个包并且仍然想要一个优雅的解决方案,你认为它会是什么?

答案1

这确实应该通过来解决hyperref,但这里有一个似乎有效的破解方法(对于冒号);但是​​,当babel-french涉及到时,最好的办法是不要在标签中使用冒号。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{etoolbox}
\usepackage{hyperref}

\makeatletter
% patch \hyper@link@ so \FDP@colonspace becomes innocuous
\patchcmd{\hyper@link@}{\begingroup}{\begingroup\def\FDP@colonspace{}}{}{}
\makeatother

\begin{document}

\cite{a:b}

\newpage

\begin{thebibliography}{1}

\bibitem{a:b} X

\end{thebibliography}

\end{document}

第 1 页的链接将指向参考书目项目。

相关内容