[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