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