ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Passing text to Metapost functions
@ 2005-12-26  3:34 David Arnold
  2005-12-26 11:44 ` Hans Hagen
  0 siblings, 1 reply; 8+ messages in thread
From: David Arnold @ 2005-12-26  3:34 UTC (permalink / raw)


All,

I'd like to do something like this:

create_axes(xmin,xmax,ymin,ymax,ux,uy)(x);

Where x will be a label for my x-axis. But once in a while it might  
be t or u or some other thing such as "Days."

I want to use it like this:

beginfig(0);

%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-5;
xmax:=5;
xscl:=1;
ymin:=-5;
ymax:=5;
yscl:=1;

%initialize scale
numeric ux, uy;
(xmax-xmin)*ux=4in; (ymax-ymin)*uy=3in;

%create-axes function
vardef create_axes(expr xxmin, xxmax, yymin, yymax, uux, uuy)(text  
xlbl)=
   drawdblarrow (1.05*xxmin*uux,0)--(1.05*xxmax*uux,0);
   label.rt(btex $xlbl$, (1.05*xxmax*uux,0));
   drawdblarrow (0,1.05*yymin*uuy)--(0,1.05*yymax*uuy);
enddef;

create_axes(xmin,xmax,ymin,ymax,ux,uy)(x);

endfig;

end.

Two questions:

1. How can I do this in plain metapost?

2. What would be the "Context Way?"

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-26  3:34 Passing text to Metapost functions David Arnold
@ 2005-12-26 11:44 ` Hans Hagen
  2005-12-26 18:04   ` David Arnold
  0 siblings, 1 reply; 8+ messages in thread
From: Hans Hagen @ 2005-12-26 11:44 UTC (permalink / raw)


David Arnold wrote:

> 1. How can I do this in plain metapost?
>
> 2. What would be the "Context Way?"


btex ... etex is parsed as-is and therefore cannot be uses

this is what the macro textext("...") is for, it writes the (expanded) 
string to a file and then applies tex to it between runs

Hans

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-26 11:44 ` Hans Hagen
@ 2005-12-26 18:04   ` David Arnold
  2005-12-26 20:03     ` Willi Egger
  2005-12-27  8:09     ` Taco Hoekwater
  0 siblings, 2 replies; 8+ messages in thread
From: David Arnold @ 2005-12-26 18:04 UTC (permalink / raw)


Hans,

I've tried various things without much success. I cannot seem to  
access the contents of xlbl below.

Is this approach ever going to work?

Note: I am trying to pass the string "x" to the parameter xlbl.

%output=pdf

\setupcolors[state=start]

\definecolor[gridlines][s=0.7]

\startMPinclusions

color gridlines; gridlines:=\MPcolor{gridlines};

vardef create_grid(expr xxmin,xxmax,xxscl,yymin,yymax,yyscl,uux,uuy)=
   for k=xxmin step xxscl until xxmax:
     draw (xmin*uux,k*uuy)--(xmax*uux,k*uuy) withcolor \MPcolor 
{gridlines};
     draw (k*uux,ymin*uuy)--(k*uux,ymax*uuy) withcolor \MPcolor 
{gridlines};
   endfor;
enddef;

vardef create_axes (expr xxmin,xxmax,yymin,yymax,uux,uuy) (text xlbl)  =
   drawdblarrow (1.05*xxmin*uux,0)--(1.05*xxmax*uux,0);
   draw textext.origin(\MPstring{xlbl});
   drawdblarrow (0,1.05*yymin*uuy)--(0,1.05*yymax*uuy);
enddef;

\stopMPinclusions


\starttext

\startMPpage

%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-5;
xmax:=5;
xscl:=1;
ymin:=-5;
ymax:=5;
yscl:=1;

%initialize scale
numeric ux, uy;
(xmax-xmin)*ux=4in; (ymax-ymin)*uy=3in;

%create the grid
create_grid(xmin,xmax,xscl,ymin,ymax,yscl,ux,uy);

%create the axes
create_axes(xmin,xmax,ymin,ymax,ux,uy)(x);

\stopMPpage

\stoptext

%%% Local Variables:
%%% mode: conTeXt-en
%%% End:

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-26 18:04   ` David Arnold
@ 2005-12-26 20:03     ` Willi Egger
  2005-12-26 21:17       ` David Arnold
  2005-12-27  8:09     ` Taco Hoekwater
  1 sibling, 1 reply; 8+ messages in thread
From: Willi Egger @ 2005-12-26 20:03 UTC (permalink / raw)


Hi David,

Put the "x" into a variable:

\setMPtext{1}{x}

you can define the \stetMPtext within the \starttext \stoptext or outside

Call
create_axes(xmin,xmax,ymin,ymax,ux,uy)(\MPbetex{1});
 

Willi

David Arnold wrote:

> Hans,
>
> I've tried various things without much success. I cannot seem to  
> access the contents of xlbl below.
>
> Is this approach ever going to work?
>
> Note: I am trying to pass the string "x" to the parameter xlbl.
>
> %output=pdf
>
> \setupcolors[state=start]
>
> \definecolor[gridlines][s=0.7]
>
> \startMPinclusions
>
> color gridlines; gridlines:=\MPcolor{gridlines};
>
> vardef create_grid(expr xxmin,xxmax,xxscl,yymin,yymax,yyscl,uux,uuy)=
>   for k=xxmin step xxscl until xxmax:
>     draw (xmin*uux,k*uuy)--(xmax*uux,k*uuy) withcolor \MPcolor 
> {gridlines};
>     draw (k*uux,ymin*uuy)--(k*uux,ymax*uuy) withcolor \MPcolor 
> {gridlines};
>   endfor;
> enddef;
>
> vardef create_axes (expr xxmin,xxmax,yymin,yymax,uux,uuy) (text xlbl)  =
>   drawdblarrow (1.05*xxmin*uux,0)--(1.05*xxmax*uux,0);
>   draw textext.origin(\MPstring{xlbl});
>   drawdblarrow (0,1.05*yymin*uuy)--(0,1.05*yymax*uuy);
> enddef;
>
> \stopMPinclusions
>
>
> \starttext
>
> \startMPpage
>
> %initialize window parameters
> numeric xmin, xmax, xscl, ymin, ymax, yscl;
> xmin:=-5;
> xmax:=5;
> xscl:=1;
> ymin:=-5;
> ymax:=5;
> yscl:=1;
>
> %initialize scale
> numeric ux, uy;
> (xmax-xmin)*ux=4in; (ymax-ymin)*uy=3in;
>
> %create the grid
> create_grid(xmin,xmax,xscl,ymin,ymax,yscl,ux,uy);
>
> %create the axes
> create_axes(xmin,xmax,ymin,ymax,ux,uy)(x);
>
> \stopMPpage
>
> \stoptext
>
> %%% Local Variables:
> %%% mode: conTeXt-en
> %%% End:
> _______________________________________________
> ntg-context mailing list
> ntg-context@ntg.nl
> http://www.ntg.nl/mailman/listinfo/ntg-context

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-26 20:03     ` Willi Egger
@ 2005-12-26 21:17       ` David Arnold
  0 siblings, 0 replies; 8+ messages in thread
From: David Arnold @ 2005-12-26 21:17 UTC (permalink / raw)


Willi et al,

No luck. I can't get any text to show up. I've spent about three days  
on this, reading, etc., and I'm no closer than I was three days ago.

%output=pdf

\setupcolors[state=start]

\definecolor[gridlines][s=0.7]

\startMPinclusions

color gridlines; gridlines:=\MPcolor{gridlines};

vardef create_grid(expr xxmin,xxmax,xxscl,yymin,yymax,yyscl,uux,uuy)=
   for k=xxmin step xxscl until xxmax:
     draw (xmin*uux,k*uuy)--(xmax*uux,k*uuy) withcolor \MPcolor 
{gridlines};
     draw (k*uux,ymin*uuy)--(k*uux,ymax*uuy) withcolor \MPcolor 
{gridlines};
   endfor;
enddef;

vardef create_axes (expr xxmin,xxmax,yymin,yymax,uux,uuy) (text xlbl)  =
   drawdblarrow (1.05*xxmin*uux,0)--(1.05*xxmax*uux,0);
   draw textext.origin(\MPbetex{xlbl});
   drawdblarrow (0,1.05*yymin*uuy)--(0,1.05*yymax*uuy);
enddef;

\stopMPinclusions

\starttext

\startMPpage

%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-5;
xmax:=5;
xscl:=1;
ymin:=-5;
ymax:=5;
yscl:=1;

%initialize scale
numeric ux, uy;
(xmax-xmin)*ux=4in; (ymax-ymin)*uy=3in;

%create the grid
create_grid(xmin,xmax,xscl,ymin,ymax,yscl,ux,uy);

%create the axes
\setMPtext{1}{x};
create_axes(xmin,xmax,ymin,ymax,ux,uy)(\MPbetex{1});

\stopMPpage

\stoptext

%%% Local Variables:
%%% mode: conTeXt-en
%%% End:

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-26 18:04   ` David Arnold
  2005-12-26 20:03     ` Willi Egger
@ 2005-12-27  8:09     ` Taco Hoekwater
  2005-12-27  8:24       ` David Arnold
  1 sibling, 1 reply; 8+ messages in thread
From: Taco Hoekwater @ 2005-12-27  8:09 UTC (permalink / raw)


David Arnold wrote:
> Hans,
> 
> I've tried various things without much success. I cannot seem to  access 
> the contents of xlbl below.
> 
> Is this approach ever going to work?

I can make your example work by passing the argument as
a true metapost string:

   * remove the \MPstring command: draw textext.origin(xlbl);
   * create_axes(xmin,xmax,ymin,ymax,ux,uy)("x");

But it is out of sync: you always have to call texexec twice
whenever you make changes.

Cheers,
Taco

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-27  8:09     ` Taco Hoekwater
@ 2005-12-27  8:24       ` David Arnold
  2005-12-27  8:58         ` Taco Hoekwater
  0 siblings, 1 reply; 8+ messages in thread
