Rather than doing this dirtily and on the fly (as implied by the quoted code, I'd like to use synonyms in a more cleaner fashion: separate calling and definition. I have come up with the following code, but have two problems: 1) '<abb key="key" opt="full"/>' just gives me '[key]' after defining '<abbreviation key="key"><short>shortkey</short><full>slightly longer key</full></abbreviation>'. 2) The '\XMLop{key}' should really be the result of that preceeded by a '\' to make the short version callable as a command. How to do that? Thanks for any help, Joh % setup 'synonymes' list called 'abbreviations' \definesynonyms[abbreviation][abbreviations][\infull] % give all out in the list \setupsynonyms[abbreviation][criterium=all] % <abbreviations/> calls the completelist as a 'chapter' \defineXMLargument [abbreviations] {\completelistofabbreviations} % abbreviations are defined as follows \defineXMLenvironment [abbreviation] [key=] { \defineXMLsave[short] \defineXMLsave[full] } {\expanded{\abbreviation[\XMLop{key}]{\XMLflush{short}}{\XMLflush{full}}}} % abbreviations are recalled like this (short version is the default) \defineXMLargument [abb] [key=,opt=short] { \doifelse{\XMLop{opt}}{full} {\expanded{\infull{\XMLop{key}}}} {\XMLop{key}} } Johannes Graumann wrote:
\definesynonyms[abbreviation][abbreviations][\infull]
\defineXMLargument [abbrev] [short=,full=] {\expanded{\abbreviation{\XMLop{short}}{\XMLop{full}}}}
\defineXMLargument [abbreviations] {\completelistofabbreviations}
\starttext \startXMLdata <abbreviations/> Blabla short<abbrev short="short" full="slightly longer short"/>. \stopXMLdata \stoptext