ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Philipp Gesang <Philipp.Gesang@alumni.uni-heidelberg.de>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Code Called Twice?
Date: Sat, 12 Oct 2013 02:09:01 +0200	[thread overview]
Message-ID: <20131012000901.GB24051@tartaros> (raw)
In-Reply-To: <52586D9C.4030004@wxs.nl>


[-- Attachment #1.1: Type: text/plain, Size: 3275 bytes --]

···<date: 2013-10-11, Friday>···<from: Hans Hagen>···

> On 10/11/2013 1:00 PM, Philipp Gesang wrote:
> > ···<date: 2013-10-10, Thursday>···<from: Thangalin>···
> >
> >>
> >> I noticed something unexpected with the following code:
> >>
> >> \enabletrackers[metapost.showlog]
> >>
> >> \startuseMPgraphic{heading:ThemeTitleStyle}
> >>    show "HEADING:THEMETITLESTYLE";
> >>    show \MPstring{heading:title};
> >>
> >>    draw textext( \MPstring{heading:title} ) rotated 5
> >>      withcolor blue;
> >> \stopuseMPgraphic
> >>
> >> \defineframed[ThemeTitleStyle][
> >>    background=\useMPgraphic{ThemeTitleStyle},
> >> ]
> >>
> >> \def\processword#1{%
> >>    \setMPtext{heading:title}{#1}%
> >>    \useMPgraphic{heading:ThemeTitleStyle}
> >> }
> >>
> >> \define[1]\ThemeChapterTitle{\applytosplitstringword\processword{#1}}
> >> \setuphead[chapter][deeptextcommand={\ThemeChapterTitle}]
> >>
> >> \starttext
> >>    \startchapter[title=Why Is heading:ThemeTitleStyle Called Twice?]
> >>    \input knuth
> >>    \stopchapter
> >> \stoptext
> >>
> >> It appears as though heading:ThemeTitleStyle is being called twice:
> >>
> >> metapost        > info:
> >>>> "HEADING:THEMETITLESTYLE"
> >>>> "Why"
> >> metapost        > info:
> >>>> "HEADING:THEMETITLESTYLE"
> >>>> "Why"
> >>
> >> I am trying to produce a random number that is not equal to the
> >> previous random number. However, if the code is called twice, then I'd
> >> have to add code to ignore one of the calls.
> >>
> >> Any ideas why the code seems to be called twice and what can be done
> >> to ensure that it is only called once?
> >
> > Don’t use text ;-) That’s a known issue: as soon as your Metapost
> > code contains text, it will be processed twice. E.g.:
> >
> >
> >    \starttext
> >      \setMPtext{heading:title}{foo}
> >      \startMPcode
> >        show "This gets printed twice.";
> >        draw textext( \MPstring{heading:title} );
> >      \stopMPcode
> >    \stoptext
> >
> > Same for labels, {b,e}tex. See also this thread:
> >
> >    http://www.ntg.nl/pipermail/ntg-context/2011/056047.html
> 
> you can check for it:
> 
> \enabletrackers[metapost.showlog]
> 
> and in the mp code:
> 
> message(if mfun_first_run : "first run" else : "final run" fi) ;
> message(if mfun_trial_run : "trial run" else : "final run" fi) ;
> 
> Hans

That’s handy! I added a section on dealing with multi-pass to the
“gotchas” page:

    http://wiki.contextgarden.net/Unexpected_behavior#Multipass

There is a subsection about MP at the end.

Btw. the behavior of mfun_trial_run is not very intuitive. I’d
expect it to work like \iftrialtypesetting, but in a single-pass
context it evaluates to true:

    \enabletrackers[metapost.showlog]

    \starttext
      \startMPcode
        if mfun_trial_run :
          show "This should be printed during the trial pass.";
        else :
          show "This should be printed during the final pass.";
        fi;
        fill unitcircle scaled 1cm withcolor blue;
        %label (btex Some label text etex, (0,0));
      \stopMPcode
    \stoptext

Uncommenting the label yields two passes, as expected.

Best regards,
Philipp


[-- Attachment #1.2: Type: application/pgp-signature, Size: 490 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2013-10-12  0:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-11  6:21 Thangalin
2013-10-11  7:27 ` Marco Patzer
2013-10-11 16:39   ` Thangalin
2013-10-11 11:00 ` Philipp Gesang
2013-10-11 21:29   ` Hans Hagen
2013-10-12  0:09     ` Philipp Gesang [this message]
2013-10-12  0:16       ` Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131012000901.GB24051@tartaros \
    --to=philipp.gesang@alumni.uni-heidelberg.de \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).