\Ref と babel の問題 (The Latex Companion 3rd edition p.78)

\Ref と babel の問題 (The Latex Companion 3rd edition p.78)

『The LaTeX Companion Third edition』を購入したばかりなので、本に載っている例をテストしています。p.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 に置き換えると、すべて正常に動作しますが、明らかに最初の文字の大文字化は失われます。

この非互換性を回避する方法はありますか?

[英語]babel、[フランス語]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/内部を再定義しますが、これにより、詳細の一部が混乱しているように見えるパッチが元に戻されます。そのため、 babel によってアクティブにされた一部の文字は、この変更後にラベルで機能しない可能性があります。\ref\Ref"

関連情報