oznameni: encTeX dec.2002: UTF8 podpora kodovani primo v TeXu

Petr Olsak olsak na math.feld.cvut.cz
Úterý Leden 7 13:02:11 CET 2003


Vazeni TeXiste a uzivatele novejsich distribuci Linuxu,

jak jsem slibil uz na konferenci SLT 2002, zacal jsem se hloubeji zabyvat
problemem TeXovych vstupu v kodovani UTF8, ktere koduje ceske znaky do dvou
bytu. Prvni reseni postavene na aktivnich znacich jsem dal k dispozici
pokud mozno okamzite s vedomim jeho nedokonalosti. Napriklad nebude
fungovat \uppercase jak jsme zvykli a vystupy do \write souboru se
nevraceji do puvodniho kodovani, coz muze prinaset problemy.

Rozhodl jsem se proto pres vanoce rozsirit svuj encTeX, coz je
modifikace TeXu, ktera pridava do TeXu nove primitivy umoznujici
nastavovat prekodovani na urovni vstupniho procesoru. Puvodni verze
encTeXu z roku 1997 umela kodovat pouze byte na byte. Nova verze
"Dec. 2002", kterou nyni davam k dispozici, umoznuje prekodovat na
urovni input procesoru take vice bytu na jeden byte nebo na jednu
kontrolni sekvenci. Pri vystupu do \write souboru je tento jeden byte
znovu preveden na puvodnich vice bytu. Tato vlastnost umoznuje
nastavit cteni souboru kodovanych v UTF8 tak, ze jednotlive znaky nasi
abecedy se v TeXu chovaji jako jediny byte a muzeme jim pridelovat
\catcode, \uccode atd., jak jsme byli zvykli. Z pohledu TeXu je pak
zpracovani dokumentu v UTF8 naprosto shodne se situaci, kdy byl
dokument kodovany v nekterem "jednobytovem" kodovani.
Navic je mozno na kontrolni sekvence mapovat a vlastnimi makry
osetrit neomezene mnozstvi dalsich UTF8 kodu.

Novou verzi encTeXu najdete na

    ftp://math.feld.cvut.cz/pub/olsak/enctex.

Jeho instalace vyzaduje kompilaci TeXu ze zdrojovych kodu. EncTeX je
kompletne implementovan ve zmenovem souboru tex.ch. Pokud mate
web2c-7.3.7 instalaci (TeXlive7) nebo aktualni web2c-7.4.2 (teTeX-beta),
pak muzete pouzit predpripraveny patch na tex.ch teto distribuce.
Pro jine distribuce musite pozmenit tex.ch podle podrobneho navodu.

---------------------

V souvislosti s UTF-8 kodovanim nas ceka jeste mnoho prace.
Vytvorit robustni a konfigurovatelne vstupni rozhrani pro toto
kodovani v TeXu je jen prvni krok, ktery jsem provedl tim, ze jsem
rozsiril svuj encTeX. Nicmene dalsi prace jeste na nas ceka a
uvitam dobrovolniky, pokud neco udelaji:

- Vytvorit prekodovaci tabulky pro encTeX mapujici UTF8 na vnitrni kodovani
  podle Corku (zatim mam jen tabulku mapujici na kodovani podle CSfontu).
  Pokud ji nekdo udela, rad ji zaradim do encTeXu.

- Rozsirit stavajici tabulku utf8-csf o kontrolni sekvence, jako je
  \clqq, \crqq, atd. Ma-li nekdo po ruce tabulku tech kodu, muze to
  udelat. Ja to privitam a zaradim do encTeXu.

- Dukladne proverit pdfTeX s encTeXem. Sice to hned napoprve
  kompilaci proslo a pdfTeX se tvari, ze neco dela, ale moc bych tomu
  neveril, zda jsem zmenami v encTeXu "nepremaznul" nektere pdfTeXove
  primitivy. Kvuli fixnim konstantam vymezujici urcite pocty urcitych
  primitivu v TeXu bych takove chovani celkem ocekaval.
  Kdo proveri dukladne pdfTeX s encTeXem?

  Na druhou stranu TeX samotny jsem s encTeXem dukladne proveroval a za
  nej rucim. Prosel samozrejme TRIPem.

- V nejblizsi dobe a yake podle vasi reakce na tento dopisoznamim na
  tex-implementors existenci nove verse encTeXu a nabidnu pomoc pri
  implementaci do jednotlivych distribuci. Je ovsem otazka, zda to
  mezinarodni TeXova komunita prijme. S prvni verzi encTeXu jsem
  nebyl prilis uspesny.

- Je potreba vyresit kolizi dnes casto pouzivanych TCX tabulek
  s encTexem. Do budoucna asi nebude idealni stavajici reseni, kdy encTeX
  zcela znemoznuje pouziti TCX tabulek.

- Je treba upravit programy csindex, makeindex, bibtex tak, aby umely
  pracovat s kodovanim UTF8 alespon pro vyjmenovane sady abeced.
  Jestli xindy umi UTF-8, nevim.

Domnivam se, ze pokud se tyto veci neudelaji, bude 8 bitovy TeX
odsouzen v dohledne dobe k zaniku. Stale casteji se totiz objevuji
dalsi operacni systemy a aplikace, ktere maji implicitne nastaveno
kodovani podle UTF-8. Pokud se s tim TeX nebude umet vyrovnat, nikdo
jej nebude v budoucnu chtit pouzivat. Opoustet kvuli tomu TeX a
prechazet rovnou k Omeze me pripada jako zbytecne radikalni krok.
Chapu sice, ze vetsina jinych aplikaci ctouci UTF-8 pracuje interne
v Unicodu, ale TeX s rozsirenim encTeX nemusi.

Pro zacatek prosim vsechny, ktere tato problematika zajima, aby
vyzkouseli novou verzi encTeXu, napsali mi pripominky a pripadne se
zapojili do dalsich ukolu naznacenych vyse. Pro uplnost dodavam, ze
jsem encTeX vubec nerozsiroval kvuli sobe, protoze sam zatim mam
velkou neduveru v kodovani UTF8 a vubec toto kodovani nepouzivam.
Udelal jsem to jen kvuli TeXu a jeho budoucnosti. Stravil jsem nad tim
dva dny usilovneho programovani, hrabani se ve zdrojovych
kodech TeXu a sepisovani dokumentace. Snad to nebude zbytecne
vynalozena prace.

Zdravim

Petr Olsak




Další informace o konferenci Linux