Hello again, I have a matching rule for cite commands that look as follows: <cite id="hunt:86" opt="authoryear"/> The rule is this (kudoos to Taco): \defineXMLargument [cite] {\expanded{\cite[\XMLpar{cite}{opt}{}][\XMLpar{cite}{id}{}]}} Sometimes I would like to have the '(Hunt et. al., 1986)' produced by above combination to look like '(see e.g. Hunt et. al., 1986)'. Taco pointed out in response to a question to list that I could do that by handing a 'left={(see e.g. }' to the cite command, however I fail to be able to do that. A XML node like this <cite id="hunt:86" opt="authoryear,left={(see e.g.}"/> results on compilation with above rule in the following error: ! Missing \endcsname inserted. <to be read again> \leftargument \XML:ent:tex-leftbrace ...ace \else \leftargument \fi <argument> ...r,left=\getXMLentity {tex-leftbrace} see e.g.\getXMLentity {tex... \expanded ...\long \xdef \@@expanded {\noexpand #1 }\@@expanded \docite ...on [\csname @@pv#2compress\endcsname ]} [ \v!yes =>\bibcitecompre... \XML:ele:cite/ ...}{opt}{}][\XMLpar {cite}{id}{}]} {} l.112 ...nt:86" opt="authoryear,left={see e.g.}"/> ) changed the field dramat... Can anybody help me out with this? Thanks, Joh
Johannes Graumann wrote:
Hello again,
I have a matching rule for cite commands that look as follows: <cite id="hunt:86" opt="authoryear"/>
The rule is this (kudoos to Taco): \defineXMLargument [cite] {\expanded{\cite[\XMLpar{cite}{opt}{}][\XMLpar{cite}{id}{}]}}
- reset opt, otherwise the previous one will be used when no opt is given - \XMLop (own parameter) saves a few bytes and can be used here \defineXMLargument [cite] [opt=] {\expanded{\cite[\XMLop{opt}][\XMLop{id}]}}
Sometimes I would like to have the '(Hunt et. al., 1986)' produced by above combination to look like '(see e.g. Hunt et. al., 1986)'. Taco pointed out in response to a question to list that I could do that by handing a 'left={(see e.g. }' to the cite command, however I fail to be able to do that. A XML node like this <cite id="hunt:86" opt="authoryear,left={(see e.g.}"/> results on compilation with above rule in the following error:
hm, the problem is that the { } are no longer tex's braces (grouping) \starttext \defineXMLcommand [whatever] [test=unknown] {\XMLop{test}} \startXMLdata <whatever test="{\bf test}"/> \stopXMLdata \def\defXMLtex#1#2% the appended space will go away when {\begingroup % \scantokens is fixed \disableXML \everyeof{\noexpand}% br's hack \edef\ascii{#2}% \edef\ascii{\scantokens\expandafter{\ascii}}% space appended \expandafter\endgroup\expandafter\def\expandafter#1\expandafter{\ascii}} \defineXMLcommand [whatever] [test=unknown] {\defXMLtex\SomethingTex{\XMLop{test}}% \SomethingTex} \startXMLdata <whatever test="{\bf test}"/> \stopXMLdata \stoptext so, then you can for instance feed \SomethingTex into the scite macros however, best is not to mix tex this way with xml Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
participants (2)
-
Hans Hagen
-
Johannes Graumann