[NTG-context] Colored labels with MetaPost in MkII

Aditya Mahajan adityam at umich.edu
Tue Oct 28 15:47:51 CET 2008


On Mon, 27 Oct 2008, Wolfgang Schuster wrote:

> On Fri, Oct 24, 2008 at 2:15 PM, Aditya Mahajan <adityam at umich.edu> wrote:
>> On Fri, 24 Oct 2008, Wolfgang Schuster wrote:
>>
>>> Hi all,
>>>
>>> what is the best method to format MetaPost labels in MkII with \doattributes.
>>
>> \startMPenvironment[global]
>>> \setupcolors[state=start]
>>>
>>> \def\labelstyle{bold}
>>> \def\labelcolor{red}
>> \stopMPenvironment
>>
>> This gives you only bold label.
>>
>>> \starttext
>>> \startMPcode
>>> label(textext("\doattributes{label}{style}{color}{Label}"),origin) ;
>>> \stopMPcode
>>> \stoptext
>>
>> Tex colors do not work inside textext. Try
>>
>> label(textext("\startcolor[red] red \stopcolor"), origin) ;
>>
>> One way to get around this is to use \sometxt.
>>
>> label(\sometxt{\doattributes{label}{style}{color}{Label}},(5cm,0)) ;
>>
>> But then you have to be careful about the differences between \sometxt in
>> MKII and MKIV (which I need to  summarize on the wiki).
>
> Here is a new example where I can't even use \sometxt.

Sometxt does not work appear to work with \startMPdrawing (there is 
no output at all). I think that the reason is that MPdrawing simply writes 
stuff to the MPfile without doing the extra work needed for sometxt.

I will call this is a bug, but I do not know if Hans wants to work on 
TeX-MP interaction in MKII now.

> \setupcolors[state=start]
>
> \def\labelstyle{bold}
> \def\labelcolor{red}
>
> \starttext
> \resetMPdrawing
> \startMPdrawing
> label(textext("\doattributes{label}{style}{color}{Label}"),origin) ;
> label(\sometxt{\doattributes{label}{style}{color}{Label}},origin) ;
> \stopMPdrawing
> \MPdrawingdonetrue
> \getMPdrawing
> \stoptext

It may be possible to write your macros without \start-stop-MPdrawing. 
Everything inside \start-stop MP(code|graphic) is first parsed by TeX, so 
you can do things like

\newif\ifcircle \circletrue

\startMPcode
draw \ifcircle fullcircle \else fullsquare \fi xyscaled (5cm,5cm) ;
\stopMPcode

So, instead of writing stuff to MP using start-stop MPdrawing, you can 
simply set some flags in conditionals and chardefs, and then write one 
MP(graphic|code) to write one MP file. This strategy will not work for all 
cases, but can be useful for some.

Aditya



More information about the ntg-context mailing list