csplain a cslatex v prostredi UTF8

Petr Olsak petr at olsak.net
Thu Sep 8 15:17:26 CEST 2005


Vazeni kolegove,

Dnes se stale casteji objevuji UNIXove/Linuxove systemy/distribuce, kde
implicitni kodovani ceskych textu (napr. nastavenim locales) je UTF8.

Udelal jsem proto nekolik drobnych zmen v csplainu a cslatexu, aby bylo
mozne tyto formaty pouzit v systemech, kde se pracuje s UTF8 kodovanim.
Tyto zmeny vyuzivaji encTeX, tj. pokud binarka TeXu toto rozsireni
neobsahuje, neni mozne je pouzit. encTeX je implicitne pritomen v posledni
verzi TeXlive a samozrejme v poslednich verzich teTeXu.

Thomas Esser (spravce teTeXu) prislibil, ze zmeny zaradi do teTeXu a
pripravi radky pro konf. soubor programu fmtutil, jejichz odkomentovanim
si bude moci uzivatel vybrat, zda chce UTF8 nebo ISO2 csplain a cslatex:

=============================================

Date: Wed, 7 Sep 2005 20:02:30 +0200
From: Thomas Esser <te at dbs.uni-hannover.de>

with the upcoming web2c-7.5.5, the following seems to work.

# - Czech / Slovak for ISO-8859-2 locale (see below for UTF8). Enable
# "by hand", not by "fmtutil --enablefmt", because definitions for
# ISO-8859-2 / UTF8 share the same name.
#! csplain      pdfetex     -     -etex -translate-file=cp227.tcx csplain.ini
#! cslatex      pdfetex     -     -etex -translate-file=cp227.tcx cslatex.ini
#! pdfcsplain   pdfetex     -     -etex -translate-file=cp227.tcx csplain.ini
#! pdfcslatex   pdfetex     -     -etex -translate-file=cp227.tcx cslatex.ini

# - Czech / Slovak for UTF8 locale (see above for ISO-8859-2). Enable
# "by hand", not by "fmtutil --enablefmt", because definitions for
# ISO-8859-2 / UTF8 share the same name.
#! csplain      pdfetex     -     -etex -enc csplain-utf8.ini
#! cslatex      pdfetex     -     -etex -enc cslatex-utf8.ini
#! pdfcsplain   pdfetex     -     -etex -enc csplain-utf8.ini
#! pdfcslatex   pdfetex     -     -etex -enc cslatex-utf8.ini

===============================================

Ode dneska je na ftp://math.feld.cvut.cz/pub/cstex/base/
nova verze csplainu <Sep 2005> v csplain.tar.gz a upraveny soubor
cslatex.ini v cslatex.tar.gz. Mate-li TeXovou binarku s rozsirenim encTeX,
pak pri generovani formatu csplain (u cslatexu je to analogicke) si muzete
vybrat ze dvou monosti:

tex -ini -translate-file=il2-cs.tcx csplain.ini
    ... vygeneruje csplain s predpokladanym vstupem v ISO-8859-2
tex -ini -enc '\let\enc=u \input csplain.ini'
    ... vygeneruje csplain s predpokladanym vstupem v UTF8

Prvni moznost nevyuziva encTeX, pouze pomoci tabulky il2-cs.tcx
zaruci, aby ceske znaky na terminal, do logu a \write souboru
vystupovaly tak jak jsou, a nikoli v ^^ab formatu.

Druha moznost vyuziva encTeX, ceske a slovenske znaky se predpokladaji, ze
jsou kodovany v UTF8, do logu, na terminal a do \write souboru se vraceji
znovu v UTF8 kodovani a "uvnitr TeXu" jsou tyto znaky na pozicich podle
ISO-8859-2. Rikejme tomu UTF-osmickovy csplain/cslatex, ktery vyuzijete
v systemech, kde se implicitne pracuje s timto kodovanim.

UTF-osmickovy csplain/cslatex mapuje z UTF8 kodu do ISO-8859-2 pouze 44
akcentovanych znaku ceske a slovenke abecedy a NIC VICE. Neni ani vybaven
schopnosti rozeznat nezamy UTF8 kod a samozrejme tam nejsou vubec reseny
dalsi mozne znaky, ktere jsou v UTF8 kodovani k dosazeni (pomlcka,
uvozovky, nedelitelna mezera a dalsich mnoho desitek tisic znaku).
Rozhodl jsem se pro tuto strategii, protoze mam rad co nejnissi
inteligenci formatu csplain, ktery se stara pouze o znaky ceske a
slovenske abecedy. Pokud bude nekdo chtit vyuzit rozsirene moznosti, ktere
mu nabizi kodovani UTF8, bude si muset k tomu napsat vlastni makra.
csplain pouze zarucuje, ze to, co vidite v editoru jako ceske nebo
slovenske znaky, tak s tim skutecne pracuje jako s ceskymi a slovenskymi
znaky. Pokud ala chcete napsat napr. pomlcku, musite zustat u TeXovych
obyceju a psat -- nebo ---.

Existuje zajimava vlastnost UTF-osmickoveho csplainu/cslatexu:  v pripade
ceskych textu je schopen spravne zpracovat i soubory v ISO-8859-2 bez
nutnosti cokoli prepinat, protoze UTF8 kody ceskych znaku maji prefixy,
podle kterych se znaky konvertuji, a ostatni znaky zustavaji bez konverze.
Pritom tyto prefixy se v beznem ceskem textu pri kodovani ISO-8859-2
nevyskutuji, takze ISO-8859-2 zustava bez konverze. Bohuzel, kolegove ze
Slovenska nemohou tuto vlastnost stoprocentne pouzit, protoze zminene
prefixy se v ISO-8859-2 tvari jako dlouhe L nebo prehlasovane A, coz
bohuzel slovenska abeceda obsahuje.

Abych to shrnul, UTF-osmickovy csplain/cslatex se chova takto:

cesky vstup:  UTF8 nebo
              ISO-8859-2  ==> csplain/cslatex ==>  log, terminal, \write:
                                                   UTF8 vzdy

Pri pouziti tohoto reseni asi zahy narazite na pozadavek zpracovani
rejstriku ci podobnych veci v UTF8. V pripade rejstriku mohu vrele
doporucit program xindy, pro ktery jsem si udelal konf. soubor
respektujici dusledne tripruchodove ceske trideni. Tento konfigurak je
napsan v nativnim kodovani, ktere se pri zpracovani rejstriku pouziva a
staci tento konfigurak prekodovat pomoci recode do UTF8 a bezi to v UTF8
(protoze xindy pri cteni konfiguraku nepracuje s jedntlivymi znaky, ale
s "useky stringu", coz je v pripade UTF8 presne to, co potrebujeme).

Chcete-li zpracovavat v UTF8 jine zalezitosti nez rejstriky, budete si
muset pockat, az prislusny software bude umet UTF8. Podle meho nazoru
timto smerem kraci vyvoj.

Zdravim

Petr Olsak





More information about the csTeX mailing list