* Bug: \textext inside \*MPinclusions causes error
@ 2017-01-11 22:08 Sergey Slyusarev
2017-01-12 9:06 ` Hans Hagen
0 siblings, 1 reply; 11+ messages in thread
From: Sergey Slyusarev @ 2017-01-11 22:08 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 451 bytes --]
Hi, i found the following bug (likely) some time ago:
When \textext (or any other text generating thing like btex etex etc.) is
present inside \*MPinclusions and \*MPinclusions are followed by \*MPcode
ConTeXt returns error:
Equation cannot be performed (color=vacuous).
Minimal example would be:
\startMPinclusions
picture p;
p := image(
draw textext("Foo");
);
\stopMPinclusions
\startMPcode
\stopMPcode
tested on http://live.contextgarden.net/
[-- Attachment #1.2: Type: text/html, Size: 615 bytes --]
[-- Attachment #2: Type: text/plain, Size: 492 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-01-11 22:08 Bug: \textext inside \*MPinclusions causes error Sergey Slyusarev
@ 2017-01-12 9:06 ` Hans Hagen
2017-01-12 16:53 ` Alan Braslau
0 siblings, 1 reply; 11+ messages in thread
From: Hans Hagen @ 2017-01-12 9:06 UTC (permalink / raw)
To: ntg-context
On 1/11/2017 11:08 PM, Sergey Slyusarev wrote:
> Hi, i found the following bug (likely) some time ago:
>
> When \textext (or any other text generating thing like btex etex etc.)
> is present inside \*MPinclusions and \*MPinclusions are followed by
> \*MPcode ConTeXt returns error:
> Equation cannot be performed (color=vacuous).
>
> Minimal example would be:
>
> \startMPinclusions
> picture p;
> p := image(
> draw textext("Foo");
> );
> \stopMPinclusions
> \startMPcode
> \stopMPcode
>
> tested on http://live.contextgarden.net/
you can use
\startMPinitializations
\stopMPinitializations
as these are expanded each graphic run
action pass 1 pass 2
definitions yes
extensions yes
inclusions yes
begin figure yes
initializations yes yes
metapost code yes yes
end figure yes yes
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-01-12 9:06 ` Hans Hagen
@ 2017-01-12 16:53 ` Alan Braslau
0 siblings, 0 replies; 11+ messages in thread
From: Alan Braslau @ 2017-01-12 16:53 UTC (permalink / raw)
To: mailing list for ConTeXt users
On Thu, 12 Jan 2017 10:06:09 +0100
Hans Hagen <pragma@wxs.nl> wrote:
> you can use
>
> \startMPinitializations
> \stopMPinitializations
>
> as these are expanded each graphic run
>
> action pass 1 pass 2
>
> definitions yes
> extensions yes
> inclus figure yes
> initializations yes yes
> metapost code yes yes
> end figure yes yes
One needs to remember that MPlib goes through several runs, and many
standard MP code examples are written for a single, mpost run. This
means that code can fail if variables, for example, are not properly
initialized (or re-initialized). Another example is reading from files
in MP, as the file descriptors are kept open by default, reading on from
where one stopped in a previous run.
Alan
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
@ 2017-01-12 11:23 Sergey Slyusarev
2017-01-15 17:55 ` Hans Hagen
0 siblings, 1 reply; 11+ messages in thread
From: Sergey Slyusarev @ 2017-01-12 11:23 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 792 bytes --]
> you can use
> \startMPinitializations
> \stopMPinitializations
> as these are expanded each graphic run
Thank you! This works fine with minimal example (in which the
behaviour in question appears).
But in specific context in which this problem affects me, this
solution breaks many things:
There are many *MPinclusions with as many MPinstances (so variables
from one instance don't contaminate another).
(here's that place:
https://github.com/jemmybutton/byrne-euclid/blob/master/preamble.tex#L30)
If this is indeed a bug and it's going to be fixed one day, I'll go
with some less invasive hack to overcome it,
but if this behaviour is correct, I'll try to rewrite everything accordingly.
Or I got it wrong and *MPinitializations can substitute for
*MPinclusions in this case?
Sergey
[-- Attachment #1.2: Type: text/html, Size: 1027 bytes --]
[-- Attachment #2: Type: text/plain, Size: 492 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
@ 2017-01-16 19:31 Sergey Slyusarev
2017-01-17 8:35 ` Hans Hagen
0 siblings, 1 reply; 11+ messages in thread
From: Sergey Slyusarev @ 2017-01-16 19:31 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 1868 bytes --]
> the (subtle) difference between the two [*MPinclusions and **MPinitializations*] is not a bug but a feature
If I understood correctly, *MPinitializations affects everything and
can't be assigned to a specific instance (or can it?),
in some cases (like mine) this difference is not so subtle.
Look at the following example (not so minimal):
\startMPinitializations
picture p;
p := image(
draw fullsquare scaled 1cm;
draw textext("1");
);
\stopMPinitializations
\startMPinitializations
picture s;
s := image(
draw (fullsquare rotated 45) scaled 1cm;
draw textext("2");
);
\stopMPinitializations
\defineMPinstance[foo][initializations=yes]
\startMPcode{foo}
picture q;
q := image(
draw fullcircle scaled 1cm;
draw textext("3");
);
draw q;
\stopMPcode
\startMPcode{foo}
draw p;
draw q shifted (2cm, 0);
draw s shifted (4cm, 0);
\stopMPcode
\defineMPinstance[bar][initializations=yes]
\startMPcode{bar}
picture r;
r := image(
draw fullcircle scaled 1cm;
draw textext("4");
);
draw r;
\stopMPcode
\startMPcode{bar}
draw p;
draw r shifted (2cm, 0);
draw s shifted (4cm, 0);
\stopMPcode
First, it shows why *MPinitializations can't replace *MPinclusions for me
(it affects all instances),
and second, it silently produces produces some really unexpected results:
It looks like it should produce (by line)
A circle with "3" inside (yes)
A square with "1" inside (yes); A circle with "3" inside again (no, instead
it produces circle with "2" inside); A rhombus with "2" inside (no, instead
it produces a rhombus with "1")
and so on.
(tested on http://live.contextgarden.net/)
In fact, I failed to declare picture variable inside with text inside one
*MPcode environment and pass it to another safely
(text either disappears or changes to other text, and this time ConTeXt
returns no error), that surely is a bug?
Sergey
[-- Attachment #1.2: Type: text/html, Size: 4417 bytes --]
[-- Attachment #2: Type: text/plain, Size: 492 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-01-16 19:31 Sergey Slyusarev
@ 2017-01-17 8:35 ` Hans Hagen
2017-01-21 21:13 ` Sergey Slyusarev
0 siblings, 1 reply; 11+ messages in thread
From: Hans Hagen @ 2017-01-17 8:35 UTC (permalink / raw)
To: mailing list for ConTeXt users, cph.lmy
On 1/16/2017 8:31 PM, Sergey Slyusarev wrote:
>> the (subtle) difference between the two [*MPinclusions and */MPinitializations/] is not a bug but a feature
>
> If I understood correctly, *MPinitializations affects everything and can't be assigned to a specific instance (or can it?),
> in some cases (like mine) this difference is not so subtle.
>
> Look at the following example (not so minimal):
>
> \startMPinitializations
>
> picture p;
>
> p := image(
>
> draw fullsquare scaled 1cm;
>
> draw textext("1");
>
> );
>
> \stopMPinitializations
>
> \startMPinitializations
>
> picture s;
>
> s := image(
>
> draw (fullsquare rotated 45) scaled 1cm;
>
> draw textext("2");
>
> );
>
> \stopMPinitializations
>
> \defineMPinstance[foo][initializations=yes]
>
> \startMPcode{foo}
>
> picture q;
>
> q := image(
>
> draw fullcircle scaled 1cm;
>
> draw textext("3");
>
> );
>
> draw q;
>
> \stopMPcode
>
> \startMPcode{foo}
>
> draw p;
>
> draw q shifted (2cm, 0);
>
> draw s shifted (4cm, 0);
>
> \stopMPcode
>
> \defineMPinstance[bar][initializations=yes]
>
> \startMPcode{bar}
>
> picture r;
>
> r := image(
>
> draw fullcircle scaled 1cm;
>
> draw textext("4");
>
> );
>
> draw r;
>
> \stopMPcode
>
> \startMPcode{bar}
>
> draw p;
>
> draw r shifted (2cm, 0);
>
> draw s shifted (4cm, 0);
>
> \stopMPcode
>
>
> First, it shows why *MPinitializations can't replace *MPinclusions for
> me (it affects all instances),
>
> and second, it silently produces produces some really unexpected results:
>
> It looks like it should produce (by line)
>
> A circle with "3" inside (yes)
>
> A square with "1" inside (yes); A circle with "3" inside again (no,
> instead it produces circle with "2" inside); A rhombus with "2" inside
> (no, instead it produces a rhombus with "1")
>
> and so on.
>
> (tested on http://live.contextgarden.net/)
>
> In fact, I failed to declare picture variable inside with text inside
> one *MPcode environment and pass it to another safely
>
> (text either disappears or changes to other text, and this time ConTeXt
> returns no error), that surely is a bug?
no, it's the way it works ... but keep in mind that textexts are
something bound to a specific code snippet so you can bets do something
like this:
\starttext
\defineMPinstance[foo][definitions=yes]
\defineMPinstance[bar][definitions=yes]
\startMPdefinitions{foo}
vardef p =
image(
draw fullsquare scaled 1cm;
draw textext("1");
)
enddef ;
\stopMPdefinitions
\startMPdefinitions{bar}
vardef p =
image(
draw (fullsquare rotated 45) scaled 1cm;
draw textext("2");
)
enddef;
\stopMPdefinitions
\startMPcode{foo}
draw p;
draw image(
draw fullcircle scaled 1cm;
draw textext("3");
);
draw p;
\stopMPcode
\startMPcode{bar}
draw p;
draw image(
draw fullcircle scaled 1cm;
draw textext("4");
);
\stopMPcode
\stoptext
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-01-17 8:35 ` Hans Hagen
@ 2017-01-21 21:13 ` Sergey Slyusarev
2017-01-22 12:23 ` Hans Hagen
0 siblings, 1 reply; 11+ messages in thread
From: Sergey Slyusarev @ 2017-01-21 21:13 UTC (permalink / raw)
To: Hans Hagen; +Cc: mailing list for ConTeXt users
[-- Attachment #1.1: Type: text/plain, Size: 4930 bytes --]
On Tue, Jan 17, 2017 at 11:35 AM, Hans Hagen <pragma@wxs.nl> wrote:
> On 1/16/2017 8:31 PM, Sergey Slyusarev wrote:
>
>> the (subtle) difference between the two [*MPinclusions and
>>> */MPinitializations/] is not a bug but a feature
>>>
>>
>> If I understood correctly, *MPinitializations affects everything and
>> can't be assigned to a specific instance (or can it?),
>> in some cases (like mine) this difference is not so subtle.
>>
>> Look at the following example (not so minimal):
>>
>> \startMPinitializations
>>
>> picture p;
>>
>> p := image(
>>
>> draw fullsquare scaled 1cm;
>>
>> draw textext("1");
>>
>> );
>>
>> \stopMPinitializations
>>
>> \startMPinitializations
>>
>> picture s;
>>
>> s := image(
>>
>> draw (fullsquare rotated 45) scaled 1cm;
>>
>> draw textext("2");
>>
>> );
>>
>> \stopMPinitializations
>>
>> \defineMPinstance[foo][initializations=yes]
>>
>> \startMPcode{foo}
>>
>> picture q;
>>
>> q := image(
>>
>> draw fullcircle scaled 1cm;
>>
>> draw textext("3");
>>
>> );
>>
>> draw q;
>>
>> \stopMPcode
>>
>> \startMPcode{foo}
>>
>> draw p;
>>
>> draw q shifted (2cm, 0);
>>
>> draw s shifted (4cm, 0);
>>
>> \stopMPcode
>>
>> \defineMPinstance[bar][initializations=yes]
>>
>> \startMPcode{bar}
>>
>> picture r;
>>
>> r := image(
>>
>> draw fullcircle scaled 1cm;
>>
>> draw textext("4");
>>
>> );
>>
>> draw r;
>>
>> \stopMPcode
>>
>> \startMPcode{bar}
>>
>> draw p;
>>
>> draw r shifted (2cm, 0);
>>
>> draw s shifted (4cm, 0);
>>
>> \stopMPcode
>>
>>
>> First, it shows why *MPinitializations can't replace *MPinclusions for
>> me (it affects all instances),
>>
>> and second, it silently produces produces some really unexpected results:
>>
>> It looks like it should produce (by line)
>>
>> A circle with "3" inside (yes)
>>
>> A square with "1" inside (yes); A circle with "3" inside again (no,
>> instead it produces circle with "2" inside); A rhombus with "2" inside
>> (no, instead it produces a rhombus with "1")
>>
>> and so on.
>>
>> (tested on http://live.contextgarden.net/)
>>
>> In fact, I failed to declare picture variable inside with text inside
>> one *MPcode environment and pass it to another safely
>>
>> (text either disappears or changes to other text, and this time ConTeXt
>> returns no error), that surely is a bug?
>>
>
> no, it's the way it works ... but keep in mind that textexts are something
> bound to a specific code snippet so you can bets do something like this:
>
> \starttext
>
> \defineMPinstance[foo][definitions=yes]
> \defineMPinstance[bar][definitions=yes]
>
> \startMPdefinitions{foo}
> vardef p =
> image(
> draw fullsquare scaled 1cm;
> draw textext("1");
> )
> enddef ;
> \stopMPdefinitions
>
> \startMPdefinitions{bar}
> vardef p =
> image(
> draw (fullsquare rotated 45) scaled 1cm;
> draw textext("2");
> )
> enddef;
> \stopMPdefinitions
>
> \startMPcode{foo}
> draw p;
> draw image(
> draw fullcircle scaled 1cm;
> draw textext("3");
> );
> draw p;
> \stopMPcode
>
> \startMPcode{bar}
> draw p;
> draw image(
> draw fullcircle scaled 1cm;
> draw textext("4");
> );
> \stopMPcode
>
> \stoptext
>
>
>
> -----------------------------------------------------------------
> Hans Hagen | PRAGMA ADE
> Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
> tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
> -----------------------------------------------------------------
>
Thank you, Hans!
I thought of this solution too ( http://tex.stackexchange.com/
questions/347908/metapost-text-labels-inside-mpinclusions/348066#348066 ),
but in my particular case it didn't work, because the code inside vardef is
only executed when macro is called (while image(...) is processed
immediately). It would help if the macro could be called within
*MPdefinitions, like this:
\starttext
\startMPdefinitions
picture tmp;
vardef p =
image(
draw fullcircle scaled 5cm;
draw textext("test");
)
enddef;
tmp := image(draw p;);
\stopMPdefinitions
\startMPcode
draw p;
\stopMPcode
\stoptext
but that predictably generates the same error ("! Equation cannot be
performed (color=vacuous).").
Anyway, I solved my problem somehow (by running the code inside
*reusableMPgraphic and reusing it for the first time inside \setbox that is
never shown
https://github.com/jemmybutton/byrne-euclid/commit/8c05cc96405f0ee33e6901a7fa66b2dffcda45ad#diff-6a58985423a46a2bb439cfdf26904e5fL30
, at the cost of being unable to modify the image).
Now I see that the fact that it's almost impossible to use images with text
inside, outside of their environment of origin is not a bug, but a natural
limitation of the system, and the first message should have been not about
"bug", but more about something like "feature request". Sorry for being
hasty.
Sergey.
[-- Attachment #1.2: Type: text/html, Size: 7159 bytes --]
[-- Attachment #2: Type: text/plain, Size: 492 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-01-21 21:13 ` Sergey Slyusarev
@ 2017-01-22 12:23 ` Hans Hagen
2017-02-13 22:36 ` Sergey Slyusarev
0 siblings, 1 reply; 11+ messages in thread
From: Hans Hagen @ 2017-01-22 12:23 UTC (permalink / raw)
To: Sergey Slyusarev; +Cc: mailing list for ConTeXt users
On 1/21/2017 10:13 PM, Sergey Slyusarev wrote:
>
> see below
It's a single tex run so you can do:
\starttext
\newbox\MyMpBox \setbox\MyMpBox\hbox{foo}
\startMPcode
draw textext("\copy\MyMpBox") ;
\stopMPcode
\startMPcode
draw textext("\copy\MyMpBox") rotated 45;
\stopMPcode
\stoptext
> On Tue, Jan 17, 2017 at 11:35 AM, Hans Hagen <pragma@wxs.nl
> <mailto:pragma@wxs.nl>> wrote:
>
> On 1/16/2017 8:31 PM, Sergey Slyusarev wrote:
>
> the (subtle) difference between the two [*MPinclusions and
> */MPinitializations/] is not a bug but a feature
>
>
> If I understood correctly, *MPinitializations affects everything
> and can't be assigned to a specific instance (or can it?),
> in some cases (like mine) this difference is not so subtle.
>
> Look at the following example (not so minimal):
>
> \startMPinitializations
>
> picture p;
>
> p := image(
>
> draw fullsquare scaled 1cm;
>
> draw textext("1");
>
> );
>
> \stopMPinitializations
>
> \startMPinitializations
>
> picture s;
>
> s := image(
>
> draw (fullsquare rotated 45) scaled 1cm;
>
> draw textext("2");
>
> );
>
> \stopMPinitializations
>
> \defineMPinstance[foo][initializations=yes]
>
> \startMPcode{foo}
>
> picture q;
>
> q := image(
>
> draw fullcircle scaled 1cm;
>
> draw textext("3");
>
> );
>
> draw q;
>
> \stopMPcode
>
> \startMPcode{foo}
>
> draw p;
>
> draw q shifted (2cm, 0);
>
> draw s shifted (4cm, 0);
>
> \stopMPcode
>
> \defineMPinstance[bar][initializations=yes]
>
> \startMPcode{bar}
>
> picture r;
>
> r := image(
>
> draw fullcircle scaled 1cm;
>
> draw textext("4");
>
> );
>
> draw r;
>
> \stopMPcode
>
> \startMPcode{bar}
>
> draw p;
>
> draw r shifted (2cm, 0);
>
> draw s shifted (4cm, 0);
>
> \stopMPcode
>
>
> First, it shows why *MPinitializations can't replace
> *MPinclusions for
> me (it affects all instances),
>
> and second, it silently produces produces some really unexpected
> results:
>
> It looks like it should produce (by line)
>
> A circle with "3" inside (yes)
>
> A square with "1" inside (yes); A circle with "3" inside again (no,
> instead it produces circle with "2" inside); A rhombus with "2"
> inside
> (no, instead it produces a rhombus with "1")
>
> and so on.
>
> (tested on http://live.contextgarden.net/)
>
> In fact, I failed to declare picture variable inside with text
> inside
> one *MPcode environment and pass it to another safely
>
> (text either disappears or changes to other text, and this time
> ConTeXt
> returns no error), that surely is a bug?
>
>
> no, it's the way it works ... but keep in mind that textexts are
> something bound to a specific code snippet so you can bets do
> something like this:
>
> \starttext
>
> \defineMPinstance[foo][definitions=yes]
> \defineMPinstance[bar][definitions=yes]
>
> \startMPdefinitions{foo}
> vardef p =
> image(
> draw fullsquare scaled 1cm;
> draw textext("1");
> )
> enddef ;
> \stopMPdefinitions
>
> \startMPdefinitions{bar}
> vardef p =
> image(
> draw (fullsquare rotated 45) scaled 1cm;
> draw textext("2");
> )
> enddef;
> \stopMPdefinitions
>
> \startMPcode{foo}
> draw p;
> draw image(
> draw fullcircle scaled 1cm;
> draw textext("3");
> );
> draw p;
> \stopMPcode
>
> \startMPcode{bar}
> draw p;
> draw image(
> draw fullcircle scaled 1cm;
> draw textext("4");
> );
> \stopMPcode
>
> \stoptext
>
>
>
> -----------------------------------------------------------------
> Hans Hagen | PRAGMA ADE
> Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
> tel: 038 477 53 69 | www.pragma-ade.nl
> <http://www.pragma-ade.nl> | www.pragma-pod.nl
> <http://www.pragma-pod.nl>
> -----------------------------------------------------------------
>
>
> Thank you, Hans!
> I thought of this solution too (
> http://tex.stackexchange.com/questions/347908/metapost-text-labels-inside-mpinclusions/348066#348066
> <http://tex.stackexchange.com/questions/347908/metapost-text-labels-inside-mpinclusions/348066#348066>
> ), but in my particular case it didn't work, because the code inside
> vardef is only executed when macro is called (while image(...) is
> processed immediately). It would help if the macro could be called
> within *MPdefinitions, like this:
>
> \starttext
> \startMPdefinitions
> picture tmp;
> vardef p =
> image(
> draw fullcircle scaled 5cm;
> draw textext("test");
> )
> enddef;
> tmp := image(draw p;);
> \stopMPdefinitions
> \startMPcode
> draw p;
> \stopMPcode
> \stoptext
>
> but that predictably generates the same error ("! Equation cannot be
> performed (color=vacuous).").
>
> Anyway, I solved my problem somehow (by running the code inside
> *reusableMPgraphic and reusing it for the first time inside \setbox that
> is never shown
> https://github.com/jemmybutton/byrne-euclid/commit/8c05cc96405f0ee33e6901a7fa66b2dffcda45ad#diff-6a58985423a46a2bb439cfdf26904e5fL30
> , at the cost of being unable to modify the image).
> Now I see that the fact that it's almost impossible to use images with
> text inside, outside of their environment of origin is not a bug, but a
> natural limitation of the system, and the first message should have been
> not about "bug", but more about something like "feature request". Sorry
> for being hasty.
>
> Sergey.
--
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-01-22 12:23 ` Hans Hagen
@ 2017-02-13 22:36 ` Sergey Slyusarev
2017-02-14 12:13 ` Hans Hagen
0 siblings, 1 reply; 11+ messages in thread
From: Sergey Slyusarev @ 2017-02-13 22:36 UTC (permalink / raw)
To: Hans Hagen; +Cc: mailing list for ConTeXt users
[-- Attachment #1.1: Type: text/plain, Size: 661 bytes --]
> It's a single tex run so you can do:
> \starttext
> \newbox\MyMpBox \setbox\MyMpBox\hbox{foo}
> \startMPcode
> draw textext("\copy\MyMpBox") ;
> \stopMPcode
> \startMPcode
> draw textext("\copy\MyMpBox") rotated 45;
> \stopMPcode
> \stoptext
This is not much different from:
\starttext
\startMPinclusions
string t;
t := "foo";
\stopMPinclusions
\startMPcode
draw textext(t);
\stopMPcode
\startMPcode
draw textext(t) rotated 45;
\stopMPcode
\stoptext
but the problem was not with passing just text, but with more complex
images that may or may not contain text, without specifically addressing
text after image is defined.
[-- Attachment #1.2: Type: text/html, Size: 1434 bytes --]
[-- Attachment #2: Type: text/plain, Size: 492 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Bug: \textext inside \*MPinclusions causes error
2017-02-13 22:36 ` Sergey Slyusarev
@ 2017-02-14 12:13 ` Hans Hagen
0 siblings, 0 replies; 11+ messages in thread
From: Hans Hagen @ 2017-02-14 12:13 UTC (permalink / raw)
To: Sergey Slyusarev; +Cc: mailing list for ConTeXt users
On 2/13/2017 11:36 PM, Sergey Slyusarev wrote:
>> It's a single tex run so you can do:
>> \starttext
>> \newbox\MyMpBox \setbox\MyMpBox\hbox{foo}
>> \startMPcode
>> draw textext("\copy\MyMpBox") ;
>> \stopMPcode
>> \startMPcode
>> draw textext("\copy\MyMpBox") rotated 45;
>> \stopMPcode
>> \stoptext
>
> This is not much different from:
>
> \starttext
>
> \startMPinclusions
>
> string t;
>
> t := "foo";
>
> \stopMPinclusions
>
> \startMPcode
>
> draw textext(t);
>
> \stopMPcode
>
> \startMPcode
>
> draw textext(t) rotated 45;
>
> \stopMPcode
>
> \stoptext
>
>
> but the problem was not with passing just text, but with more complex
> images that may or may not contain text, without specifically addressing
> text after image is defined.
\starttext
\startMPinclusions
vardef my_text_t =
textext("foo")
enddef ;
\stopMPinclusions
\startMPcode
draw textext(my_text_t);
\stopMPcode
\startMPcode
draw textext(my_text_t) rotated 45;
\stopMPcode
\stoptext
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-02-14 12:13 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-11 22:08 Bug: \textext inside \*MPinclusions causes error Sergey Slyusarev
2017-01-12 9:06 ` Hans Hagen
2017-01-12 16:53 ` Alan Braslau
2017-01-12 11:23 Sergey Slyusarev
2017-01-15 17:55 ` Hans Hagen
2017-01-16 19:31 Sergey Slyusarev
2017-01-17 8:35 ` Hans Hagen
2017-01-21 21:13 ` Sergey Slyusarev
2017-01-22 12:23 ` Hans Hagen
2017-02-13 22:36 ` Sergey Slyusarev
2017-02-14 12:13 ` Hans Hagen
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).