\Ref 和 babel 的问题 (The Latex Companion 第三版第 78 页)

\Ref 和 babel 的问题 (The Latex Companion 第三版第 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,但都没有选择。我尝试过 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内部函数,以便活动简写字符可以工作,但这会撤销该补丁,因为补丁似乎对某些细节感到困惑 。因此,一些由 babel 激活的\Ref字符在进行此更改后可能无法在标签中使用。"

相关内容