コロンを含む bibitem キーで babel french オプションを使用して hyperref を動作させるにはどうすればよいですか?

コロンを含む bibitem キーで babel french オプションを使用して hyperref を動作させるにはどうすればよいですか?

ご覧の通りこのスレッド\cite選択された言語がフランス語で、bibitem キーに (:Babel フランス語でアクティブな文字)が含まれている場合、コマンドはバグになります。実際、関係するハイパーリンクは、参考文献項目へのアンカーではなく、常にページ 1 を参照します。

どうやらこれはhyperref、いくつかの方法で解決できます。例:

  • \citeそれぞれを囲む\selectlanguage{english}を...\selectlanguage{french}
  • パッケージの使用cite(cfこの返信

使用方法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 ページ目のリンクは参考文献項目を指します。

関連情報