From: "Wolfgang Schuster" <schuster.wolfgang@googlemail.com>
To: "mailing list for ConTeXt users" <ntg-context@ntg.nl>
Subject: Re: Making a template, defining a macro
Date: Thu, 31 Jul 2008 08:37:41 +0200 [thread overview]
Message-ID: <115224fb0807302337r2766d882rc30c516ac255d6c8@mail.gmail.com> (raw)
In-Reply-To: <20080730181856.utckzb62zo8s0c8o@webmail.opentransfer.com>
On Thu, Jul 31, 2008 at 1:18 AM, Demián Gutierrez <dmi@minotauro.com.ve> wrote:
> Hi,
>
> I have to prepare a template to typeset a document that will have a
> lot of tables of similar kinds repeated across the document. I want to
> put that tables in some kind of templates, so I can use those
> templates over and over. So the idea is to hide to the authors all the
> format details behind the template allowing them to focus on the data
> that has to be filled in those tables (which is the important thing).
>
> So, I would like to define some macros, that allows me to do something like:
>
> \starttableX
> \startSomeField
> Some Field Value...
> \stopSomeField
>
> \startOtherField
> Other Field Value...
> \stopOtherField
> \stoptableX
>
> And the result, should be a table like this:
>
> | Some Field Label: | Some Field Value... |
> | Other Field Label: | Other Field Value... |
>
> That way I define a template for each table type I'll have in the document.
>
> I'm not having trouble with the tables, but with the macro definition,
> this is my approximation of what I want (which does not work):
>
> \startsetups crudmain
> \long\def\startguiname #1 \stopguiname{\setvariables[crudmain][guiname=#1]}
> \long\def\startclassname #1
> \stopclassname{\setvariables[crudmain][classname=#1]}
>
> GUI Name: \getvariable{crudmain}{guiname}
> Class Name: \getvariable{crudmain}{classname}
> \stopsetups
>
> \definestartstop[crudmain][commands=\setups{crudmain}]
>
> \startcrudmain
> \startguiname
> Some name here...
> \stopguiname
> \startclassname
> Other name here...
> \stopclassname
> \stopcrudmain
>
> At this point I'm getting this error:
>
> ! Use of \startguiname doesn't match its definition.
>
> I want the \long\def\startguiname inside the \startsetups /
> \stopsetups to be sure that it will only be called inside the
> \startcrudmain / \stopcrudmain (Cause other tables of different types
> may have fields with the same name). But even considering the previous
> point, if I move the \long\def\startguiname outside the \startsetups /
> \stopsetups definition it does not works, because the
> \getvariable{crudmain}{guiname} just returns blank.
>
> So is it possible to do what I want or something similar? What would
> be a good way to do it? Any advice on the code I've already written?
> This is really getting me crazy, cause context is not like any other
> programming language I'm used to use ;-)
\def\startcrudmain
{\bgroup
\def\startguiname##1\stopguiname
{\setvalue{crudmain:guiname}{##1}}%
\def\startclassname##1\stopclassname
{\setvalue{crudmain:classname}{##1}}}
\def\stopcrudmain
{\bTABLE[frame=off]%
\bTR
\bTD GUI Name: \eTD
\bTD \getvalue{crudmain:guiname} \eTD
\eTR
\bTR
\bTD Class Name: \eTD
\bTD \getvalue{crudmain:classname} \eTD
\eTR
\eTABLE
\egroup}
\starttext
\startcrudmain
\startguiname
Some name here...
\stopguiname
\startclassname
Other name here...
\stopclassname
\stopcrudmain
\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 : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
next prev parent reply other threads:[~2008-07-31 6:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-30 23:18 Demián Gutierrez
2008-07-31 6:37 ` Wolfgang Schuster [this message]
2008-07-31 13:59 Demián Gutierrez
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=115224fb0807302337r2766d882rc30c516ac255d6c8@mail.gmail.com \
--to=schuster.wolfgang@googlemail.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).