下面是一个编译失败的示例:
! 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
模块文档了解更多信息。