[tex-live] clash between babel (french), hyperref and \cite on keys with a colon character

jfbu jfbu at free.fr
Mon Sep 22 17:07:03 CEST 2014


The bug is, I think, more in hyperref. There is a Babel mechanism for labels and references to work, independently of whether the character is a shorthand or not.

References to bib items are correctly generated, but the hyperlinks fail. Here is a patch which appears to fix it.

Warning: this is just a shot in the dark; perhaps this patch is wrong and generate bad things in other contexts. An hyperref expert would be required here.

% 

\documentclass{article}
\usepackage[french,english]{babel}
\usepackage{hyperref}

\usepackage{etoolbox}

\makeatletter
\patchcmd {\hyper at link@}{\edef \Hy at tempb {#3}}
             {\Hy at safe@activestrue\edef \Hy at tempb {#3}%
              \Hy at safe@activesfalse}{}{}%

\makeatother

\begin{document}

\selectlanguage{french}
French

\cite{foo:bar} (foo:bar), \cite{bar:foo} (bar:foo)

\selectlanguage{english}
English

The following  references work:
 (although : is active, catcode=\the\catcode`\:):

\cite{foo:bar} (foo:bar), \cite{bar:foo} (bar:foo)
\clearpage

\selectlanguage{english}
\begin{thebibliography}{1}
\bibitem{foo:bar} Foo bar.
\bibitem{bar:foo} Bar foo.
\end{thebibliography}

\end{document}


Le 22 sept. 2014 à 15:44, Vincent Lefevre <vincent at vinc17.net> a écrit :

> There's a clash between babel (french), hyperref and \cite on keys
> with a colon character. This can be seen on:
> 
> ----------------------------------------------------------------------
> \documentclass{article}
> \usepackage[french,english]{babel}
> \usepackage{hyperref}
> 
> \begin{document}
> 
> The following link does not work due to the space before the colon,
> added by babel in French:
> \selectlanguage{french}
> \cite{foo:bar} (foo:bar)
> 
> The following link works:
> \selectlanguage{english}
> \cite{foo:bar} (foo:bar)
> 
> \newpage
> 
> \selectlanguage{english}
> \begin{thebibliography}{1}
> \bibitem{foo:bar} Foo bar.
> \end{thebibliography}
> 
> \end{document}
> ----------------------------------------------------------------------
> 
> This should really be fixed without requiring the user to use some
> workaround. For instance, couldn't babel redefine \cite to locally
> make the behavior like in English?
> 
> This bug is particularly annoying since using colons in bib keys
> seems to be common.
> 
> -- 
> Vincent Lefèvre <vincent at vinc17.net> - Web: <https://www.vinc17.net/>
> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)




More information about the tex-live mailing list