ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Philipp Gesang <gesang@stud.uni-heidelberg.de>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: need help with macro
Date: Sun, 23 Sep 2012 16:28:05 +0200	[thread overview]
Message-ID: <20120923142805.GB29608@phlegethon.router_intern> (raw)
In-Reply-To: <D1CF2A3C-5D1B-4691-BC32-22365AE91AC4@gmail.com>


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

···<date: 2012-09-23, Sunday>···<from: Wolfgang Schuster>···

> It’s a expansion problem, you can either expand the content in the definition of \mogrify (as seen below)
> or you make the \mogrify command unexpanded and you expand the content of the \wwparameter
> (i.e. \doifsomething{…}{\normalexpanded{\mogrify{…}}})

Thanks a lot, I rewrote my macros according to your the first
suggestion and it works like a breeze.

Best regards
Philipp


> 
> \unprotect
> 
> \def\mogrify_scan#first#second#third#rest\relax
>   {\def\m_mogrify_three{#first#second#third}%
>    \def\m_mogrify_rest {#rest}}
> 
> \def\mogrify#content%
>   {\begingroup
>    \edef\m_mogrify_content{#content}%
>    \expandafter\mogrify_scan\m_mogrify_content\relax
>    \colored  [red]{\m_mogrify_three}%
>    \colored[green]{\m_mogrify_rest }%
>    \endgraf
>   \endgroup}
> 
> \installnamespace              {ww}
> \installcommandhandler \????ww {ww} \????ww
> 
> \appendtoks
>   \setuevalue{\currentww}{\wont_work[\currentww]}
> \to \everydefineww
> 
> \unexpanded\def\wont_work[#id]%
>   {\edef\currentww{#id}%
>    \dosingleempty\wont_work_indeed}
> 
> \def\wont_work_indeed[#setups]#content%
>   {\iffirstargument\setupcurrentww[#setups]\fi
>    \doifsomething{\wwparameter{param}}{\mogrify{\wwparameter{param}}}%
>    \endgraf
>    \framed{#content}}
> 
> \defineww[wontwork]
> 
> \protect
> 
> \starttext
> 
> \mogrify{foobar}\par%% the macro does work in isolation
> 
> \wontwork[param=whatever]{will it work?}
> \wontwork[param=]        {this, however, does work}
> 
> \stoptext
> 
> Wolfgang
> 
> ___________________________________________________________________________________
> 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
> ___________________________________________________________________________________

-- 
()  ascii ribbon campaign - against html e-mail
/\  www.asciiribbon.org   - against proprietary attachments

[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 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:[~2012-09-23 14:28 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-23 13:33 Philipp Gesang
2012-09-23 14:00 ` Wolfgang Schuster
2012-09-23 14:28   ` Philipp Gesang [this message]

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=20120923142805.GB29608@phlegethon.router_intern \
    --to=gesang@stud.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).