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

Zdenek Wagner zdenek.wagner at gmail.com
Wed Apr 8 15:14:35 CEST 2009


2009/4/8 Jaroslav Hajtmar <hajtmar at gyza.cz>:
> Existuje tedy nejake alespon trochu "rozumne" reseni pro
> zapis bloku textu do souboru? Mam tim na mysli napr. pouziti
> mechanizmu, ktere zapisuji do externich souboru treba
> rejstriky, obsahy.. mechanizmy, ktere zapisuji do log
> souboru atd. atd.?
>
Zalezi na ucelu. Pokud se vytvari pomocny soubor, ktery je urcen pro
cteni TeXem, pak nevadi, ze jsou tam pouzita makra. Pokud vytvarim
vystup pro jiny program a ve vystupu neni nutne zapisovat cislo
stranky, pak lze pouzit \immediate\write ve skupine:

\begingroup
% predefinovani prikazu
\immediate\write{...}
\endgroup

Nejsem si jist, kdy presne dojde k expanzi, pokud se nepouzije
\immediate. Pokud TeX zapise do vystupu znaky v zobakove konvenci, lze
to v perlu snadno vyresit pouzitim s/\^\^([0-9a-f]{2}?)/chr hex $1/ge

XeTeX a Omega pouzivaji tez ^^^^abcd apod.

> DIky J.Hajtmar
>
>
>
> ----- Original Message -----
> From: Zdenek Wagner <zdenek.wagner at gmail.com>
> To: Czech and Slovak TeX-related mailing list
> <cstex at cs.felk.cvut.cz>
> Subject: Re: [cstex] Zapis do souboru z (asi nejen) ConTeXtu
> Date: Wed, 8 Apr 2009 10:38:06 +0200
>
>> 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
>> _______________________________________________
>> csTeX mailing list
>> csTeX at cs.felk.cvut.cz
>> http://lists.felk.cvut.cz/mailman/listinfo/cstex
> _______________________________________________
> 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