View Issue Details

IDProjectCategoryView StatusLast Update
0000437luatexluatex bugpublic2010-09-09 11:17
ReporterTacoAssigned ToTaco 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version 
Target VersionFixed in Version0.63.0 
Summary0000437: soul.sty does not work
DescriptionFrom a post by Ulrike Fischer:

Am Mon, 26 Jul 2010 16:27:39 +0200 schrieb Taco Hoekwater:

> > On 07/26/2010 11:04 AM, Ulrike Fischer wrote:
>> >>
>> >> The problem has nothing to do with fonts or utf8. I get the same
>> >> error with lualatex (Version beta-0.61.0-2010061910 (rev 3724))
>> >> (xelatex + pdflatex works fine) with this example:
> >
> > This sounds like an engine error, but I am missing what is actually
> > wrong. Is there a problem with \lastbox ?

I don't know. But I now also looked at box \z@

And there you get with luatex as first box:

> > \box0=
\vbox(12.0+0.0)x0.00002, direction TLT
.\hbox(0.0+0.0)x0.00002, direction TLT
..\whatsit
...\localinterlinepenalty=0
...\localbrokenpenalty=0
...\localleftbox=null
...\localrightbox=null
..\glue(\rightskip) 0.0
.\penalty 300
.\glue(\baselineskip) 7.6955
.\hbox(4.3045+0.0)x0.00002, direction TLT
..\SOUL@tt a
..\penalty 10000
..\glue(\parfillskip) 0.0 plus 1.0fil
..\glue(\leftskip) 0.0



While pdflatex shows

> > \box0=
\vbox(4.3045+0.0)x0.00002
.\hbox(4.3045+0.0)x0.00002
..\glue 0.0
..\SOUL@tt a
..\penalty 10000
..\glue(\parfillskip) 0.0 plus 1.0fil
..\glue(\rightskip) 0.0

So box0 contains in luatex at the start 2 hboxes and so needs one
step more to get void than in pdflatex.

The additional box disappears (and also the errors) if I remove the
\tolerance\@M from SOUL@doword:

\documentclass[10pt]{book}
\usepackage{soul}
\makeatletter
\showboxdepth=100
\def\SOUL@doword{%
    \edef\x{\the\SOUL@word}%
    \ifx\x\empty
    \else
        \SOUL@buffer={}%
        \setbox\z@\vbox{%
            \SOUL@tt
            \hyphenchar\font`\-
            \hfuzz\maxdimen
            \hbadness\@M
            \pretolerance\m@ne
       % \tolerance\@M %<--------------
            \leftskip\z@
            \rightskip\z@
            \hsize1sp
            \everypar{}%
            \parfillskip\z@\@plus1fil
            \hyphenpenalty-\@M
            \noindent
            \hskip\z@
            \relax
            \the\SOUL@word}%
        \showbox\z@ %<------show
        \let\SOUL@errmsg\SOUL@error
        \let\-\relax
        \count@\m@ne
        \SOUL@analyze
        \SOUL@word={}%
    \fi
}


\begin{document}
\so{a}
\end{document}
Steps To ReproduceThe problem seems to be that the local_par whatsit followed by the hskip introduces a line break, that becomes chosen thanks to the \tolerance
setting.

This special case of local_par+hskip should (if possible) be blocked to ensure compatibility with non-Aleph based engines.
TagsNo tags attached.

Activities

Hans Hagen

2010-07-26 21:37

manager   ~0000562

Although ... our aim is is not to be pdftex (etc) compatible esp not if we also want to revision some directional thingies and par related issues. So, even if this get 'fixed' we cannot guarantee similar behaviour in future versions < 1.0.

Taco

2010-08-26 08:13

administrator   ~0000609

fixed in commit #3833

Issue History

Date Modified Username Field Change
2010-07-26 20:49 Taco New Issue
2010-07-26 21:37 Hans Hagen Note Added: 0000562
2010-08-26 08:13 Taco Note Added: 0000609
2010-08-26 08:13 Taco Status new => resolved
2010-08-26 08:13 Taco Resolution open => fixed
2010-08-26 08:13 Taco Assigned To => Taco
2010-09-09 11:16 Taco Fixed in Version => 0.63.0
2010-09-09 11:17 Taco Status resolved => closed