[cstex] Dotazy ke ConTeXtu (Layers+test znaku s diakritikou)

Zdenek Wagner zdenek.wagner at gmail.com
Sun Apr 1 23:23:03 CEST 2007


2007/4/1, Jaroslav Hajtmar <hajtmar at gyza.cz>:
> Dobry den.
>

>
> Kazdopadne komentar pana Wagnera k UTF8 zcasti vysvetluje i to, proc mi
> nektera plainovska makra nepracuji pokud mam zapnuto kodovani UTF8 -
> proto porad pouzivam CP1250
>
To zalezi na tom, jak znaky z UTF8 konvertujete do kodovani fontu.
ASCII je v UTF8 kodovano beze zmeny, tj. 1 pismeno = 1 bajt. Pro ceska
a slovenska pismena s diakritikou plati 1 pismeno = 2 bajty. Pokud se
konverze resi pomoci aktivnich znaku, objevi se cela rada problemu.
Vas drive zmineny test \if#1ž nebude fungovat. Pokud jako #1 nactete
oba bajty, dojde k plne expanzi a jejim vysledkem bude pravdepodobne
nekolik tokenu, takze vysledkem bude \iffalse. Pokud se do #1 dostane
jen prvni bajt, pak pri jeho expanzi behem vyhodnocovani podminky
dojde k chybe. Podobne problemy vzniknou pri
\futurelet\znak\testujznak, nebo pri vytvareni inicialy na pocatku
odstavce pomoci makra vlozeneho v \everypar. Do makra se tak dostane
jen pulka pismene a zrejme dojde k chybe pri expanzi.

Tyto problemy resi prave encTeX, protoze ke konverzi dochazi pri cteni
souboru a TeX vidi pismena v kodovani fontu s \catcode=11.

Mimochodem, encTeX se da zapnout i ve standardnim LaTeXu. Zcela bez
problemu pouzivam LaTeX s csbabel 3.1 a prekodovanim vstupu z UTF8
encTeXem, a to jak do IL2, tak do T1. Prekodovani UTF8 -> IL2 je
reseno v encTeXu, staci na prvni radek napsat:

\input csenc-u

Prekodovani UTF8 -> T1 jsem si udelal sam. Stacilo vytvorit soubor
csenc-u-t1.tex s prislusnymi definicemi.

EncTeX umi i jine zajimavosti. Dostal jsem nemecky text (jak uz to
byva, psany ve Wordu), ktery jsem mel vysazet v "moderni" nemcine, tj.
s "ss". Word vsak projevil jisty naznak "inteligence" a misto ss obcas
napsal ß. Protoze kniha, kterou jsem mel sazet, byla v nekolika
souborech, nechtelo se mi vsude delat search/replace. Navic nemecka
pravidla deleni v mem pocitaci stale jeste pocitaji s ostrym ß a slova
s "ss" casto deli prave mezi temito "s". Vyresil jsem to tedy temito
tremi radky:

\mubyte \ss ß\endmubyte
\mubyte \ss ss\endmubyte
\def\ss{\hbox{ss}}

Slova obsahujici "ss" se sice pak prestanou delit, ale jen v jednom
pripade to zpusobilo problem pri radkovem zlomu, coz jsem osetril
rucne vlozenim \-.

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




More information about the csTeX mailing list