[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