[cstex] Dirty trick s countery

Zdenek Wagner zdenek.wagner at gmail.com
Mon Sep 17 12:03:50 CEST 2012


Dne 17. září 2012 11:57 Tomas Hala <thala at pef.mendelu.cz> napsal(a):
>
> A ještě jsem to preventivně vyřešil i pro ten případ bez lomítka:
>
> \def\zkusmebez#1{
> \ifx\csname#1\endcsname\undefined

Tohle nemůže fungovat, protože se bude testovat shoda \csname s prvním
tokenem expandovaného parametru, což asi nikdy \csname nebude. Před
\ifx chybí \expandafter. Stále však není ošetřen případ, kdy je
kontrolní sekvence definována, ale není to counter.

>  \newcount\csname#1\endcsname \csname#1\endcsname=1
> \else
>  \advance\csname#1\endcsname by 1
> \fi
>
> \the\abc % pro kontrolu
> }
>
> Vyhovuje?
>
> Tom
>
>
>
> Mon, Sep 17, 2012 ve 11:41:53AM +0200 Tomas Hala napsal(a):
> #
> # Ahoj,
> #
> # právě takto to funguje (vyzkoušeno):
> #
> # \def\zkusme#1{
> # \ifx#1\undefined
> #    \newcount#1 #1=1
> # \else
> #  \advance#1 by 1
> # \fi
> #   \the\abc % pro kontrolu
> # }
> # \zkusme{\abc}
> # \zkusme{\abc}
> # \zkusme{\abc}
> #
> # Lišíme se akorát v lomítku (\abc vs. abc).
> # Je to lomítko problém, nebo ne?
> #
> # Tom
> #
> # ------------------------
> #
> # Mon, Sep 17, 2012 ve 11:32:04AM +0200 Jaroslav Hajtmar 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
> # # }
> # #
> # # 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



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




More information about the csTeX mailing list