Poznamka k chybam v TeXu

Petr Sojka sojka at daeron.ics.muni.cz
Tue Mar 21 01:56:54 CET 1995


"Petr Olsak wrote:"
:
: On Mon, 13 Mar 1995, Petr Sojka wrote:
: >
: > Periodic ritual, ...
: > 106 pages of bug comments ...
: > a letos to je 13 let od TeXu82 ...
: >
: > Ironii osudu je, ze Petrem zminovany \ioalign volany z \d ma v plainu chybu,
: > takze ten patch pro korektni sazbu s akcenty (\d s zapornym
: > \lineskiplimit) v plainu treba bude. LaTeX ho, bohuzel, zdedil,
: > ale od LaTeX teamu mam mnohem zivejsi odezvu nez od DEK,
: > ktery bug reports cte jednou za rok (vetsinou unor).
: >
: > Bona fide
: > Petr
: >
:
: O chybe v \ioalign pro zaporny \lineskiplimit vime uz dlouho. Myslim, ze
: jsme s Petrem Sojkou a Karlem Horakem tento problem diskutovali uz pred
: dvema lety v Astonu a uz tehdy jsme si rekli, ze nema smysl Knuthovi toto
: posilat jako chybu, protoze (podle meho soukromeho nazoru):
:
: 1. tuto vec muselo udelat plno jinych lidi, protoze je
:    to chyba trivialni,
Kdyz jsem nedavno sazel slovnik, kde byly prizvuky znaceny teckou pod
pismenem, nevzpomnel jsem si, hlava dubova, na Petrem vyse
zminovany hovor v Astonu.
A poslal jsem bug report DEK (pres Barbaru Beeton) a cekal.

: 2. protoze ji Knuth neopravil, je mozno se domnivat, ze
Petrova premisa je mylna. Asi jsem byl prvni, kdo
mu ten bug report poslal.
:    to nepovazuje  za chybu ale za vlastnost plainu. Totiz za chybu
Take tomu neni tak. Pred chvili jsem avizoval novy emtex,
a vsiml jsem si, ze jiz obsahuje tex 3.14159, vcetne plainu
teto verse. Tady je diff file (pro setreni mista bez kontextu):

