scaling reusableMPgraphic & some ConTeXt programming
Hello, the answers to these three questions are most probably one-liners, but I don't know which ones ;) 1. How can I scale (an already defined) reusableMPgraphic? Simplified example of what I currently (want to) have: % how should I change this definition? \def\usemygraphic[#1][#2]{\reuseMPgraphic{#1}} \usemygraphic[name][width=.7\textwidth] 2. I have several graphics defined as \startGNUPLOTgraphic[1][name] draw fullcircle scaled 3cm withcolor .625red; \stopGNUPLOTgraphic \startGNUPLOTgraphic[2][name] draw fullcircle scaled 3cm withcolor .625green; \stopGNUPLOTgraphic \startGNUPLOTgraphic[3][name] draw fullcircle scaled 3cm withcolor .625blue; \stopGNUPLOTgraphic \startGNUPLOTgraphic[1][othername] fill fullcircle scaled 3cm withcolor .625red; \stopGNUPLOTgraphic \startGNUPLOTgraphic[2][othername] fill fullcircle scaled 3cm withcolor .625green; \stopGNUPLOTgraphic and a pretty stupid definition: \long\def\startGNUPLOTgraphic {\dodoubleargument\dostartGNUPLOTgraphic} \long\def\dostartGNUPLOTgraphic[#1][#2]#3\stopGNUPLOTgraphic % [number][name] {% add to counter to note the nuber of the graphic % define a new counter for the first time when you use it \doif{#1}{1}{\doglobal\newcounter\abc}% counter name has to depend on #2 \doglobal\increment\abc % assigning the value #1 to it would also be OK \startreusableMPgraphic{gpg:#2:#1}#3\stopreusableMPgraphic} How can I give a better name than \abc to the counter (the name should depend on #2 in order to be unique)? 3. I would like to change \usemygraphic, so that \usemygraphic[othername] or \usemygraphic[othername][height=5cm] would resolve to \dorecurse{2}{\useMPgraphic{gpg:othername:\recurselevel}} and \usemygraphic[name][n={1,3},width=8cm] (syntax might be different if necessary) to \reuseMPgraphic{gpg:name:1} \reuseMPgraphic{gpg:name:3} (with proper scaling if possible). How should I start? Thank you a lot for any hints, Mojca Miklavec
Mojca Miklavec wrote:
Hello,
the answers to these three questions are most probably one-liners, but I don't know which ones ;)
1. How can I scale (an already defined) reusableMPgraphic? Simplified example of what I currently (want to) have:
% how should I change this definition? \def\usemygraphic[#1][#2]{\reuseMPgraphic{#1}} \usemygraphic[name][width=.7\textwidth]
Guessing: \def\usemygraphic[#1][#2]{\scaled[#2]{\reuseMPgraphic{#1}}}
2. I have several graphics defined as .... How can I give a better name than \abc to the counter (the name should depend on #2 in order to be unique)?
Better use \definenumber instead of the low-level command.
3. I would like to change \usemygraphic, so that \usemygraphic[othername] or \usemygraphic[othername][height=5cm] would resolve to \dorecurse{2}{\useMPgraphic{gpg:othername:\recurselevel}}
Where does this '2' come from?
and \usemygraphic[name][n={1,3},width=8cm] (syntax might be different if necessary) to \reuseMPgraphic{gpg:name:1} \reuseMPgraphic{gpg:name:3} (with proper scaling if possible).
How should I start?
Create a commalist of desired numbers first (possibly using recursion), then run \processcommalist on each item. Cheers, Taco
Mojca Miklavec wrote:
Hello,
the answers to these three questions are most probably one-liners, but I don't know which ones ;)
1. How can I scale (an already defined) reusableMPgraphic? Simplified example of what I currently (want to) have:
% how should I change this definition? \def\usemygraphic[#1][#2]{\reuseMPgraphic{#1}} \usemygraphic[name][width=.7\textwidth]
\def\usemygraphic[#1][#2]{\scale[#2]{\reuseMPgraphic{#1}} \usempgraphic[name][width=4cm,height=5cm] \scale accepts the same scaling options as externalfigure
2. I have several graphics defined as
\startGNUPLOTgraphic[1][name] draw fullcircle scaled 3cm withcolor .625red; \stopGNUPLOTgraphic \startGNUPLOTgraphic[2][name] draw fullcircle scaled 3cm withcolor .625green; \stopGNUPLOTgraphic \startGNUPLOTgraphic[3][name] draw fullcircle scaled 3cm withcolor .625blue; \stopGNUPLOTgraphic
\startGNUPLOTgraphic[1][othername] fill fullcircle scaled 3cm withcolor .625red; \stopGNUPLOTgraphic \startGNUPLOTgraphic[2][othername] fill fullcircle scaled 3cm withcolor .625green; \stopGNUPLOTgraphic
and a pretty stupid definition:
\long\def\startGNUPLOTgraphic {\dodoubleargument\dostartGNUPLOTgraphic}
\long\def\dostartGNUPLOTgraphic[#1][#2]#3\stopGNUPLOTgraphic % [number][name] {% add to counter to note the nuber of the graphic % define a new counter for the first time when you use it \doif{#1}{1}{\doglobal\newcounter\abc}% counter name has to depend on #2 \doglobal\increment\abc % assigning the value #1 to it would also be OK \startreusableMPgraphic{gpg:#2:#1}#3\stopreusableMPgraphic}
How can I give a better name than \abc to the counter (the name should depend on #2 in order to be unique)?
why do you need a counter \long\def\dostartGNUPLOTgraphic[#1][#2]#3\stopGNUPLOTgraphic {\startreusableMPgraphic{gpg:#2:#1}#3\stopreusableMPgraphic}
3. I would like to change \usemygraphic, so that \usemygraphic[othername] or \usemygraphic[othername][height=5cm] would resolve to \dorecurse{2}{\useMPgraphic{gpg:othername:\recurselevel}} and \usemygraphic[name][n={1,3},width=8cm] (syntax might be different if necessary) to \reuseMPgraphic{gpg:name:1} \reuseMPgraphic{gpg:name:3} (with proper scaling if possible).
you want all graphics? \def\usemygraphic#1% {\doloop {\doifMPgraphicelse{gpg:#1:\recurselevel} {\reuseMPgraphic{gpg:name:\recurselevel}} {\exitloop}}} or so ... Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On 7/24/06, Hans Hagen wrote:
Mojca Miklavec wrote:
Hello,
the answers to these three questions are most probably one-liners, but I don't know which ones ;)
1. How can I scale (an already defined) reusableMPgraphic? Simplified example of what I currently (want to) have:
% how should I change this definition? \def\usemygraphic[#1][#2]{\reuseMPgraphic{#1}} \usemygraphic[name][width=.7\textwidth]
\def\usemygraphic[#1][#2]{\scale[#2]{\reuseMPgraphic{#1}}
\usempgraphic[name][width=4cm,height=5cm]
\scale accepts the same scaling options as externalfigure
Thanks to both you and Taco!
why do you need a counter
3. I would like to change \usemygraphic, so that \usemygraphic[othername] or \usemygraphic[othername][height=5cm] would resolve to \dorecurse{2}{\useMPgraphic{gpg:othername:\recurselevel}} and \usemygraphic[name][n={1,3},width=8cm] (syntax might be different if necessary) to \reuseMPgraphic{gpg:name:1} \reuseMPgraphic{gpg:name:3} (with proper scaling if possible).
you want all graphics?
\def\usemygraphic#1% {\doloop {\doifMPgraphicelse{gpg:#1:\recurselevel} {\reuseMPgraphic{gpg:name:\recurselevel}} {\exitloop}}}
or so ...
Wow! No, I don't need a counter in that case ;) Just a little detail: Yes, I want all the graphics except if the user provides "n={1,3}" or "n=4", then I would like to output only the ones specified. I know that this is a trivial question, but how do I extract the argument of "n=..." to \processcommalist on it? And yet another short&stupid question: when does \c!something=\v!value work? I tried to change \setupGNUPLOT[terminal=context] into [\c!terminal=\v!context] (in \unprotect-ed area), but I get a command-undefined error. Thanks, Mojca
Mojca Miklavec wrote:
On 7/24/06, Hans Hagen wrote:
Mojca Miklavec wrote:
Hello,
the answers to these three questions are most probably one-liners, but I don't know which ones ;)
1. How can I scale (an already defined) reusableMPgraphic? Simplified example of what I currently (want to) have:
% how should I change this definition? \def\usemygraphic[#1][#2]{\reuseMPgraphic{#1}} \usemygraphic[name][width=.7\textwidth]
\def\usemygraphic[#1][#2]{\scale[#2]{\reuseMPgraphic{#1}}
\usempgraphic[name][width=4cm,height=5cm]
\scale accepts the same scaling options as externalfigure
Thanks to both you and Taco!
why do you need a counter
3. I would like to change \usemygraphic, so that \usemygraphic[othername] or \usemygraphic[othername][height=5cm] would resolve to \dorecurse{2}{\useMPgraphic{gpg:othername:\recurselevel}} and \usemygraphic[name][n={1,3},width=8cm] (syntax might be different if necessary) to \reuseMPgraphic{gpg:name:1} \reuseMPgraphic{gpg:name:3} (with proper scaling if possible).
you want all graphics?
\def\usemygraphic#1% {\doloop {\doifMPgraphicelse{gpg:#1:\recurselevel} {\reuseMPgraphic{gpg:name:\recurselevel}} {\exitloop}}}
or so ...
Wow! No, I don't need a counter in that case ;)
Just a little detail: Yes, I want all the graphics except if the user provides "n={1,3}" or "n=4", then I would like to output only the ones specified. I know that this is a trivial question, but how do I extract the argument of "n=..." to \processcommalist on it?
depends on how you store it (say in requestedlist), anyhow testing is simple \def\usemygraphic#1% {\doloop {\doifMPgraphicelse{gpg:#1:\recurselevel} {\expanded{\doifinset{\recurselevel}{requestedlist}}{\reuseMPgraphic{gpg:name:\recurselevel}}} {\exitloop}}} or so
And yet another short&stupid question: when does \c!something=\v!value work? I tried to change \setupGNUPLOT[terminal=context] into [\c!terminal=\v!context] (in \unprotect-ed area), but I get a command-undefined error.
Thanks, Mojca _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
Mojca Miklavec wrote:
And yet another short&stupid question: when does \c!something=\v!value work? I tried to change \setupGNUPLOT[terminal=context] into [\c!terminal=\v!context] (in \unprotect-ed area), but I get a command-undefined error.
only predefined key/values (in mult-con) are stored in their efficient ! form (and get translated when needed) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On 7/25/06, Hans Hagen wrote:
Mojca Miklavec wrote:
And yet another short&stupid question: when does \c!something=\v!value work? I tried to change \setupGNUPLOT[terminal=context] into [\c!terminal=\v!context] (in \unprotect-ed area), but I get a command-undefined error.
only predefined key/values (in mult-con) are stored in their efficient ! form (and get translated when needed)
Thanks. I never understood what \def\c!first {first} \def\c!last {last} \def\c!quotechar {quotechar} was doing in m-database. Mojca
participants (3)
-
Hans Hagen
-
Mojca Miklavec
-
Taco Hoekwater