¿Cómo hacer que Hyperref funcione con claves bibitem que contienen dos puntos y usando la opción francesa de Babel?

¿Cómo hacer que Hyperref funcione con claves bibitem que contienen dos puntos y usando la opción francesa de Babel?

Como se vio eneste hilo, el \citecomando falla cuando el idioma seleccionado es francés y una clave bibitem contiene :un carácter activo en babel francés. De hecho, los hipervínculos en cuestión siempre hacen referencia a la página 1 en lugar del ancla al elemento de bibliografía.

Aparentemente, esto es un error hyperrefy se puede resolver de varias maneras, por ejemplo:

  • encerrando cada uno \citepor un \selectlanguage{english}...\selectlanguage{french}
  • utilizando elcite paquete (cf.esta respuesta)
  • etc.

Utilizando elcite paquete me parece la solución más simple y elegante hasta ahora. Pero ¿y si yono puedoUsa este paquete y aún quieres una solución elegante, ¿cuál crees que sería?

Respuesta1

Esto realmente debería resolverse con hyperref, pero aquí hay un truco que parece funcionar (para los dos puntos); sin embargo, lo mejor, cuando babel-frenchse trata, es no utilizar dos puntos en las etiquetas.

\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}

El enlace en la página 1 apuntará al elemento de bibliografía.

información relacionada