578c578
< \def\m at th{\mathsurround\z@}
---
> \def\m at th{\mathsurround=\z@}
599,601c599,602
< \def\sett at b{\ifx\next\+\def\nxt{\afterassignment\s at tt@b\let\nxt}%
<   \else\let\nxt\s at tcols\fi \let\next\relax \nxt}
< \def\s at tt@b{\let\nxt\relax \us at false\m at ketabbox}
---
> \def\sett at b{\ifx\next\+\let\next\relax
>     \def\next{\afterassignment\s at tt@b\let\next}%
>   \else\let\next\s at tcols\fi\next}
> \def\s at tt@b{\let\next\relax\us at false\m at ketabbox}
674,675c675,676
<   \ialign{##\crcr#1\crcr}}} \def\o at lign{\lineskiplimit\z@ \oalign}
< \def\ooalign{\lineskiplimit-\maxdimen \oalign} % chars over each other
---
>   \ialign{##\crcr#1\crcr}}} % put characters over each other
> \def\ooalign{\lineskiplimit-\maxdimen \oalign}
678,680c679,681
< \def\d#1{{\o at lign{\relax#1\crcr\hidewidth\sh at ft{10}.\hidewidth}}}
< \def\b#1{{\o at lign{\relax#1\crcr\hidewidth\sh at ft{29}%
<     \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
---
> \def\d#1{\oalign{#1\crcr\hidewidth\sh at ft{08}.\hidewidth}}
> \def\b#1{\oalign{#1\crcr\hidewidth\sh at ft{29}%
>     \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
702,703c703,704
< \def\rightarrowfill{$\m at th\smash-\mkern-6mu%
<   \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
---
> \def\rightarrowfill{$\m at th\mathord-\mkern-6mu%
>   \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
706,707c707,708
<   \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
<   \mkern-6mu\smash-$}
---
>   \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
>   \mkern-6mu\mathord-$}
956,957c957
< \def\skew#1#2#3{{\muskip\z@#1mu\divide\muskip\z@\tw@ \mkern\muskip\z@
<     #2{\mkern-\muskip\z@{#3}\mkern\muskip\z@}\mkern-\muskip\z@}{}}
---
> \def\skew#1#2#3{{#2{#3\mkern#1mu}\mkern-#1mu}{}}
1036c1036
< \def\@vereq#1#2{\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@
---
> \def\@vereq#1#2{\lower.5\p@\vbox{\baselineskip\z at skip\lineskip-.5\p@
1080,1081c1080,1081
< \def\bmod{\nonscript\mskip-\medmuskip\mkern5mu
<   \mathbin{\rm mod}\penalty900\mkern5mu\nonscript\mskip-\medmuskip}
---
> \def\bmod{\mskip-\medmuskip\mkern5mu
>   \mathbin{\rm mod}\penalty900\mkern5mu\mskip-\medmuskip}
1115,1116c1115,1116
<   \everycr{\noalign{\ifdt at p \global\dt at pfalse \ifdim\prevdepth>-1000\p@
<       \vskip-\lineskiplimit \vskip\normallineskiplimit \fi
---
>   \everycr{\noalign{\ifdt at p \global\dt at pfalse
>       \vskip-\lineskiplimit \vskip\normallineskiplimit
1119c1119
< \def\displaylines#1{\displ at y \tabskip\z at skip
---
> \def\displaylines#1{\displ at y
1233c1233
< \def\fmtname{plain}\def\fmtversion{3.14159} % identifies the current format
---
> \def\fmtname{plain}\def\fmtversion{3.1415} % identifies the current format

Knuth to tedy vyresil tak, ze misto poznamky (aby se mu nerozjelo
radkovani :-) dopsal makro \o at lign a to vola v drive chybnych
makrech \d a \b .

:    povazuje jen to, co se chova jinak, nez je psano v TeXbooku a pritom
:    v TeXbooku je cely plain napsany a tim je jeho definice recena. To, ze
:    nekomu tato definice nevyhovuje v okamziku, kdy nastavi zaporny
:    \lineskiplimit je ciste jeho soukromy problem, ma TeXbook, podiva se,
I DEK to nepovazuje jen tak za soukromy problem.
:    proc se to tak chova, a vec si nadefinuje jinak.
:
: Typnul bych si, ze mezi zminenymi 106 stranami chyb Knuth skutecne jako
: chybu akceptuje neco, co by nas ani ve snu nenapadlo a ostatni veci za
: chyby povazovat nebude. V Komodie (bulletin DANTE) vysel clanek,
: popisujici vsechny opravy TeXu od 3 k 3.1, od 3.1 k 3.14 atd. Pro vetsinu
: z nas da asi hodne prace pochopit, jaka to vlastne byla chyba a vsichni
: si tam muzeme vsimnout, ze opravenych chyb je minimalne. Vubec se nejedna
: o 106 stran mezi jednou a druhou verzi.
Tys je videl?
:
: Jako perlicku uvedu jednu pro vsechny snadno pochopitelnou chybu, ktera
: byla opravena tusim mezi 3 a 3.1. Registr na pocitani stranek v TeXu ma
: omezeni 65tis. Pokud vysazime dokument s vice stranami, nez 65tis, pak se
: chyba projevi tak, ze TeX nevyda zadne chybove hlaseni a zacne se chovat
: jinak, nez bychom cekali. Prosim, prihlaste se, kdo jiz potreboval
: vysazet dokument s vice nez 65 tisici stranami, aby na chybu narazil.

Takovych (a vetsich) chyb bylo, je a bude. Je treba se smirit s tim,
ze vsichni lide chybuji a tvoreni software je zapeklity neohraniceny
proces. Je treba se smirit s tim, ze u dokumentu, kde
chceme mit stoprocentni zpetnou kompatibilitu, se musi uchovavat
stejne _vsechno_ (DEK menil i glyphy CM).

Proto nevidim v pripadne gradualni konversi csfonty->dcfonty v cstexu'9x
az tak veliky problem.

Petr Sojka
:
: Petr Olsak



More information about the csTeX mailing list