On 2010-11-17 <22:53:20>, Wolfgang Schuster wrote: > > Am 17.11.2010 um 20:10 schrieb Philipp Gesang: > > > Hi Aditya, > > > > you seem to be familiar with some of the features of the new > > namespace model that I was not able to infer from Wolfgang’s > > code. Could you please comment on what the keys ‘setup’, ‘type’, > > and ‘command’ in ‘\definenamespace’ accomplish? > > I’m not Aditya but i hope you will also accept my explanation. Hi Wolfgang, of course you are always welcome to deliver this kind of thorough discussion! The wiki is grateful … Just two keys remain unexplained: “version” and “comment”. I guess they are not as critical but for sake of completeness and out of curiosity I wouldn’t mind having my guesses refuted or confirmed: comment - string: non-functional information that will be stored along with the namespace?? version - number: versioning information?? Functionality not yet known. Many thanks anyways, rewriting some module code will make christmas _much_ more interesting. Philipp > I will start with the first argument and the „type“ key, e.g. > > \definenamespace > [fancybreak] > [type=module] > > will produce the namespace „@@@@fancybreak“ with the short form > (the name itself has the same length but for TeX it’s only a single > tokens instead of many with the @@@@... form) \????fancybreak. > > The is currently only one argument with the name „module“ but > another one like „core“ or „base“ can appear in the future but > this will be then reserved for Hans to replace the \definesystemvariable > command from the core to produce a namespace in the form „@@xx“. > > When you define a namespace you should use three or more letters > because two letter namespaces are reserved for Hans itself, > e.g. is already used by the database module. > > > The second key you need is „name“ because it’s argument is used > when all the „\setup...“ and „\define...“ commands are created. > > > The key „style“ creates the command „\dosetattributes“ which > takes two arguments where the first is to change the style (font) > in your new created command and the second for the color. > > The setup > > \definenamespace > [fancybreak] > [type=module, > name=fancybreak, > style=yes] > > creates the command \dosetfancybreakattributes which can be used like > \dosetfancybreakattributes\c!style\c!color and will take the „style“ > and „color“ argument from the \setupfancybreak command. > > > The setup key creates the command „\setup“ where you can control > whether the commands accepts a list of environment in the two argument > form or only a single environment, e.g. „setup=yes“ let you write > > \setupfancybreak[one][..,..=..,..] > > and > > \setupfancybreak[..,..=..,..] > > while „setup=list“ let you use > > \setupfancybreak[one,two][..,..=..,..] > > and > > \setupfancybreak[..,..=..,..] > > > The key “command“ creates a bunch of macros, besides the „\define...“ > commands to create new environment and commands with your code it creates > the following macros to access the values from your setup commands: > > - \parameter > - \namedparameter > - \detokenizedparameter > > The command key has like the setup key the two values yes and list, > with „command=yes“ you can write > > \define[one][..,..=..,..] > > or (clone a setup like \definehead[mysection][section]) > > \define[two][one] > > while „command=list“ allows > > \define[one,two][..,..=..,..] > > or > > \define[two,three][one] > > > For parent it’s the best to give as argument always the same value > as you defined for the namespace, e.g. for the fancybreak module > one should write „parent=fancybreak“. > > 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