[cstex] Testovaci TeXova makra a UTF-8 v ConTeXtu

Zdenek Wagner zdenek.wagner at gmail.com
Thu Apr 22 13:16:05 CEST 2010


2010/4/22 Jaroslav Hajtmar <hajtmar at gyza.cz>:
> Dobrý den.
> Načítám z externího UTF-8 souboru data (např. údaj o pohlaví) a ten následně
> načtu do TeXového makra \Pohl pro další použití.
>
> Chci se zeptat, jak lze pomocí \if (nebo jinak) testovat shodu znaku s
> obsahem makra \Pohl. V makru \Pohl je zřejmě znak k v kódování UTF a když
> jej chci porovnat, tak test pokaždé selže.
> Upozorňuji na to, že když jsem měl ext. soubor v kódování cp-1250, tak vše
> fungovalo. Bohužel jsem musel kvůli tomu, že ConTeXt MKIV mi nechce
> zpracovávat externí data s kódováním CP-1250 přejít na kódování UTF-8.
>
To je spíš otázka na někoho, kdo zná vnitřnosti ConTeXtu. Rozdíl je
totiž v tom, že písmeno "m" je 1 byte, zatímco "ž" potřebuje v UTF-8 2
byty. XeTeX pracuje interně v Unicode, takže je to v obou případech
chápáno jako 1 písmeno a Váš \if bude fungovat. Pokud se použije TeX s
encTeXem, pak bude "ž" na vstupu překonverováno na 8bitový znak v
kódování fontu a \if bude fungovat. V LaTeXu s balíčkem inputenc už to
fungovat nebude.

Napadá mě, že by stačilo otočit pořadí taktu:

\if\Pohl m muž\else žena\fi

Pokud je v \Pohl "m", pak je funkce zřejmá. Pokud je v \Pohl "ž", pak:

a) v XeTeXu a při použití encTeXu expanduje podmínka na \if žm, je
tedy nepravdivá
b) v ostatních případech \Pohl expanduje na 2 tokeny, které vzhledem k
vlastnostem UTF-8 budou různé, podmínka tedy bude nepravdivá, text "m
muž" bude ignorován

> Příklad:
> (V \Pohl je znak "m" nebo "ž" načtený z ext. UTF-8 souboru.)
>
> \def\a{\if m\Pohl\ \else a~\fi}
>
> Prospěl\a
>
> Obsah makra \a je pokaždé "a" bez ohledu na to, zda je v \Pohl znak "m" nebo
> "ž"
>
> ConTeXtový soubor je kódován samozřejmě UTF-8 - a s nastavením:
>
> \enableregime[utf-8]
> \mainlanguage[cz]
>
> Díky za případné rady a náměty.
>
> J.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