[cstex] Plainovská makra s volitelnými parametry
Jan Sustek
Jan.Sustek at seznam.cz
Wed Jun 28 07:49:20 CEST 2017
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/e5dda2f5/attachment-0002.html>
More information about the csTeX
mailing list