Personal tools

You are here: Home / src / 1.tex

# 1.tex

1.tex — TeX document, 2 KB (2384 bytes)

## File contents

Ciekawostka -- co� s�dzicie o tym? Pozdrowie�stwa -- Jacko

--
BOP s. c.
ul. Bora-Komorowskiego 24, 80-377 Gdansk, Poland
tel. (+48 58) 553 46 59,  fax (+48 58) 511 03 81
bop@bop.com.pl, http://www.bop.com.pl

---------- Forwarded message ----------
Date: Fri, 7 Sep 2007 16:10:32 +0200
From: Frank Mittelbach <frank.mittelbach@latex-project.org>
To: tex-implementors@tug.org
Subject: [SPAM] [tex-implementors] discretionary bug/feature?

since there is some traffic on this list right now I got reminded of
something strange/interesting that was shown to me by Morten last year
november.

He showed me a nice example of a TeX behavior that suspiciously looks
like a bug:

\tracingparagraphs=1
\nopagenumbers
\parindent=0pt
\setbox0=\hbox{C}
\hsize=\wd0

C\par

\discretionary{AA}{BB}{C}\par

\bye

After staring at the code, I strongly believe that this is a bug in module
851 (or 854 if you like). What happens is the following:

In 851 it is tested if if the badness of the current potential break is
infinity or if it is a forced break. In either case the starting node is
deactivated (except in very special circumstances (which is 854)).

what is not tested is whether or not we are in a discretionary case
(break_type=hyphenated) that information is available but only used for trace
display and some other case.

therefore a prebreak that results in an overfull box (ie badness>10000) will
deactivate the start node, even if the distance from the start node to the
non-hyphenated node of the \discretionary might fit into the line

ergo we see this strange behaviour.

I think this is a bug and not a feature. It is true that one has to
deactivate nodes and one of TeX's rule is not to do backtracking, eg when
the is a long backskip in a paragraph later nodes might in theory be valid
breakpoints except for the fact that the corresponding break nodes have
already beend deactivated. However, that is ok under the assumption that one
does conceptionally always move in one direction and not backtrack over
previous nodes. However, in case of the \discretionary this doesn't hold as
the pre-break is effectively not there if the non-break part is being
choosen. Therefore it is not correct that the pre-break can deactivate nodes
on the active list.