[cstex] Zapis do souboru z (asi nejen) ConTeXtu

Zdenek Wagner zdenek.wagner at gmail.com
Wed Apr 8 10:38:06 CEST 2009


2009/4/8 Jaroslav Hajtmar <hajtmar at gyza.cz>:
> Dobry den,
> uz jsem na to jednou narazil, ale bud jsem asi zapomel na reseni, nebo jsem
> to tehdy nechal otevreny a dal se tim nezabyval.
>
> mam nastaveno
> \enableregime[cp1250]
> \mainlanguage[cz]
>
Ty problemy jsou v podstate dva.

1. Problem aktivnich znaku jste trefil presne. Vstupni kodovani se
temer vzdy lisi od kodovani fontu. Casto se to resi tim, ze se vstupni
znaky zaktivni, prevedou se na jiste ridici sekvence (v LaTeXove
terminologii robustni makra), ktera se v druhem kroku prevedou do
kodovani fontu. Pri zapisu do souboru se zapisuji makra vznikla
konverzi vstupu do vnitrni reprezentace. Z hlediska cteni takoveho
souboru TeXem je to spravne, protoze je soubor nezavisly na kodovani.
Problem vsak nastane, pokud generuji vystup pro jiny program (napr.
mam informace zapsat jako XML, ktere se pak bude natahovat do nejake
databaze). Lze to vyresit tak, ze v okamziku zapisu docasne
predefinujete makra tak, aby zapisovala znaky v pozadovanem kodovani.

2. TeX pri cteni a zapisovani znaku ziskava informace z vektoru xord,
xchr a xchrn (je to popsano v TBN a v clanku Petra Olsaka "Cesta
pismene \v{r} z klavesnice na papir). Pokud ConTeXt nevnesl do techto
vektoru nejakou zmenu, pak reseni z bodu 1 stejne nepomuze, nebot
akcentovane znaky jsou nastaveny jako netisknutelne a v souboru budete
mit "zobakovy" zapis ^^c8 apod.

Tyto problemy lepe resi encTeX, ale ten v ConTeXtu, pokud vim, neni.
Pravdepodobne by slo totez udelat v LUA. Tusim, ze nekdo pracuje na
analogii inputenc, kde se nebudou pouzivat aktivni znaky, ale kod v
LUA. Nejlepsi reseni vsak je pouzivani UTF-8.

Mimochodem, inexovaci program xindy ma podporu pro vstup textu ve
tvaru, jak je zapisuje LaTeX pri pouziti inputenc. Jak vidim z Vasi
ukazky, ConTeXt zapisuje jina makra. Pro pouziti xindy s conTeXtem
bude tedy nutne napsat jinou sadu "merge rules".

> Potřebuji při zpracovani textu ConTeXtem zapisovat nejake informace do
> externiho souboru. Delam to pomoci:
>
> \immediate\openout\scratchwrite pokus.txt
> \immediate\write\scratchwrite{blablabla}
> ....
> \closeout\scratchwrite
>
> a vystupem je nakonec takovyto text:
>
>
> Sta\dochar {163}\dochar {237} p\dochar {225}r p\dochar {237}smen a\CCC:4:126
> p\dochar {225}r v\dochar {165}t, aby se na\dochar {178}e vzpom\dochar
> {237}nky na spole\dochar {163}n\dochar {165} pro\dochar {186}it\dochar {233}
> chv\dochar {237}le o\dochar {186}ivily. Tentokr\dochar {225}t poj\dochar
> {164}me p\dochar {176}ipomenout superhypergigamega extraakci, kter\dochar
> {225} prob\dochar {165}hla o v\dochar {237}kendu 15.-17.3.2009. Ano,
>
>
> Tusim, ze mi kdysi v konferenci nekdo rikal, ze je to aktivnimi ceskymi
> znaky. Existuje ale nejaka moznost, jak zapsat text primo v danem kodovani?
> Uz jsem si rikal, ze si napisu v Perlu nejaky skript, ktery mi ten text
> prechrousta a doplni tam ceske znaky podle potrebneho kodovani. Neresil
> nekdo neco podobneho, at nedelam to, co uz je pripadne hotove?
>
> Diky Jarda Hajtmar
>
>
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz



More information about the csTeX mailing list