[cstex] vstupni kodovani csplainu, prosim o nazor

Petr Olsak petr at olsak.net
Thu Oct 4 10:24:27 CEST 2012


Vážení kolegové,

když jsme před 20 lety dělali csplain, rozhodli jsme se, že interní 
kódování bude stejné jako v CM fontech a další znaky české a slovenské 
abecedy budou na místech podle ISO-8859-2. Vstupní kódování jsme pak 
předpokládali závislé na systému. Například na UNIXech v té době bylo pro 
češtinu a slovenštinu používáno ISO-8859-2, takže vstupní kódování bylo 
stejné, tj. input procesor měl nastavenou konverzi jedna ku jedné 
(tedy nekonverzi) a stačilo zajistit, aby znaky české a slovenské 
abecedy byly nastaveny jako ,,printable`` pro použití \write a pro zápis 
do logu. K tomu sloužil soubor il2-cs.tcx, který bylo nutno použít v době 
generování formátu. Pro první windows se předpokládalo použití konverzní 
tabulky cp1250.tcx. Na DOSech si lidé nastavili různá další obskurní 
kódování, ale to pak používali jednotně v celém svém DOSoidním systému.
Podle toho zvolili správnou tcx tabulku pro vstupní konverzi v csplainu.

Možná vás zarazí, že nepředpokládáme jednotné vstupní kódování csplainu na 
všech systémech. Je to analogie TeXu samotného. V dávných dobách kromě 
ASCII se používalo kódování EBCDIC, které kódovalo anglickou abecedu a 
další obvyklé znaky úplně jinak než ASCII. TeX na systémech s ASCII 
předpokládal vstup podle ASCII a jeho input procesor pracoval jedna ku 
jedné, zatímco TeX na systémech podle EBCDIC předpokládal vstup podle 
EBCDIC a prováděl ve svém input procesoru vnitřní konverzi. Předpokládalo 
se, že textový soubor se nebude mezi těmito systémy přemisťovat jedna ku 
jedné, ale vždy dojde k jeho úpravě na správné kódování. Jednoduše: když 
operátor viděl na svém terminálu při prohlížení textového souboru 
rozsypaný čaj, nedivil se, že TeX mu z toho taky vyrobí rozsypaný čaj.

Na základě toho jsem deklaroval testem cstrip pravidlo: vidím-li v editoru 
správně napsanou češtinu nebo slovenštinu, pak to musí csplain správně 
zpracovat, jinak to není správně instalovaný csplain. Vidím-li v editoru 
rozsypaný čaj, nedivím se, že vyleze rozsypaný čaj a hledám chybu na trase 
při přemisťování souboru ze systému do systému.

Během dalších let se vyprofilovala dvě nejčastější 8bitová kódování 
češtiny a slovenštiny: ISO-8859-2 na unixech a CP1250 na Windows.
U csplainu jsem tedy předpokládal, že bude mít input procesor nastaven na 
1:1 pro unixy a podle cp1250.tcx pro widle. Použití souboru cp227.tcx pro 
unixy je korektní, protože je 1:1 a je nadmnožinou původního souboru 
il2-cs.tcx, který (stejně jako test cstrip) se stará jen o znaky české a 
slovenské abecedy.

Použití souboru cs227.tcx pro csplain ve windows je zásadně nekorektní, 
není žádný důvod to takto nastavovat a považuji to za extrémní přehmat 
tvůrců distribuce. Je asi potřeba jim to nějak říci. Že to léta nikomu 
nevadilo se velmi divím a přikládám to faktu, že kombinaci csplain+widle 
lidé nepoužívají. Až nyní se ukázalo, že když to někdo chce použít, diví 
se, že mu to nefunguje.

Život počítačový se ale během těch let samozřejmě ještě více zkomplikoval: 
textové editory nepřejímají jednotné kódování použité v systému jako 
celku, ale snaží se o dodatečnou inteligenci: jiné kódování pouští na 
terminál a jiné při ukládání do souboru (save), jsou někdy vybaveny 
autodetekcí kódování během procesu load atd. Navíc je stále běžnější 
vícebytové kódování textových souborů, typicky UTF8.

Je třeba se zamyslet, jak by se měl v této situaci chovat csplain. Než 
učiním nějaké rozhodnutí, rád se podívám na diskusi k tomuto tématu, 
kterou tímto emailem otvírám.

Otázka je, zda implicitně přejít na všech systémech na UTF8 (csplain je k 
tomu připraven např. s využitím encTeXu). Ovšem csplain používají 
konzervativní lidé, kteří si spíše ohnou svůj systém na použití stejného 
kódování, jaké používali desítky let, než aby museli konvertovat veškerou 
archivovanou práci do nového kódování. Já například typicky pracuji v 
xtermu. Už přes deset let dokážu mít na ploše vedle sebe různé xtermy, 
jedny kódované podle ISO-8859-2 a druhé v UTF8. Je naprosto jedno, jaký 
typ xtermu otevřu, mám je v nabídce vedle sebe. Ovšem nějak jsem se za ta 
léta nepřinutil používat xtermy s UTF8. Možná, že nejsem sám.

Zdravím

Petr Olšák


More information about the csTeX mailing list