[cstex] Volitelny argument v tvare [(x1, y1)(x2, y2)...(xn, yn)], ako na to?

Tomáš Fábry fabry.tomas at gmail.com
Tue May 3 02:13:25 CEST 2011


On May 2, 6:47 pm, Jan Sustek <Jan.Sus... at seznam.cz> wrote:
> Dobry den,
>
> opravte si nasledujici makra. Pokud pouzijete syntaxi bez hranatych zavorek, budou makra fungovat stejne jako predtim. Pokud pouzijete hranate zavorky, tak se tyto zavorky odstrani a dostavame se na pripad bez zavorek. :-)
>
> Jan Sustek
>
> \def\sipka#1{\def\prvnibod{#1}%
>   \pocetbodu0
>   \dalsiznakA}
> \def\dalsiznakA{\futurelet\znak\testujA}
> \def\testujA{\ifx\znak[\let\nxt\odstranzavorky\else\let\nxt\testuj\fi\nxt}
> \def\odstranzavorky[#1]{\dalsiznak#1}
>
> > ------------ Původní zpráva ------------
> > Od: Tomáš Fábry <fabry.to... at gmail.com>
> > Předmět: Re: [cstex] Volitelny argument v tvare [(x1, y1)(x2, y2)...(xn, yn)],
> > ako na to?
> > Datum: 02.5.2011 18:30:10
> > ----------------------------------------
> > On May 2, 11:57 am, Jan Sustek <Jan.Sus... at seznam.cz> wrote:
> > > Dobry den,
>
> > > pokud jde o nacitani neznameho poctu volitelnych argumentu, jde to s
> > primitivem \futurelet jednoduse. Dokonce se to da udelat tak, ze nejsou treba
> > ani hranate zavorky. To zjednodusi jak zapisovani uzivatelum, tak programovani
> > toho makra. Nacitani resi nize uvedena makra \dalsiznak, \testuj a \dalsibod.
> > Makro \konecsipky pak s nactenymi udaji neco udela, ve Vasem pripade vykresli tu
> > sipku. Ale to uz nezavisi na tom nacitani a to necham na Vas. :-)
>
> > > Pekny den preje
> > > Jan Sustek
>
> > > \newcount\pomocny
> > > \newcount\pocetbodu
> > > \def\sipka#1{\def\prvnibod{#1}%
> > >   \pocetbodu0
> > >   \dalsiznak}
> > > \def\dalsiznak{\futurelet\znak\testuj}
> > > \def\testuj{\ifx\znak(\let\nxt\dalsibod\else\let\nxt\konecsipky\fi\nxt}
> > > \def\dalsibod(#1,#2){\advance\pocetbodu1
> > >   \expandafter\def\csname x\the\pocetbodu\endcsname{#1}%
> > >   \expandafter\def\csname y\the\pocetbodu\endcsname{#2}%
> > >   \dalsiznak}
> > > \def\konecsipky#1{\def\poslednibod{#1}%
> > >   Sipka vychazi z bodu \prvnibod\ do bodu \poslednibod\
> > >   \ifnum\pocetbodu>0
> > >     a prochazi pres body
> > >     \pomocny0
> > >     \loop\ifnum\pomocny<\pocetbodu \advance\pomocny1
> > >       (\csname x\the\pomocny\endcsname,\csname y\the\pomocny\endcsname)
> > >     \repeat
> > >   \fi
> > >   \unskip.}
>
> > > \begin{document}
> > > \sipka{(10,10)}{(15,15)}
> > > \sipka{(1,1)}(1,2)(1,5)(2,8)(9,3){(11,4)}
> > > \end{document}
>
> > > > ------------ Původní zpráva ------------
> > > > Od: Tomáš Fábry <fabry.to... at gmail.com>
> > > > Předmět: [cstex] Volitelny argument v tvare [(x1, y1)(x2, y2)...(xn, yn)],
> > ako
> > > > na to?
> > > > Datum: 01.5.2011 23:10:04
> > > > ----------------------------------------
> > > > Zdravim vas,
>
> > > > robim sty balicek, ktory pomocou tikz vykresluje zlozitejsie obrazce.
> > > > Potreboval by som vyrobit prikaz v tvare:
>
> > > > \arrow{u1}[(x1,y1)...(xn,yn)]{u2}
>
> > > > Prikaz by mal nakreslit sipku od objektu k objektu. Povedzme, ze
> > > > objekty su nejake uzly s textom, konkretne:
>
> > > > \node (u1) at (xu1,yu1) {text1};
> > > > \node (u2) at {xu2,yu2} {text2};
>
> > > > Vo volitelnom parametri by malo byt mozne zadat suradnice bodov, cez
> > > > ktore bude sipka prechadzat. Nie je dopredu zname, kolko tychto bodov
> > > > bude zadanych, mozno ziadny a mozno n.
>
> > > > Mam len malo skusenosti s tvorbou balickou a v tomto pripade absolutne
> > > > nemam predstavu ako taketo nieco dosiahnut. Nasiel by sa niekto, kto
> > > > by mi vedel poradit?
>
> > > > Velmi pekne dakujem.
>
> > > > S pozdravom TF
> > > > _______________________________________________
> > > > csTeX mailing list
> > > > cs... at cs.felk.cvut.cz
> > > >http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
> > Zdravim, Vas sposob mi pride najviac elegantny, velmi pekne dakujem.
> > Upravil som si ho pre svoje potreby (neviem, ci zrovna elegantne), ale
> > funguje, no predsa ak by to bolo mozne potreboval by som tam tie
> > hranate zatvorky, je to v poziadavkach syntaxe, ktoru mam danu. Vedeli
> > by ste s tym nieco urobit? Moj kod vyzera takto:
>
> > \documentclass[10pt,a4paper]{article}
>
> > \usepackage{tikz}
>
> > \newcount\pomoczacatek
> > \newcount\pomockonec
> > \newcount\pocetbodu
>
> > \def\sipka#1{\def\prvnibod{#1}%
> >   \pocetbodu0
> >   \dalsiznak
> > }
>
> > \def\dalsiznak{
> >   \futurelet\znak\testuj
> > }
>
> > \def\testuj{
> >    \ifx\znak(\let\nxt\dalsibod\else\let\nxt\konecsipky\fi\nxt
> > }
>
> > \def\dalsibod(#1,#2){\advance\pocetbodu1
> >   \expandafter\def\csname x\the\pocetbodu\endcsname{#1}%
> >   \expandafter\def\csname y\the\pocetbodu\endcsname{#2}%
> >   \dalsiznak
> > }
>
> > \def\konecsipky#1{
> >   \def\poslednibod{#1}%
>
> >   \ifnum\pocetbodu=0
> >     \draw[-stealth] \prvnibod -- \poslednibod;
> >   \fi
>
> >   \ifnum\pocetbodu>0
> >     \pomoczacatek0
> >     \pomockonec1
> >     \advance\pocetbodu-1
> >     \draw \prvnibod -- (\csname x\the\pomockonec\endcsname,\csname y
> > \the\pomockonec\endcsname);
> >     \loop\ifnum\pomoczacatek<\pocetbodu \advance\pomoczacatek1
> > \advance \pomockonec1
> >       \draw (\csname x\the\pomoczacatek\endcsname,\csname y\the
> > \pomoczacatek\endcsname)  --%
> >             (\csname x\the\pomockonec\endcsname,\csname y\the
> > \pomockonec\endcsname);
> >     \repeat
> >     \draw[-stealth] (\csname x\the\pomockonec\endcsname,\csname y\the
> > \pomockonec\endcsname) -- \poslednibod;
> >   \fi
> >   \unskip
> > }
>
> > \begin{document}
> > \begin{tikzpicture}
> > \sipka{(2,2)}{(4,4)}
> > \sipka{(1,1)}(6,2)(4,9){(11,4)}
> > \end{tikzpicture}
> > \end{document}
> > _______________________________________________
> > csTeX mailing list
> > cs... at cs.felk.cvut.cz
> >http://lists.felk.cvut.cz/mailman/listinfo/cstex

Super! Funguje to podla vsetkych predstav! Este raz velka vdaka!



More information about the csTeX mailing list