[cstex] Dirty trick s countery

Zdenek Wagner zdenek.wagner at gmail.com
Mon Sep 17 11:42:14 CEST 2012


Dne 17. září 2012 11:32 Jaroslav Hajtmar <hajtmar at gyza.cz> napsal(a):
> Dobrý den.
> Díky za reakci a za čistý trik :-) , ale bohužel potřebuju tento test
> a tuto věc udělat uvnitř makra.
>
> tj. něco takového
>
> \def\mymacro#1{
> \ifx#1\undefined \newcount#1 #1=1
>   \else \advance#1 by1
> \fi
> }

Makro není problém, to samozřejmě lze, ale myslím, že to nejde přímo
uvnitř \if, protože \newcount je \outer aspoň si to myslím).
Samozřejmě to lze obejít.

Jednoduchý \ifx nezabere, například tohle by havarovalo:

\def\aaa{cokoliv}
\mymacro\aaa

Po expanzi bude problém v \advance\aaa by1, protože \aaa je
definováno, ale není to counter.


>
> takže po volání makra by to mělo vracet výsledky takto :
>
> \newcount\ahoj
>
> \mymacro{ahoj}
> \the\ahoj % -----> 1
> \mymacro{ahoj}
> \the\ahoj % -----> 2
> \mymacro{ahoj}
> \the\ahoj % -----> 3
> \mymacro{ahoj}
> \the\ahoj % -----> 4
>
>
> Díky Jarda Hajtmar
>
>
>
> Dne 17. září 2012 9:16 Tomas Hala <thala at pef.mendelu.cz> napsal(a):
>>
>> Ahoj,
>>
>> nastačil by Ti čistý trik?:-)
>>
>> \newcount\abc \abc=66
>> %\newcount\xyz
>>
>> \ifx\xyz\undefined \newcount\xyz \xyz=1
>>   \else  \advance\abc by 1 N
>> \fi
>>
>> Tom H.
>>
>> -------
>>
>> Mon, Sep 17, 2012 ve 06:54:48AM +0200 Jaroslav Hajtmar napsal(a):
>> # Dobrý den.
>> # Nějak v poslední době nezaznamenávám v této konfeře život, a tak
>> # přicházím s nabídkou konečně veskrze kvalitního problému :-) ....
>> #
>> # Rád bych se zeptal, zda lze pomocí nějakého špinavého triku v TeXu
>> # vytvořit makro, které bude testovat existenci nějakého counteru, a
>> # které v případě jeho neexistence jej vytvoří a přiřadí mu jedničku,
>> # zatímco  v případě jeho existence jej zvýší o jedničku?
>> #
>> # Mám na mysli něco takového  (zapsáno symbolicky a naprosto šíleně):
>> #
>> # \def\createorincrementcounter#1{
>> # \if#1\isdefined\newcount#1 #1=1\else\advance#1 by1\fi
>> # }
>> #
>> # Nouzově připouštím i o něco méně šílenou variantu, která bude
>> # spočívat v tom, že předem vytvořím sadu několika counterů a následně
>> # bych je rád makrem incrementoval v tomto duchu:
>> #
>> # \newcount\myfirstcounter
>> # \newcount\mysecondcounter
>> # \newcount\mythirdcounter
>> #
>> # \def\advancecounter#1{\advance#1 by1}
>> #
>> # Tato konstrukce by měla umožnit makrem \advancecounter incrementovat
>> # hodnotu některého z čítačů tj. volání
>> # makra \advancecounter{myfirstcounter} zvýší čítač \myfirstcounter o
>> # jedničku, zatímco \advancecounter{mysecondcounter} incrementuje
>> # counter ´\mysecondcounter atd.
>> #
>> # Pokud by něco takového šlo, napsal bych následně k čemu to potřebuju :-)...
>> #
>> # Díky za případný zájem expertů typu pana Wagnera či pana Šustka ;-)
>> # ... ale i dalších abych někoho neurazil :-)
>> #
>> # Pěkný den s mým červíkem v hlavě přeje
>> # Jarda Hajtmar
>> #
>> #
>> #
>> #
>> #
>> #
>> #
>> #
>> # _______________________________________________
>> # csTeX mailing list
>> # csTeX at cs.felk.cvut.cz
>> # http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>
>>                                          Tomáš Hála
>> --------------------------------------------------------------------
>> Mendelova univerzita, Provozně ekonomická fakulta, ústav informatiky
>> Zemědělská 1, CZ-613 00 Brno,  tel. +420 545 13 22 28
>> --------------------------------------------------------------------
>> http://akela.mendelu.cz/~thala
>> _______________________________________________
>> 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



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz




More information about the csTeX mailing list