[cstex] Plain: parametr se zpětným lomítkem

Jaroslav Hajtmar hajtmar at gyza.cz
Fri Feb 8 13:38:57 CET 2013


Na druhou stranu byste tím možná někomu zvednul sebevědomí :-).
J.Hajtmar


Dne 8.2.2013 13:15, T.K. napsal(a):
> Děkuji všem za odpovědi, pomohly mi odhalit pravou příčinu, která ale
> byla někde jinde. Po doplnění \relax za dvanáctku minimální příklad
> fungoval, v mém původním souboru ale ten \relax už byl! Jen kvůli tomu
> zapomenutému \relaxu končil i min. příklad stejnou chybou, jako původní
> makro. Takže skutečnou příčinu jsem při tvorbě minimálního příkladu ze
> souboru „vyminimalizoval“. Už jsem ji našel, ale radši se tu nebudu
> přiznávat, co to bylo… Přínos pro ostatní by byl stejně nulový.
>
> Ještě jednou díky!
>
> Tomáš Kučera
>
>
>
>
>
> Dne 8.2.2013 11:09, Zdenek Wagner napsal(a):
>> Dne 8. února 2013 10:37 T.K. <motarecuk at seznam.cz> napsal(a):
>>> Dobrý den,
>>>             prosím o "nakopnutí", evidentně něco přehlížím.
>>>
>>> Potřebuji (v plainu), aby \mojemakro pracovalo s obsahem parametru,
>>> který může případně mít na konci zpětné lomítko (coby běžný znak).
>>> Myslel jsem, že to umožním tak, že \mojemakro (definované bez parametru)
>>> jen otevře skupinu, v ní změní kategorii zpětného lomítka na 12 a spustí
>>> \pomocnemakro, které načte parametr, zpracuje ho a uzavře skupinu.
>>> Jenže zpětné lomítko i tak očividně zneviditelňuje pravou složenou
>>> závorku jako konec čtení parametru. Kde je, prosím, zakopaný pes?
>>> Předem díky
>>> Tomáš Kučera
>>>
>>> Minimalizovaný soubor:
>>>
>>> \def\mojemakro{\bgroup\catcode`\\=12\pomocnemakro}
>> Chybí mezera za dvanáctkou. Ta mezera totiž ukončí syntaktické
>> pravidlo <číslo>. V této podobě se totiž začne expandovat \pomocne
>> makro ještě před změnou kategorie, tj. TeX dostane:
>>
>> \catcode`\\=12{abc\}
>>
>> Vše ve složených závorkách je načteno ještě před změnou kategorie. Pak
>> teprve má procesor šanci zjistit, ža číslo je 12, ale už dříve najde
>> problém se závorkami. Mezera způsobí, že se kategorie změní ještě před
>> expanzí makra \pomocnemakro.
>>
>>> \def\pomocnemakro#1{#1\egroup}
>> Mimochoden, v této definici se dá otočit pořadí:
>>
>> \def\pomocnemakro#1{\egroup#1}
>>
>> Token se totiž načetl ještě před \egroup, tedy zpětné lomítko mělo
>> kategorii 12. Pak máte možnost v definici snadno použít kontrolní
>> sekvence, např. lze psát:
>>
>> \def\pomocnemakro#1{\egroup{\tt #1}}
>>
>>> \mojemakro{abc\}
>>> \bye
>>> _______________________________________________
>>> csTeX mailing list
>>> csTeX at cs.felk.cvut.cz
>>> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>
>>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex




More information about the csTeX mailing list