[cstex] Vyhlledani znaku (retezce) v plainovskem makru po expanzi
Robert Marik
marik at mendelu.cz
Sat Aug 18 12:46:20 CEST 2007
Takto?
\def\PROHLEDAVANYTEXT{BOSA NOVA}
\expandafter\for\expandafter{\PROHLEDAVANYTEXT}{%
\if#1\HLEDANYZNAK Hledany znak \HLEDANYZNAK\ byl v textu
\uv{#1} nalezen\par%
\else Hledany znak \HLEDANYZNAK\ nebyl v textu
\uv{#1} nalezen\par
\fi}\endfor
btw: Mozna by se na neco takoveho dal pouzit i perltex nebo luatex, ale o
techto programech urcite vite. Ja mam databazi prikladu a tu nenacitam
texem ale perlovskym skriptem, ktery mi vytvori texovsky soubor podle
potreby.
R.M.
On Sat, 18 Aug 2007, Jaroslav Hajtmar wrote:
> Dobry den.
> Uz se delsi dobu snazim pro jednu aplikaci vyresit tento problem :
> Mam v nejake textove databazi udaje a potrebuju odhalit radek, ktery
> obsahuje jistou skupinu znaku (pro jednoduchost by stacil vlastne i
> jeden znak).
> Ve skutecnosti jde vlastne o prohledavani textoveho retezce a zjisteni,
> zda tento retezec obsahuje dany znak ci nikoliv.
>
> Vzhledem k mym TeXovskym programatorskym schopnostem jsem hledal v TBN,
> kde vetsinou neco objevim.
> Nasel jsem tam ukazku prohledavani retezce vlastne skoro tak jak
> potrebuji (viz. nize), ovsem s tim rozdilem, ze ja potrebuji predat
> makru svuj retezec ve forme nejake "promenne", ktera tento retezec
> obsahuje.
> At delam co delam, nedari se mi docilit toho, aby se makro
> \PROHLEDAVANYTEXT uvnitr "forcyklu" expandovalo a tim padem aby se obsah
> promenne prohledaval. Zkousel jsem hledat reseni treba i pomoci
> tokenregistru ale nic se mi nepodarilo. Porad mam totiz velke problemy s
> \expandafter atd...
> Existuje prosim vubec nejaka jednodussi moznost pomoci plainTeXu najit
> vyskyt znaku (ci spis by mi vyhovovalo retezce) uvnitr makra, ktere se v
> prubehu testu prohledava az po expanzi??
> Resp. mozna obecneji : Jakym zpusobem lze predat nejakemu makru
> parametr, kterym je nejaka "promenna - makro" nebo tokenregistr, ktery
> se pred zahajenim zpracovani expanduje.
> Doufam, ze jsem moc neblabolil ...
>
> Predem diky vsem kdo se timto budou chtit zaobirat
> Jarda Hajtmar
>
> Nasleduje minimalni priklad :
>
> %%% viz. TBN [50]
>
> \long\def\for #1#2\endfor{\def\forbody##1{#2}\let\next=\forcycle
> \next #1^^X}
> \def\forcycle#1{\if#1^^X\let\next=\relax
> \else\forbody#1%
> \fi\next}
>
>
> %\for{ABC123bc}{zpracovávám #1}\endfor
>
>
> \def\HLEDANYZNAK{S}
>
> \for{A B C S X WWW UXY}{%
> \if#1\HLEDANYZNAK Hledany znak \HLEDANYZNAK\ byl v textu
> \uv{#1} nalezen\par%
> \else Hledany znak \HLEDANYZNAK\ nebyl v textu
> \uv{#1} nalezen\par
> \fi}\endfor
>
>
>
> % Ja potrebuji zprovoznit toto :
>
> \def\PROHLEDAVANYTEXT{BOSA NOVA}
>
> \for{\PROHLEDAVANYTEXT}{%
> \if#1\HLEDANYZNAK Hledany znak \HLEDANYZNAK\ byl v textu
> \uv{#1} nalezen\par%
> \else Hledany znak \HLEDANYZNAK\ nebyl v textu
> \uv{#1} nalezen\par
> \fi}\endfor
>
>
> \end
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
More information about the csTeX
mailing list