test prazdneho znaku
Zdenek Wagner
wagner at cesnet.cz
Mon Jun 20 11:56:28 CEST 2005
On Mon, 20 Jun 2005, Jaroslav Hajtmar wrote:
> Dobry den.
> Je mozne nejak testovat prazdnou hodnotu ...vim ze existuje v TeXu neco
> jako \null ale to je asi o necem jinem.
> Lapidarne receno bych potreboval neco takoveho:
>
\null je prazdny box, coz neni to, co potrebujete. Mate nekolik moznosti.
1. Nadefinujete si prazdne makro, napr.
\def\nic{}
V definici makra udelate tento test:
\def\makro#1{\def\test{#1}%
\ifx\test\nic
% prazdny parametr
\else
% neprazdny parametr
\fi
}
2. Pokud parametr obsahuje pouze "slusne znaky", tj. neni v nem
matematika, muzete test udelat takto:
\def\makro#1{\ifcat$#1$ % prazdny parametr
\else % neprazdny parametr
\fi
}
Pridam podrobnejsi vysvetleni. Pokud je parametr #1 prazdny, pak prvni
podminka vidi \ifcat$$, protoze \ifcat provadi plnou expanzi. Oba dolary
maji stejnou kategorii (ciselnou hodnotu z hlavy nevim). Provedou se tedy
prikazy mezi druhym dolarem a \else. Pokud #1 neni prazdny, pak \ifcat$#1
testuje kategorii dolaru a prvniho znaku parametru. Rekli jsme si, ze v
parametru neni matematika, takze kategorie jsou ruzne. Cely parametr a vse
az do \else je tudiz ignorovano a provedou se prikazy mezi \else a \fi.
Pokud si kvuli zpracovani udaju z databaze nastavite napr. \catcode`\$=12
a parametr bude zacinat dolarem s kategorii 12, bude to stale fungovat,
protoze jeho kategorie se lisi od kategorie matematickeho propinace, ktera
je zapamatovana v definici makra.
Zdenek Wagner
e-mail: wagner at cesnet.cz
see also http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz
More information about the csTeX
mailing list