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

Zdenek Wagner zdenek.wagner at gmail.com
Tue May 21 13:38:44 CEST 2013


2013/5/21 Denis Bitouzé <dbitouze at wanadoo.fr>:
> 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:
>
This is an exact observation! The bug is in glossaries.sty at line 936
where babel.sty is loaded by \@@input and it is executed in the middle
of the document where catcode of @ is 12. If I respond by S, LaTeX
continues to run and reports a lot of other errors. Without thinking
why it is there (and in principle cannot work), I have just commented
this line out and it works.

>   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
>



--
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz



More information about the tex-live mailing list