test prazdneho znaku

Zdenek Wagner wagner at cesnet.cz
Mon Jun 20 13:13:25 CEST 2005


On Mon, 20 Jun 2005, Jaroslav Hajtmar wrote:

> Diky za rady i komentare... je to poucne.
> Zkousel jsem prvni radu ale bohuzel mi to nefunguje... ale asi z jineho
> duvodu nez ze by to bylo spatne. Problem je, ze mam to makro
> \testujproskrtnuti jako parametr dalsiho makra a tam se mu neco
> nelibi... pise mi to hlasku ...
>
> ! Undefined control sequence.
> \testujproskrtnuti #1->\def \test
>                                   {#1}\ifx \test \nic \hbox
> ...
>
> coz je divny nebot jinak vse predtim fungovalo, ale to je asi zase muj
> stary znamy problem s nezvladnutou expanzi ... :-) ... to uz asi resit
> nebudu ... to by asi bylo nad me sily..
>
Mate definici na nevhodnem miste, \def\test{#1} musi byt uvnitr toho
makra, kde jej testujete pomoci \ifx. Pokud je to vicestupnove, prenasite
pouze #1 (tedy makro dostane parametr #1 a kdyz jej chce poslat dal,
musite pouzit \dalsi{#1} -- zavorky jsou nutne, jinak by parametrem
dalsiho makra byl jen prvni znak z #1).

> Ale ten druhy priklad FUNGUJE SQELE!!!... Vzhledem k tomu, ze zadna
> matika tam neni tak je to bezva... a funkcni ...
> Jeste jednou diky mnohokrat za vyreseni meho problemu a za poucny komentar.
> Zdravi Jarda Hajtmar
>
>
>
> Zdenek Wagner napsal(a):
>
> >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
> >
> >
> >
> >
> >---
> >avast! Antivirus: Prichozi zprava cista.
> >Virova databaze (VPS): 0524-6, 18.06.2005
> >Testovano: 20.6.2005 12:09:15
> >avast! (c) copyright 2000-2004 ALWIL Software.
> >http://www.avast.com
> >
> >
> >
> >
> >
> >
>
>
>
> ---
> avast! Antivirus: Odchozi zprava cista.
> Virova databaze (VPS): 0524-6, 18.06.2005
> Testovano: 20.6.2005 13:02:48
> avast! (c) copyright 2000-2004 ALWIL Software.
> http://www.avast.com
>
>
>

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