Nefungujici makro na redefinici kapitalek...

David Necas (Yeti) yeti at physics.muni.cz
Sun Mar 21 00:20:51 CET 2004


On Sat, Mar 20, 2004 at 06:22:09PM +0100, Matous Jan Fialka wrote:
> % --- cut test.tex ---
> % nejprve zaktivnim anglicke kapitalky (u ceskych jsem to zatim nezkousel)
> \newcount\cnt\cnt=`\A
> \loop
>    \catcode\cnt=13 \ifnum\cnt<`\Z \advance\cnt1
> \repeat

Tohle je zajimave reseni, ale budiz.

> % nadefinuji jednotlive kapitalky
> \cnt=`\A
> \loop
>    \def\char\cnt{\pred\char\cnt\po} \ifnum\cnt<`\Z \advance\cnt1
> \repeat

Problem je, ze \def\char\cnt{neco} predefinuje \char jako
makro se separatorem \cnt, ktere expanduje na ,neco`.
Se znakem s ASCII hodnotou \cnt to ani nehne.

\char je povel hlavniho procesoru, takze jestli se nepletu,
nespravite to zadnym pridavanim \expandafter, protoze nejde
o expanzi.

Dalsim problemem je telo makra, ktere obsahuje opet
\char\cnr, ktere se interpretuji az pri pouziti (opet nelze
snadno obejit pouziti \edef namisto \def, protoze \char je
povel hlavniho procesoru).

Bezne se k podobnym ucelum pouziva trik s \uccode a \uppercase,
viz napr. TeXbook, str. 377, nebo TBN, str. 27. Protoze je
pulnoc, nebudu se uz v tuto chvili pokouset nacpat to do
\loop... ;-)

Yeti


--
Do not use tab characters. Their effect is not predictable.



More information about the csTeX mailing list