\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 啟動的字元)可能無法在標籤中使用。

相關內容