ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* MPenvironment \def gives "Parameters must be numbered consecutively"
@ 2006-09-29  5:07 Sanjoy Mahajan
  2006-09-29  7:29 ` Hans Hagen
  2006-09-29 16:29 ` Mojca Miklavec
  0 siblings, 2 replies; 6+ messages in thread
From: Sanjoy Mahajan @ 2006-09-29  5:07 UTC (permalink / raw)


This test file (beta 2006.09.28):

============ 1.tex ============================
\starttext
\startMPenvironment
\def\2#1#2{\vbox{\halign{\hfil##\hfil\cr #1\cr #2\cr}}}
\stopMPenvironment

\startreusableMPgraphic{fig}
label(btex sun etex, origin);
\stopreusableMPgraphic

\reuseMPgraphic{fig}

\stoptext
========================================

fails with the error:

! Parameters must be numbered consecutively.
<to be read again> 
                   ##
l.44 \global \loadfontfileoncetrue \def \2##
                                            1##2{\vbox {\halign {\hfil ####\...


1-mpgraph.mp gets this figure definition:

beginfig(1);
verbatimtex \global \loadfontfileoncetrue \def \2##1##2{\vbox {\halign {\hfil ####\hfil \cr ##1\cr ##2\cr }}}  etex;
label(btex  sun etex
, origin);
;
endfig;

So the parameters in the definition are being doubled up by one of the
transformations that inserts the verbatimtex..etex block.  By the way,
should the verbatimtex..etex block go outside the beginfig..endfig, as
it would in a standalone MP file?  If only for efficiency rather than MP
reparsing it with each beginfig.

-Sanjoy

`A society of sheep must in time beget a government of wolves.'
   -- Bertrand de Jouvenal

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

* Re: MPenvironment \def gives "Parameters must be numbered consecutively"
  2006-09-29  5:07 MPenvironment \def gives "Parameters must be numbered consecutively" Sanjoy Mahajan
@ 2006-09-29  7:29 ` Hans Hagen
  2006-09-30 15:50   ` Sanjoy Mahajan
  2006-10-05  7:10   ` Aditya Mahajan
  2006-09-29 16:29 ` Mojca Miklavec
  1 sibling, 2 replies; 6+ messages in thread
From: Hans Hagen @ 2006-09-29  7:29 UTC (permalink / raw)


Sanjoy Mahajan wrote:
> This test file (beta 2006.09.28):
>
> ============ 1.tex ============================
> \starttext
> \startMPenvironment
> \def\2#1#2{\vbox{\halign{\hfil##\hfil\cr #1\cr #2\cr}}}
> \stopMPenvironment
>
> \startreusableMPgraphic{fig}
> label(btex sun etex, origin);
> \stopreusableMPgraphic
>
> \reuseMPgraphic{fig}
>
> \stoptext
> ========================================
>
> fails with the error:
>
> ! Parameters must be numbered consecutively.
> <to be read again> 
>                    ##
> l.44 \global \loadfontfileoncetrue \def \2##
>                                             1##2{\vbox {\halign {\hfil ####\...
>
>
> 1-mpgraph.mp gets this figure definition:
>
> beginfig(1);
> verbatimtex \global \loadfontfileoncetrue \def \2##1##2{\vbox {\halign {\hfil ####\hfil \cr ##1\cr ##2\cr }}}  etex;
> label(btex  sun etex
> , origin);
> ;
> endfig;
>   
environments are saved in macros, therefore  you end up  in  an argument 
mess



\starttext

\startbuffer[mp]
  \def\2#1#2{\vbox{\halign{\hfil##\hfil\cr #1\cr #2\cr}}}
\stopbuffer

\def\useMPenvironmentbuffer[#1]%
  
{\expanded{\startMPenvironment\noexpand\readfile{\TEXbufferfile{\jobname}}{}{}}\stopMPenvironment}

\useMPenvironmentbuffer[mp]

\startreusableMPgraphic{fig}
label(btex sun etex, origin);
\stopreusableMPgraphic

\reuseMPgraphic{fig}

\stoptext

works ok ; maybe i should add that command to the core but anyhow you 
can wikify it
 
> So the parameters in the definition are being doubled up by one of the
> transformations that inserts the verbatimtex..etex block.  By the way,
> should the verbatimtex..etex block go outside the beginfig..endfig, as
> it would in a standalone MP file?  If only for efficiency rather than MP
> reparsing it with each beginfig.
>
>   
depends, if you process them runtime, it does not matter, if you process graphics between runs, they may be some cary over effects, although the btex/etex snippets are grouped 

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
-----------------------------------------------------------------

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

* Re: MPenvironment \def gives "Parameters must be numbered consecutively"
  2006-09-29  5:07 MPenvironment \def gives "Parameters must be numbered consecutively" Sanjoy Mahajan
  2006-09-29  7:29 ` Hans Hagen
