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