ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
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
___________________________________________________________________________________


  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).