Jacko pomimo braku czasu odpowiedział:
> Staszek Wawrykiewicz:
> > ftp://ftp.gust.org.pl/TeX/GUST/contrib/TeX-kodowanie/tcxprep.zip
> > zawiera tcxprep.txt, gdzie możesz poczytać dlaczego.
>
> Domniemuję, że tej odpowiedzi Krzysio raczej nie uzna za satysfakcjonującą,
> a nawet zachodzi podejrzenie, że może ją uznać za nienatematyczną...
Aj! A ja taką ładną ripostę Stasiowi napisałem, no trudno, może
innym razem.
> I jeszcze jedna uwaga: Krzysio nie ma racji twierdząc, że tcx ogranicza nas
> z ,,gigantycznej ilości $256^{512}$ do nędznego $256!$''. Sklepanie dwóch
> tablic do jednej oczywiście NIE WYMUSZA permutacji, tylko ogranicza nas
> z $256^{512}$ do $256^{256}$. Innymi słowy, permutacje nie są OBOWIĄZKOWE,
> tylko KORZYSTNE. Oczywiście nadal można zapytać ,,dlaczego''...
>
> MORAŁ: To jest bardzo ciekawy temat na Bachotek. Czy nie warto by zrobić
> małej sesyjki ,,birds of feather'' na ten temat?
To ja zagaję na Gliście, do porozmawiania w Bachotku.
To ja mam pytanie z gatunku heretyckich, chociaż nie wiem czy aby
na pewno bardzo heretyckich:
Czy j.\mag \DeK uznałby za wielkie psucie TeXa, gdyby go nieco
,,uOmegować'' -- tylko troszeczkę. Przez uOmegowanie uważałbym:
a) zostawienie tcx-like tablicy xord[], czyli kodowania
wejściowego.
b) zrobienie __DWÓCH_RÓŻNYCH__ tablic przekodowywania kodowania
wyjściowego, jedną dla poleceń \message i \write, a inną dla
\showbox.
c) Wartościami xchr[] nie były by jednobajtowe znaki, tylko
napisy, jak i dzisiaj się tak dzieje -- częściowo.
Dlaczego (b), \showbox jest czymś co jest stosowane (na razie)
chyba wyłącznie w celach podpatrywania błędów. Z jakiegoś powodu
TeX nie pozwala zrobić \edef \zawartośćboxa{\the\box0}, ponadto
zawartość boxa ląduje wyłącznie w pliku \jobname.log. Z tego
powodu (przynajmniej dla mnie) jest korzystnie widzieć
__wszystkie__ znaki, które mogą mi wylądować w pliku .dvi. Nawet
jeśli nie mają reprezentacji w moim kodowaniu: na przykład
ligatura ff nie ma.
Z drugiej strony ja bym się cieszył, gdyby TeX mi zgłaszał błąd
przy próbie wyrzucenia do pliku, poleceniem \write lub \message
znaku, który w znanym kodowaniu nie ma sensu -- na przykład
ligatury ff. Takie dokumenty byłyby co najmniej bardzo mało
przenośne.
Dlaczego (c), dzisiaj w pliku tex.web znajduje się takie coś:
The boolean expression defined here should be |true| unless
\TeX\ internal code number~|k| corresponds to a non-troublesome
visible symbol in the local character set.
[...]
@<Character |k| cannot be printed@>=
(k<" ")or(k>"~")
[...]
Z kolei sekcja @<Make the first 256 strings@>
generuje pierwsze 256 napisów w następujący sposób:
if @<Character |k| cannot be printed@> then
zrób string "^" + "^" + kod
else
zrób string chr(k);
Później funkcja print_char wypisuje xchr[k], czyli na przykład
znak o kodzie 0xFF jest wypisywany jako xchr['^'], xchr['^'],
xchr['F'], xchr['F'].
Czy gdyby uznać, że @<Character |k| cannot be printed@>=false
oraz print_char wypisywałby w opraciu o stringi (te pierwsze
256), czytane z pliku podobnego do tcx. To taki program
przestałby być TeXem czy nie? Tak na oko, trip.tex powinien
przejść, modulo ilość stringów. Nie wiem czy to akurat powoduje
nieuznanie trip.log za ,,dobry''.
Oczywiście omegowcy posunęli się dalej, u nich ,,znakiem'' jest
dowolne wyrażenie regularne zjadane przez flex-a. A xchr[] też
jest całym skomplikowanym mechanizmem. Takie postępowanie
oczywiście jest znacznym wyjściem poza TeXa, ale omega TeXem nie
jest, więc im wolno.
Pozdrawiam
--kl