[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