From: David Arnold @ 2005-12-27  8:24 UTC (permalink / raw)


OK. But I need it set as btex $x$ etex at the right end of the  
horizontal axis.

On Dec 27, 2005, at 12:09 AM, Taco Hoekwater wrote:

> David Arnold wrote:
>> Hans,
>> I've tried various things without much success. I cannot seem to   
>> access the contents of xlbl below.
>> Is this approach ever going to work?
>
> I can make your example work by passing the argument as
> a true metapost string:
>
>   * remove the \MPstring command: draw textext.origin(xlbl);
>   * create_axes(xmin,xmax,ymin,ymax,ux,uy)("x");
>
> But it is out of sync: you always have to call texexec twice
> whenever you make changes.
>
> Cheers,
> Taco
> _______________________________________________
> ntg-context mailing list
> ntg-context@ntg.nl
> http://www.ntg.nl/mailman/listinfo/ntg-context

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Passing text to Metapost functions
  2005-12-27  8:24       ` David Arnold
@ 2005-12-27  8:58         ` Taco Hoekwater
  0 siblings, 0 replies; 8+ messages in thread
From: Taco Hoekwater @ 2005-12-27  8:58 UTC (permalink / raw)




David Arnold wrote:
> OK. But I need it set as btex $x$ etex at the right end of the  
> horizontal axis.

I'm not going to fiddle with the "right end" for you, but
You can make it $x$ by:

    create_axes(xmin,xmax,ymin,ymax,ux,uy)("$x$");

Cheers, Taco

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-12-27  8:58 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-26  3:34 Passing text to Metapost functions David Arnold
2005-12-26 11:44 ` Hans Hagen
2005-12-26 18:04   ` David Arnold
2005-12-26 20:03     ` Willi Egger
2005-12-26 21:17       ` David Arnold
2005-12-27  8:09     ` Taco Hoekwater
2005-12-27  8:24       ` David Arnold
2005-12-27  8:58         ` Taco Hoekwater

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).