7

With:

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}

You get:

! Missing \endcsname inserted.
<to be read again> 
                   \protect 
l.6 \end
        {document}
? 

The suggestions here do not work around the problem.

1
  • One remark: I would define the language definitions as class options. They are forwarded to the packages, so each package (not only babel) will get the language. Or in other words: languages are document specific, not babel specific. This comment doesn't change anything for your problem.
    – knut
    Mar 24, 2012 at 9:32

1 Answer 1

10

Hebrew babel redefines all the counter representation mechanism and lipsum relies on \roman for its inner workings.

You can change a macro in lipsum:

\usepackage{lipsum}
\makeatletter
\renewcommand\lips@dolipsum{%
  \ifnum\value{lips@count}<\lips@max\relax
    \addtocounter{lips@count}{1}%
    \csname lipsum@\romannumeral\c@lips@count\endcsname
    \lips@dolipsum
  \fi
}
\makeatother

so that it uses the primitive way of converting numbers to roman numerals.

Or you can use the similar kantlipsum package that doesn't suffer from the problem to begin with. (Disclaimer: I'm the author of kantlipsum.)

3
  • 3
    ..or blindtext (Disclaimer: I'm the author of blindtext ;) )
    – knut
    Mar 24, 2012 at 9:29
  • Note to future readers: Changes to lipsum over the years have invalidated this workaround - but with newer TeX distribution, the original issue may be gone as well.
    – einpoklum
    Mar 7, 2020 at 9:39
  • @einpoklum Yes, now lipsum uses expl3 and no longer relies on \roman.
    – egreg
    Mar 7, 2020 at 9:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .