如何讓 hyperref 使用包含冒號的 bibitem 鍵並使用 babel french 選項?

如何讓 hyperref 使用包含冒號的 bibitem 鍵並使用 babel french 選項?

如所見這個線程\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 頁的連結將指向參考書目項目。

相關內容