Test stringu pomoci \ifx ...

Zdenek Wagner wagner at cesnet.cz
Wed May 11 10:30:42 CEST 2005


On Wed, 11 May 2005, Jaroslav Hajtmar wrote:

> Dobry den.
> Prosim o Vase rady ohledne uziti podminky \IFX pro testovani toho, zda
> je vstupni parametr roven nejakemu viceznakovemu retezci.
> Nakonec jsem to rozchodil tak, ze jsem z retezcu, ktere jsem chtel
> testovat,  udelal tokeny pomoci definic.. pak uz to pomoci \ifx slo
> zjistit. Existuje nejake jine rozumejsi reseni, jak zjistit, ze vstupni
> parametr (ktery musim nejdriv vyexpandovat) je roven nejakemu
> viceznakovemu retezci??
> Moje reseni, ktere nahodou funguje :-) :
>
Obvykle staci \def, protoze parametry se expanduji vzdy. laTeXiste musi
dat pozor na to, ze \newcommand je \long\def.

> \def\celkovehodnoceni#1{\edef\a{\e[Pripona]}\edef\temp{#1}% nejdriv
> vyexpandovat parametr
> \def\PV{PV}\def\P{P}\def\N{N}\def\NK{NK}% udelat z retezcu "PV","P","N"
> a "NK" tokeny
> \ifx\PV\temp prospěl\a\ s vyznamenáním\fi% a ted uz lze testovat, zda
> vstupni parametr (v \temp) je roven tokenu \PV, \P, ...atd.
> \ifx\P\temp prospěl\a\ \fi%
> \ifx\N\temp neprospěl\a\ \fi%
> \ifx\NK\temp neklasifikován\a\ \fi%
> }
>
> PS: napadlo me uzit i tokenregistru, ale to se mi nakonec nepodarilo
> rozchodit...

To by nefungovalo.

> Jinak by bylo rozumne pouzit \ifcase, ale bohuzel mam ta data v textove
> podobe ... a koneckoncu me to zajima i z hlediska  dalsiho mozneho
> vyuziti nekdy v budoucnosti...
>
Za \ifcase musi byt cislo v jakekoliv podobe, takze pokud mate jistotu, ze
v parametru makra budou jen cislice, muzete psat:

\def\neco#1{\ifcase #1 ...

Pokud v parametru bude neco jineho nez cislice, pak vse pocinaje timto
znakem bude povazovano za text pro hodnotu 0. Nejsem si jist, co se stane,
kdyz ani prvni neprazdny znak makra nebude cislice. Nejspis TeX nahlasi,
ze chybi cislo, doplni se nula a provede se tedy kompletni #1 + vsechno k
nejblizsimu \or.

> Diky vsem za radu ...
> Jarda Hajtmar
>
>
>
> ---
> avast! Antivirus: Odchozi zprava cista.
> Virova databaze (VPS): 0519-1, 10.05.2005
> Testovano: 11.5.2005 10:09:01
> 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