chyba: Missing character
Stepan Kasal
kasal at math.cas.cz
Wed Nov 17 18:06:05 CET 2004
Dobry den,
In cz.comp.cstex, you wrote:
>> \catcode`\^^a0=13 \def^^a0{~}
>
> Rovnako som riesil podobny problem so znakom s cislom 0, ktory mal mat
> tiez vyznam medzery.
> Nebol som vsak uspesny s o nieco ambicioznejsim planom zadefinovat len jedno
> makro, ktoreho pouzitie by vyzeralo nejako takto: \zmen{0}{\space} . Ide to?
Priciny Vaseho neuspechu jsou jiste vysvetleny napr. v Olsakove TBN.
Asi se ^^xx interpretuje brzy, podobne jako prirazeni catcode a vytvoreni
ridicich sekvenci.
Makro \zmen by jiste slo napsat s pomoci dvou dlouhych \ifcase (to druhe by
bylo utvoreno tak, aby v nem byly vsechny znaky aktivni), ale to lze stezi
povazovat za elegantni reseni.
Lze je vsak napsat na tri radky, pokud pouzijeme eTeX a jeho primitivum
\scantokens:
{\catcode`^=12
\gdef\zmen#1#2{\scantokens{\catcode`\^^#1=\active \def^^#1{#2}}}
}
Pri pouziti bezneho TeXu je poteba toto primitivum emulovat; k tomu jsem
si vypujcil definici z texinfo.tex. Kompletni priklad, ktery funguje v obou
variantach, prikladam nize.
Zdravim,
Stepan Kasal
% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
\ifx\eTeXversion\undefined
\csname newwrite\endcsname \macscribble
\def\scantokens#1{%
\toks0={#1}%
\immediate\openout\macscribble=\jobname.tmp
\immediate\write\macscribble{\the\toks0}%
\immediate\closeout\macscribble
\input \jobname.tmp
}
\fi
{\catcode`^=12
\gdef\zmen#1#2{\scantokens{\catcode`\^^#1=\active \def^^#1{#2}}}
}
\zmen{68}{slon} % predefinuj pismenko h, ^^68
\message{h}
\end
More information about the csTeX
mailing list