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