[tex-live] Babel: You can't use `spacefactor' in vertical mode. (Maybe related to glossaries package.)

Denis Bitouzé dbitouze at wanadoo.fr
Tue May 21 11:27:38 CEST 2013


Le mardi 21/05/13 à 10h09,
Zdenek Wagner <zdenek.wagner at gmail.com> a écrit :

> Yes, there was one complaint

Indeed, here:

  http://tug.org/pipermail/tex-live/2013-May/033531.html

> and it seems to me that the source of the
> bug is not in babel itself. Line 54 is the first occurence of a macro
> with a "protected" name, namely \@ifpackawith. This is correct and
> LaTeX should understand it because at the time of processing
> \usepackage the catcode of @ is set to 11. I have seen just the log
> file, not the sources, and the log file clearly revealed that babel
> was successfully loaded by usepackage but then loaded again by \input
> in the middle of a document. The author claims he does not do it but
> as my experience says, improper use of a fragile macro can force LaTeX
> to read a file although the user does not wish it. I therefore suspect
> a weird clash between packages. If you can send me the document, I
> will try to find the source of the problem.

Here is a MCE that shows that the error is probably related to
glossaries, hence Nicola in Cc: Nicola, the complete thread can be read
here:

  http://tug.org/pipermail/tex-live/2013-May/033603.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[xindy]{glossaries}
%
\makeglossaries
\newacronym{ar}  {AR}  {anti-reflection}
%
\begin{document}
\gls{ar}
\newpage
\printglossary
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Note that:

1. The error is:

! You can't use `spacefactor' in vertical mode.
@->spacefactor
               @m
l.54 \@
       ifpackagewith{babel}{debug}
?
! Missing $ inserted.
<inserted text>
                $
l.54 \@
       ifpackagewith{babel}{debug}
?
Runaway argument?
switch.defrelax fi def bbl @for##1##2##3{@for##1:=##2do {ifx
##1 at emptETC. ! Paragraph ended before stripldf was complete.
<to be read again>
                   par
l.160

[...]

2. It appears with (an up to date) 2013 TL but not with TL 2012.

3. If \newpage is removed, the "spacefactor" error is dropped and only
the subsequent one appears:

(/usr/local/texlive/2013/texmf-dist/tex/generic/babel/babel.sty
Runaway argument?
switch.defrelax fi def bbl @for##1##2##3{@for##1:=##2do {ifx
##1 at emptETC. !
Paragraph ended before stripldf was complete.
<to be read again>
                   par

4. If "xindy" glossaries option is removed, there are no more errors
from second run (reinserting "xindy" option make the errors reappear
from second run).

Cheers.
-- 
Denis



More information about the tex-live mailing list