@ 2006-09-29 16:29 ` Mojca Miklavec
  2006-09-30 15:46   ` Sanjoy Mahajan
  1 sibling, 1 reply; 6+ messages in thread
From: Mojca Miklavec @ 2006-09-29 16:29 UTC (permalink / raw)


On 9/29/06, Sanjoy Mahajan wrote:
> This test file (beta 2006.09.28):
>
> ============ 1.tex ============================
> \starttext
> \startMPenvironment
> \def\2#1#2{\vbox{\halign{\hfil##\hfil\cr #1\cr #2\cr}}}
> \stopMPenvironment

A lesson that I learned while trying to implement a few functions for gnuplot:
     never try to do tricky stuff like definitions inside
MPenvironement, because it is parsed and changed slightly.

I would also prefer if definitions and other commands inside
MPenvironement would work as they were supposed to, but exactly this
was one reason more why I like \sometxt so much now. You can create a
definition anywhere in your TeX document and then use it inside
\sometxt:

\def\a{abc}

\starttext
\startMPcode
label(\sometxt{\a},origin);
\stopMPcode
\stoptext

Would that kind of approach satisfy your needs?

(that being just another point of view from what Hans pointed out;
Hans's approach might also be useful; although I admit that I will
soon start mixing up all the different MP commands: MPinclusions,
MPextensions, preambles, environment ... )

Mojca

PS: that should go into another thread and is not that urgent since I
found an ugly workaround, but anyway: is there a chance to access
dimensions such as PageWidth, OverlayWidth ... and others inside
MPextensions/inclusions? OverlayWidth is defined just behind the
extensions/inclusions, which basically means that I can use it inside
a graphic, but not inside macros defined in MPextensions. Any remedy
for that?

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

* Re: MPenvironment \def gives "Parameters must be numbered consecutively"
  2006-09-29 16:29 ` Mojca Miklavec
@ 2006-09-30 15:46   ` Sanjoy Mahajan
  0 siblings, 0 replies; 6+ messages in thread
From: Sanjoy Mahajan @ 2006-09-30 15:46 UTC (permalink / raw)


> never try to do tricky stuff like definitions inside MPenvironement,
> because it is parsed and changed slightly.

I'm learning that lesson too.  Another one: "don't use btex..etex
instead use \sometxt".  So I now try to use the MPenvironment only for
font and size switching (e.g. if I want the figures to be in a smaller
font).  I wikified a small example of converting to \sometxt:
<http://wiki.contextgarden.net/Mpgraphic#startMPenvironment>.  It's
probably not in the right place on the wiki though.

> \def\a{abc}
> 
> \starttext
> \startMPcode
> label(\sometxt{\a},origin);
> \stopMPcode
> \stoptext
> 
> Would that kind of approach satisfy your needs?

It would.  I've used this sed script to help me convert my standalone
metapost files:

  sed 's/btex (.*) etex/\\sometxt{\1}/' < standalone.mp

But for the next chapter's figures, I'll write a python script that
will do the other transformations: e.g. turn each beginfig into
\startstaticMPfigure -- or is it \startstaticMPgraphic?  I always have
to check, hence I'll put it in a script and have *it* remember.

