Dalsi problem

David Necas (Yeti) yeti at physics.muni.cz
Mon Jul 28 21:46:11 CEST 2003


On Mon, Jul 28, 2003 at 09:21:12PM +0200, Jindrich Michal wrote:
>
> Tak a tady mam dalsi problem. Vubec nevim, kde muze byt.
>
> \gdef\xtrue{T}
> \gdef\xfalse{F}
>
> %Toto makro by melo zjistovat pritomnost substringu ve stringu
> % #1 subsring, #2 string
> \gdef\IsSubstrInStr#1#2{%
>   \gdef\isis##1#1##2\endisis{%
>     \gdef\fstsubstr{##1}
>     \gdef\sndsubstr{##2}
>     \gdef\newstr{##1##2}
>     \gdef\oldstr{#2}
>     \gdef\nic{}}%
>   \isis #2#1\endisis
>   \ifx\newstr\oldstr
>     \ifx\sndsubstr\nic \xfalse \else \xtrue \fi
>   \else \xtrue \fi
> }%
>
>
> \def\temp{\IsSubstrInStr {a}{bcd}} % A tohle nefunguje. Proc?
> \edef\tempa{\temp}

Ja vas nechci zklamat, ale nefunguje to.

\IsSubstrInStr{aaa}{bcda}

da T, pricemz spravne je F. Navic mi neni jasne, k cemu tam
jsou ty \gdefy, kdyz by to s \defy delalo presne totez.

Nicmene k puvodni otazce: Telo makra definovaneho \edefem
zpracovava expand procesor, ale ne hlavni procesor. Tokeny
se proste expanduji, az to dal nejde, a vysledek teto
expanze je definici makra. Protoze \isis je v dobe definice
\tempa nedefinovane, expand procesor ho nema na co expadovat
a TeX vyhodi chybu.

\gdef\isis... by provadel az hlavni procesor (pri *pouziti*
makra), a ten se zde vubec nedostane ke slovu.

Slo by asi nejak tam vecpat \noexpand, i kdyz mi ted neni
uplne jasne jak, ale stejne to nefunguje.

Doporucuji precist uvodni kapitoly TeXbooku naruby, je to
tam pekne vysvetleno.

Yeti


--
Do not use tab characters. Their effect is not predictable.



More information about the csTeX mailing list