# [dev-context] new MyWay about \sometxt

Tue Jan 30 05:41:41 CET 2007

On Tue, 30 Jan 2007, Mojca Miklavec wrote:

> Hello,
>
> instead of checking the problems with MyWay about database module, I
> long ago):
>
>    http://dl.contextgarden.net/myway/sometxt.pdf
>
> \sometxt{...} should be used instead of textext("...") in metafun
> graphics whenever possible, since it's much more efficient. An average
> user shouldn't care about much more than that. The MyWay is devoted to
> the curious ones. I hope that I included all the major ideas which
> Hans implemented in Summer/Autumn 2006 on my request. Although not all
> of them are documented well enough, I tried to mention them at least.

Very nice. Now, I do not need to look up old mails to figure out how
to manipulate sometxt. I have one example where \sometxt[...]{...} is
useful. If you are interested, I can send it to you.

I thought a bit about your feature request, and it is not too
difficult to implement it. Here is a patch that allows you to use
\sometext[font][iwona,20pt]{...}. Careful of spurious linebreaks.

%=======================================================

\long\def\redofiltersometxt[#1]%
{\doifnextcharelse[{\reredofiltersometxt[#1]}{\redodofiltersometxt[#1]}}

\long\def\redodofiltersometxt[#1]#2%
{\increment\txtcounter
\TeXtext[#1]\txtcounter{#2}%
\filtersometxt}

\long\def\reredofiltersometxt[#1][#2]#3%
{\increment\txtcounter
\TeXtext[#1]\txtcounter{\switchtobodyfont[#2]\strut#3}%
\filtersometxt}

\definetextext[font]{\donothing}

\usetypescript[iwona][texnansi]

\starttext
\startMPcode
draw fullcircle xyscaled (3cm,2cm);
label(\sometxt{Hello world!}, origin);
\stopMPcode

% Does not cause any harm.
\startMPcode
draw fullcircle xyscaled (3cm,2cm);
label(\sometxt[font]{Hello world!}, origin);
\stopMPcode

\startMPcode
draw fullcircle xyscaled (3cm,2cm);
label(\sometxt[font][iwona,20pt]{Hello world!}, origin);
\stopMPcode

\stoptext

%===============================================================

I haven't tested it, but I do not think that this should cause any
problems with existing code. \definetextext[font] is just a dummy. It
should work with other things also. You can get rid of the dummy
by checking in redodofiltersometxt if #1 is has a comma or not. Would
that extra overhead be useful of gnuplot?

Hans, is there a reason for not defining dodofiltersometxt as

\long\def\dodofiltersometxt#1#2% #3
{\ifx#2\empty
\else
\increment\txtcounter
\TeXtext\txtcounter{#1}%
\expandafter\filtersometxt
\fi#2}% #3

whih will be a bit faster.