I know that metafun was made for integrating backgrounds and the like,
not for standalone figures, so it may seem strange to convert all of
one's standalone figures into metafun figures and place them in the
.tex source file.  But I like having the source for the standalone
figures in the same file near their use: it's figure--text integration
(one theme of Tufte's books), done in the source file.

-Sanjoy

`Never underestimate the evil of which men of power are capable.'
         --Bertrand Russell, _War Crimes in Vietnam_, chapter 1.

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

* Re: MPenvironment \def gives "Parameters must be numbered consecutively"
  2006-09-29  7:29 ` Hans Hagen
@ 2006-09-30 15:50   ` Sanjoy Mahajan
  2006-10-05  7:10   ` Aditya Mahajan
  1 sibling, 0 replies; 6+ messages in thread
From: Sanjoy Mahajan @ 2006-09-30 15:50 UTC (permalink / raw)


> works ok ; maybe i should add that command to the core but anyhow
> you can wikify it

Using btex..etex is becoming complex with all the interactions, so
instead I wikified an example of converting from btex..etex to
\sometxt -- preaching what I am trying to practice.

Instead I'll use the MPenvironment just for font and size switching
(e.g. to use a different size for figures than for main text).

> (i didn't expect users to cook up all kind of commands in
> environments; when i have to do that, I normally put them in an
> environment and load that in the mp graphic (since one loads tex
> files there)

I hadn't thought of that.  Do you mean something like (which I
couldn't get to compile):

\starttext

\startreusableMPgraphic{fig}
\def\hello{hhh}  % perhaps in an environment file
label(\sometxt{\hello}, origin);
\stopreusableMPgraphic

\reuseMPgraphic{fig}

\stoptext

-Sanjoy

`Never underestimate the evil of which men of power are capable.'
         --Bertrand Russell, _War Crimes in Vietnam_, chapter 1.

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

* Re: MPenvironment \def gives "Parameters must be numbered consecutively"
  2006-09-29  7:29 ` Hans Hagen
  2006-09-30 15:50   ` Sanjoy Mahajan
@ 2006-10-05  7:10   ` Aditya Mahajan
  1 sibling, 0 replies; 6+ messages in thread
From: Aditya Mahajan @ 2006-10-05  7:10 UTC (permalink / raw)


On Fri, 29 Sep 2006, Hans Hagen wrote:

> environments are saved in macros, therefore  you end up  in  an argument
> mess
>
>
>
> \starttext
>
> \startbuffer[mp]
>  \def\2#1#2{\vbox{\halign{\hfil##\hfil\cr #1\cr #2\cr}}}
> \stopbuffer
>
> \def\useMPenvironmentbuffer[#1]%
>
> {\expanded{\startMPenvironment\noexpand\readfile{\TEXbufferfile{\jobname}}{}{}}\stopMPenvironment}

Shouldn't that be \readfile{\TEXbufferfile{#1}?


> \useMPenvironmentbuffer[mp]

> \startreusableMPgraphic{fig}
> label(btex sun etex, origin);

If you try

  label(btex \2{one}{two} etex, origin) ;

it does not work.

> \stopreusableMPgraphic
>
> \reuseMPgraphic{fig}
>
> \stoptext
>
> works ok ; maybe i should add that command to the core but anyhow you
> can wikify it

How about defining something like

\startMPTEX
   ....
\stopMPTEX

which writes everything to a file jobname-mp, so that the user does 
not need to be aware that he/she has to create a buffer with the name 
mp.

However, using \startbuffer[mp] is fragile as the user can also define 
a buffer with the name mp. How about a different/ less common word, 
say verbtaimtex?

Aditya

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

end of thread, other threads:[~2006-10-05  7:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-29  5:07 MPenvironment \def gives "Parameters must be numbered consecutively" Sanjoy Mahajan
2006-09-29  7:29 ` Hans Hagen
2006-09-30 15:50   ` Sanjoy Mahajan
2006-10-05  7:10   ` Aditya Mahajan
2006-09-29 16:29 ` Mojca Miklavec
2006-09-30 15:46   ` Sanjoy Mahajan

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).