Как видно вэта тема, \cite
команда глючит, когда выбран французский язык и ключ bibitem содержит :
, который является активным символом в babel french. Действительно, соответствующие гиперссылки всегда ссылаются на страницу 1 вместо привязки к элементу библиографии.
По-видимому, это ошибка hyperref
, которую можно устранить несколькими способами, например:
- охватывая
\cite
каждый\selectlanguage{english}
...\selectlanguage{french}
- используя
cite
пакета (см.этот ответ) - и т. д.
Используя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 будет указывать на элемент библиографии.