Re: [Syracuse] Mise au point d'une macro : plus compliqué

Auteur: Arnaud Schmittbuhl <aschmittbuhl_chez_libertysurf.fr>
Date: sam nov 10 2007 - 23:28:02 CET

Le Sat, 10 Nov 2007 15:24:02 -0500,
mluque5130@aol.com a écrit :

> Toujours dans le même esprit que la précédente, mais en plus
> compliqué ! Il s'agit d'introduire une option et des arguments
> supplémentaires : j'avoue que je tourne en rond sans succès :-(

J'ai laissé tombé la partie dictionnaire pour y voir plus clair.
Voilà ce que ça donne, façon rustique !

\documentclass{minimal}

%% Cahier des charges
% \deffunctionR{f}(uvw){1}{2}{3}
% /f{ /w exch def /v exch def /u exch def 1 2 3 } def
% \deffunctionR{f}(uv){1}{2}{3}
% /f{ /v exch def /u exch def 1 2 3 } def
% \deffunctionR{f}(u){1}{2}{3}
% /f{ /u exch def 1 2 3 } def

\usepackage{pstricks-add}

\makeatletter
\def\deffunctionR{\@ifnextchar[{\deffunctionR@i}{\deffunctionR@i[]}}
\def\deffunctionR@i[#1]#2(#3)#4#5#6{%
 \pst@killglue
 \psset{#1}
 \def\arg@i{#2\space}
  \def\arg@iii{#4\space}
   \def\arg@iv{#5\space}
    \def\arg@v{#6\space}
     \deffunctionR@ii#3\end}
\def\deffunctionR@ii#1#2\end{
  \def\arg@ii@i{#1\space}
  \ifx\relax#2\relax
    \pstVerb{/\arg@i { /\arg@ii@i exch def \arg@iii\arg@iv\arg@v } def}
  \else
    \deffunctionR@iii#2\end
   \fi}
\def\deffunctionR@iii#1#2\end{
  \def\arg@ii@ii{#1\space}
   \def\arg@ii@iii{#2\space}
    \ifx\relax#2\relax
      \pstVerb{/\arg@i {
        /\arg@ii@i exch def /\arg@ii@ii exch def \arg@iii\arg@iv\arg@v
      } def}
    \else
      \pstVerb{/\arg@i {
        /\arg@ii@i exch def /\arg@ii@ii exch def /\arg@ii@iii exch def
        \arg@iii\arg@iv\arg@v
      } def}
    \fi}
\makeatother

\begin{document}
Test
\deffunctionR{f}(uvw){1}{2}{3}
\deffunctionR{f}(uv){1}{2}{3}
\deffunctionR{f}(u){1}{2}{3}
\end{document}

-- 
Arnaud Schmittbuhl

_______________________________________________
Liste de diffusion Syracuse
Syracuse@melusine.eu.org
http://melusine.eu.org/cgi-bin/mailman/listinfo/syracuse
Adresse alternative du site :
http://syracuse.eu.org/syracuse/
Received on Sat Nov 10 23:27:56 2007

Cette archive a été créée par hypermail 2.1.8 : dim nov 11 2007 - 10:37:04 CET