[cstex] Plainovská makra s volitelnými parametry

Petr Olsak petr at olsak.net
Wed Jun 28 09:10:29 CEST 2017


Unverzálnější řešení nabízí makro \optdef, které je popsáno na

http://petr.olsak.net/opmac-tricks.html#optdef

Aby to začalo fungovat, je třeba ze zmíněné webové stránky obkreslit 
příslušných šest řádků a dále z opmac.tex je třeba převzít čtyři řádky 
definice \isnextchar.

Zdravím

Petr Olšák


On Wed, 28 Jun 2017, Jaroslav Hajtmar wrote:

> 
> Ahoj Honzo.
> 
> Díky mnohokrát za rozšíření obzorů, … hned jdu do své knihovničky pro TBN a
> projdu si to, ať jsem aspoň do té doby než to zapomenu ☺…. v obraze …
> 
>  
> 
> Ještě jednou hezký den všem v konferenci.
> 
> Jarda Hajtmar
> 
>  
> 
>  
> 
> Od: csTeX <cstex-bounces at cs.felk.cvut.cz> za uživatele Jan Sustek
> <Jan.Sustek at seznam.cz>
> Příjemce odpovědi: Czech and Slovak list <cstex at cs.felk.cvut.cz>
> Datum: středa 28. června 2017 7:49
> Komu: Czech and Slovak list <cstex at cs.felk.cvut.cz>
> Předmět: Re: [cstex] Plainovská makra s volitelnými parametry
> 
>  
> 
> Ahoj Jardo,
> 
> lze použít primitiv \futurelet. Ten je popsaný v TBN, mrkni na to a pak čti
> dál tento mail. :-) V makru \pocetradku se nejprve uloží do \mujtoken token,
> který je použitý za \pocetradku. Pak se provede \pocetradkutest, přičemž
> onen token se vrátí do čtecí fronty přímo za token \pocetradkutest. V makru
> \pocetradkutest se provede test, jestli onen token je hranatá závorka, nebo
> ne. Podle toho se makro větví. Na primitiv \else si TeX šáhne přes
> \expandafter, aby ve čtecí frontě potom bylo \pocetradkusparametrem[ a ne
> \pocetradkusparametrem\else. Řešení následuje.
> 
> \def\pocetradku{\futurelet\mujtoken\pocetradkutest}
> \def\pocetradkutest{\ifx\mujtoken[\expandafter\pocetradkusparametrem\else\p
> ocetradkubezparametru\fi}
> \def\pocetradkusparametrem[#1]{\message{Makro volano s parametrem "#1".}}
> \def\pocetradkubezparametru{\message{Makro volano bez parametru.}}
> 
> \pocetradku bla \pocetradku[neco] bla \pocetradku
> \bye
> 
> Příjemné TeXování přeje
> Honza
> 
> ---------- Původní e-mail ----------
> Od: Jaroslav Hajtmar <hajtmar at gyza.cz>
> Komu: Czech and Slovak list <csTeX at cs.felk.cvut.cz>
> Datum: 28. 6. 2017 5:05:31
> Předmět: [cstex] Plainovská makra s volitelnými parametry
>
>       Dobrý den.
>
>       Rád bych zase po čase  "provětral" tuto konferenci dotazem na
>       možnost definice plainových maker s volitelným(i) parametrem(y).
>
>       Ačkoliv plaintex prakticky nepoužívám (s výjimkou kompilace
>       starých věcí z archívu), tak mám většinu maker v ConTeXtu
>       plainových.
>
>       ConTeXt řeší možnost maker s volitelnými parametry, rád bych se
>       však zeptal v této konferenci, zda lze, popř. jak lze v plainu
>       definovat makro s volitelným (více volitelnými) parametry.
>       Koukal jsem do TBN a na podobnou věc jsem nenarazil. Dále bych
>       rád upozornil, že ačkoliv jsem schopen svůj problém řešit makry
>       různých názvů (některé bez parametru jiné s parametry), tak mne
>       jisté důvody (kompatibilita se staršími verzemi mých dokumentů)
>       vedou k tomu, abych se pokusil hledat řešení právě pomocí
>       volitelných parametrů.
>
>        
>
>       Rád bych měl tedy makro s názvem např.: \pocetradku, které by
>       vracelo něco jíného než makro \pocetradku{<jmenosouboru>} resp.
>       možná lépe pro mne \pocetradku[<jmenosouboru>].
>
>        
>
>       Makro \pocetradku by vracelo počet řádků jakéhosi defaultního -
>       v paměti aktuálního souboru, tzn. bylo by ekvivalentní s makrem
>       \pocetradku[], zatímco \pocetradku[<jmenosouboru>] by vracelo
>       počet řádků nějakého jiného souboru. Při experimentování jsem
>       narazil meze svých znalostí plainu, a proto bych se rád obrátil
>       na konferenci. Může mne někdo odkázat na nějaký relevantní zdroj
>       popř. mi nějak poradit?
>
>       Na internetu jsem našel nějaké podobné věci dělané v LaTeXu, to
>       je pro mne však nepoužitelné...
>
>        
>
>       Rád přijmu i to, že mi někdo rozmluví můj problém řešit zrovna
>       takto .... :-).
>
>        
>
>        
>
>       Díky za případné tipy a rady
>
>        
>
>       Zdraví
>
>       Jarda Hajtmar
>
>        
>
>        
> 
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex
> 
> 
>


More information about the csTeX mailing list