Pozirani mezery za expandovanym makrem

Antonin Strejc STREJC at vc.cvut.cz
Thu Apr 1 16:44:11 CEST 1999


Petr Danecek pise:
>\def\text{textik}
>Pisu, pisu \text, ale \text ejhle.
>
>Text se vysazi jako "Pisu, pisu textik, ale textikejhle".
>Jedno z moznych reseni, ale ktere vede nekdy k potizim, je toto:
>
>\def\text#1{textik\savespc{#1}}
>\def\savespc#1{{\def\next{#1}\ifx\next\empty\else
>  \if #1.\else\if #1,\else\if #1;\else\if #1:\else\ \fi\fi\fi\fi\fi#1}}
>
>Neni to moc pekne. Jina moznost je psat explicitne
>Pisu, pisu \text, ale \text\ ejhle.
>Lze to jeste nejak jinak?

Nejenze to neni moc pekne, ale takovy algoritmus je chybny. Za prve
nepokryva vsechny znaky, pred kterymi se nema udelat mezera (otaznik,
vykricnik atd.), ale hlavne: neresi vubec pripad, kdy ma nasledovat
pismeno bez mezery (pripona, koncovka, slozene slovo).

Vezmete obdobny typicky priklad makra \TeX. Kdybyste ho osetril
vasim zpusobem, jak byste vysazel sklonovana slova "TeXu", "TeXem" ci
odvozena slova "TeXovsky" atd?  Proste, snaha po takovem makru je od
zacatku marna.

Proto je nutne pouzivat za nazvem tokenu explicitni mezeru, je-li
treba ji vysazet.

S pozdravem
Antonin Strejc

---------------------------------------------------------------------
Ing. Antonin Strejc                            Phone: +420-2-24352938
---------------------------------------------------------------------
Czech Technical University in Prague                 Computing Centre
Czech Republic                               Zikova 4, 166 35 Praha 6
---------------------------------------------------------------------



More information about the csTeX mailing list