软件包 [francais]{babel} 与 refcheck 不兼容

软件包 [francais]{babel} 与 refcheck 不兼容

下面是一个编译失败的示例:

  ! Missing \endcsname inserted.  
  <to be read again>  
                     \penalty   
  l.10 On identifie \ref{eq:xx}  

只需一行\usepackage[francais]{babel}或一行,它就可以顺利编译并给出 我期望的
\usepackage{refcheck}结果。

注意:我曾使用过,\usepackage[T1]{fontenc}因为只有
\usepackage[francais]{babel}(和没有\usepackage{refcheck}),我
得到了类似这样的结果:

  Package frenchb.ldf Warning: OT1 encoding should not be used for French.  
  (frenchb.ldf)                Add \usepackage[T1]{fontenc} to the preamble  
  (frenchb.ldf)                of your document, on input line 7.  

但是,无论我是否有这个\usepackage[T1]{fontenc},我都会看到
相同的\endcsname错误,并且
如果使用重复的 [enter] 键强制编译,则始终会出现相同的 - 不正确的 - 输出 dvi 文件。

我也尝试改变序言中各行的顺序。

我可以在两个系统上进行测试:

Linux frac 3.18.7-200.fc21.x86_64 #1 SMP Wed Feb 11 21:53:17 UTC 2015  
x86_64 x86_64 x86_64 GNU/Linux

Linux fric 2.6.32-504.8.1.el6.i686 #1 SMP Wed Jan 28 18:25:26 UTC 2015  
i686 i686 i386 GNU/Linux

我做错了什么吗? 有解决方法吗?

谢谢。

\documentclass{article} 

\usepackage[T1]{fontenc}\usepackage[francais]{babel}
\usepackage{refcheck}

\begin{document}

\begin{equation}\label{eq:xx} x=3 \end{equation}
On identifie \ref{eq:xx}.

\end{document}

答案1

这种问题在 的法语选项中经常发生babel:它激活一些标点符号 (; : ? !),以便在它们之前插入适当的空格,遵循法语排版规则。但是它会触发其他软件包的一些错误,最臭名昭著的是tikz-pgf,显然refcheck也是如此。

作为一种解决方法,frenchb模块的维护者 Daniel Flipobabel建议将命令放入\NoAutoSpacing包含有问题部分的 TeX 组中,如下所示:

\documentclass{article} 

\usepackage[T1]{fontenc}
\usepackage[french]{babel} % `french` now preferable to `francais` or `frenchb`, D. Flipo tells us
\usepackage{refcheck}

\begin{document}
\begin{equation}
    \NoAutoSpacing
    \label{eq:xx} x=3 
\end{equation}
On identifie {\NoAutoSpacing\ref{eq:xx}}.

\end{document}

当然,这是一个通用的解决方案,并且在这种精确情况下,最好避免:使用标签名称,正如 egreg 和 Bernard 建议的那样!:-)

查看frenchb模块文档了解更多信息。

相关内容