[cstex] Plainovská makra s volitelnými parametry

Jaroslav Hajtmar hajtmar at gyza.cz
Wed Jun 28 08:39:50 CEST 2017


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\pocetradkubezparametru\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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20170628/17c5dc75/attachment-0002.html>


More information about the csTeX mailing list