From: Taco Hoekwater <taco@elvenkind.com>
Subject: Re: High level user macro (howto?)
Date: Mon, 28 Jun 2004 11:32:17 +0200 [thread overview]
Message-ID: <20040628113217.2efb080b@glenlivet.elvenkind.com> (raw)
In-Reply-To: <5CAF4C26-C756-11D8-AE54-000A95C38698@chello.fr>
Hi Maurice,
The 'key' to the keyval functionality in ConTeXt are two macros called
\getparameters and \processaction.
Here is a 'quickstart', assuming you want to define \myzigzag:
%
\unprotect % enable exclamations in macro names
\def\myzigzag#1[#2]{%
% the #1 makes sure we allow a space before the bracket
%
\getparameters[ZZ][Dir=,Linewidth=1pt,Color=Red,Width=3em,#2]
%
% Now you have a set of new macros that all start with ZZ.
% At least there are \ZZDir,\ZZLinewidth, \ZZColor and \ZZWidth
% (these have default values) but possibly others as well,
% depending on user input.
%
% Here's a usage example:
%
\edef\mywidth{\ZZWidth}%
%
% If you want to use keyword values, then you also need
% to use \processaction.
%
% Say you want "Dir" to be mandatory and that it
% accepts 4 directional keywords, as well as a direct
% angle specification.
%
% I've used all mixed case keywords, because otherwise
% you might run into conflicts with the multilingual interface
%
\expandafter\processaction\expandafter[\ZZDir]
[Down =>\def\Dir{270},
Left =>\def\Dir{180},
Up =>\def\Dir{90},
Right =>\def\Dir{0},
\s!default =>\errorDir,
\s!unknown =>\checkDir{\ZZDir}]
%
% \s!default may be triggered because \ZZDir's expansion is
% empty unless the user supplied something.
%
% The first argument to \processaction has to be expanded,
% so you need the \expandafter's.q
}
% for completeness, here is an example definition of \checkDir and
% \errorDir:
\def\errorDir{%
\def\Dir{0}% error recovery
\message{Please supply "Dir" argument}%
}
\def\checkDir#1{%
\doifnumberelse {#1}
{\def\Dir{#1}}
{\message{Invalid "Dir" argument! (#1)}}
}
\protect % end of definitions
On Sat, 26 Jun 2004 11:51:14 +0200, Maurice wrote:
> Bonjour à tous,
>
> One thing is missing in context (or not documented in reference manual?)
> is a standard and easy way to build arbitrary parametrised high level
> macros.
>
--
groeten,
Taco
next prev parent reply other threads:[~2004-06-28 9:32 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-31 9:07 pdfTeX questions Peter Münster
2004-05-31 9:56 ` Patrick Gundlach
2004-05-31 10:11 ` Patrick Gundlach
2004-05-31 12:09 ` Peter Münster
2004-05-31 12:53 ` Patrick Gundlach
2004-06-01 18:08 ` Hans Hagen
[not found] ` <m2n032tvs8.fs f@levana.de>
2004-06-02 18:05 ` Peter Münster
2004-06-17 8:48 ` Patrick Gundlach
2004-06-18 14:29 ` ConTeXt-Wiki (Was: Re: Re: pdfTeX questions) Holger Schöner
2004-06-20 14:12 ` ConTeXt-Wiki Patrick Gundlach
2004-06-21 14:39 ` ConTeXt-Wiki Holger Schöner
2004-06-22 15:55 ` ConTeXt-Wiki Patrick Gundlach
2004-06-22 16:13 ` ConTeXt-Wiki Matt Gushee
2004-06-22 17:00 ` ConTeXt-Wiki Patrick Gundlach
2004-06-22 17:13 ` ConTeXt-Wiki jimarin
2004-06-23 5:56 ` Maurice Diamantin
2004-06-23 7:32 ` ConTeXt-Wiki Patrick Gundlach
2004-06-28 16:52 ` ConTeXt-Wiki Nagy Bence
2004-06-28 17:08 ` Tobias Burnus
2004-06-23 8:51 ` Tobias Burnus
2004-06-23 12:24 ` Maurice Diamantin
2004-06-23 15:09 ` ConTeXt-Wiki Patrick Gundlach
2004-06-23 16:59 ` SF project and docs (was: ConTeXt-Wiki) Henning Hraban Ramm
2004-06-24 14:13 ` Maurice Diamantini
2004-06-24 19:12 ` docs Henning Hraban Ramm
2004-06-24 19:34 ` docs Idris Samawi Hamid
2004-06-24 21:58 ` docs Henning Hraban Ramm
2004-06-25 6:21 ` docs Taco Hoekwater
2004-06-25 15:23 ` docs Idris Samawi Hamid
2004-06-24 19:42 ` docs William D. Neumann
2004-06-25 6:42 ` Hans political ConTeXt orientation request! Maurice Diamantini
2004-06-25 16:03 ` Hans Hagen
2004-06-26 9:46 ` Maurice Diamantini dom
2004-06-26 9:51 ` High level user macro (howto?) Maurice Diamantini dom
2004-06-28 9:18 ` Giuseppe Bilotta
2004-06-28 11:58 ` Hans Hagen
2004-06-28 13:21 ` Re[2]: " Giuseppe Bilotta
2004-06-28 14:04 ` Hans Hagen
2004-06-28 15:06 ` Re[2]: " Giuseppe Bilotta
2004-06-28 9:32 ` Taco Hoekwater [this message]
2004-08-10 12:02 ` Peter Münster
2004-08-10 12:11 ` Peter Münster
2004-08-10 12:35 ` Vit Zyka
2004-08-10 13:47 ` Peter Münster
2004-06-28 9:49 ` Patrick Gundlach
2004-06-28 15:34 ` Maurice Diamantini
2004-06-28 8:40 ` Extending metapost Taco Hoekwater
2004-12-27 16:03 ` John Culleton
2004-12-27 19:17 ` Patrick Gundlach
2004-12-28 10:04 ` Taco Hoekwater
2004-06-25 16:11 ` docs Hans Hagen
2004-06-25 16:56 ` docs William D. Neumann
2004-06-25 18:04 ` docs Hans Hagen
2004-06-26 18:18 ` docs Hans Hagen
2004-06-23 8:56 ` ConTeXt-Wiki Patrick Gundlach
2004-06-23 12:42 ` ConTeXt-Wiki Maurice Diamantini
2004-06-23 14:54 ` ConTeXt-Wiki Patrick Gundlach
2004-06-24 13:01 ` ConTeXt-Wiki Maurice Diamantini
2004-06-23 7:26 ` ConTeXt-Wiki Patrick Gundlach
2004-06-23 8:55 ` ConTeXt-Wiki Patrick Gundlach
2004-06-23 15:29 ` ConTeXt-Wiki Holger Schöner
2004-06-06 7:24 ` Re: pdfTeX questions Peter Münster
2004-06-07 17:40 ` Hans Hagen
2004-06-07 20:40 ` Peter Münster
2004-05-31 10:07 ` Patrick Gundlach
2004-05-31 12:20 ` Peter Münster
2004-06-01 18:10 ` 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=20040628113217.2efb080b@glenlivet.elvenkind.com \
--to=taco@elvenkind.com \
--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).