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

Jaroslav Hajtmar hajtmar at gyza.cz
Thu Apr 22 14:16:46 CEST 2010


Díky za jednoduché řešení - funguje to jak jste napsal ...
Určitě mne však stejně čeká zjistit jak to udělat systémově, protože má 
zkušenost je, že je jen otázka času kdy to budu potřebovat řešit na jiné 
úrovni a tam mi podobný "fígl" nepomůže. Zkusím napsat to ConTeXtové 
konfery..

BTW: Kdysi jsem to makro měl s testováním písmenka "ž", ale nakonec jsem 
ho předělal, protože externí tabulky, které mi jsou dodávány někdy mají 
příznak pohlaví "z" a někdy "ž". S písmenkem "m" mi to připadlo 
univerzálnější ...

Ještě jednou díky ..

J.Hajtmar

Dne 22.4.2010 13:16, Zdenek Wagner napsal(a):
> 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
>>
>>      
>
>
>    




More information about the csTeX mailing list