Проблемы с \Ref и babel (The Latex Companion, 3-е издание, стр. 78)

Проблемы с \Ref и babel (The Latex Companion, 3-е издание, стр. 78)

Только что купив третье издание The LaTeX Companion, я тестирую примеры, приведенные в книге. На стр. 78 пример рассматривает использование \labelformat и \Ref.

\documentclass[10pt,a4paper]{article}

\usepackage[nospace]{varioref}
%\usepackage{babel}

\labelformat{section}{section~#1}
\labelformat{equation}{equation~(#1)}

\begin{document}
\section{An example}\label{sec}
\Ref{sec} shows the use of the \verb=\labelformat= declaration with a reference to \ref{eq}.
\begin{equation} a = b \label{eq} \end{equation}  
\end{document}

если вы добавите

\usepackage{babel}

с любым языком вы получите

! Incomplete \iffalse; all text was ignored after line 11.

Если заменить \Ref на \ref, все снова будет работать нормально, но, очевидно, вы потеряете верхний регистр первой буквы.

Есть ли способ обойти эту несовместимость?

Я пробовал с [english]babel и [french]babel и babel без вариантов. Я пробовал с pdfLaTeX, LaTeX, XeLaTeX, LuaLaTeX ... та же проблема ...

Спасибо

решение1

Вам следует сообщить об этом, babelно быстрый способ решения проблемы — восстановить внутреннюю команду

\documentclass[10pt,a4paper]{article}

\usepackage[nospace]{varioref}

\makeatletter
\let\@kernel@ref@saved\@kernel@ref
\usepackage{babel}
\let\@kernel@ref\@kernel@ref@saved
\makeatother

\labelformat{section}{section~#1}
\labelformat{equation}{equation~(#1)}

\begin{document}
\section{An example}\label{sec}
\Ref{sec} shows the use of the \verb=\labelformat= declaration with a reference to \ref{eq}.
\begin{equation} a = b \label{eq} \end{equation}  
\end{document}

babelпереопределяет некоторые \label/ \refвнутренние так, чтобы активные символы сокращений работали, но это отменяет тот патч, который, кажется, сбивает с толку некоторыми \Refдеталями. Поэтому некоторые символы, такие как "те, которые активируются babel, могут не работать в метках после этого изменения.

Связанный контент