[cstex] Plainovská makra s volitelnými parametry

Jaroslav Hajtmar hajtmar at gyza.cz
Wed Jun 28 10:17:20 CEST 2017


Dobrý den.
Díky za radu. Udělal jsem, jak jste poradil a zkusím to otestovat… Ještě jednou díky. 

BTW:  na http://petr.olsak.net/tpp.html je překlep Zpravdaje… Vzpomínám, že jsem kdysi slyšel, že má vyjít TPP, ale pak na to zapomněl, takže teď jsem ji konečně objednal … 

Zdraví 
Jarda Hajtmar


Dne 28.06.17 9:10, csTeX za uživatele Petr Olsak <cstex-bounces at cs.felk.cvut.cz za uživatele petr at olsak.net> napsal(a):

    
    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