![](https://secure.gravatar.com/avatar/3f064216b5088b4646c82e1fc2d58293.jpg?s=120&d=mm&r=g)
Hans Hagen wrote:
Vit Zyka wrote:
\startXMLdata <float> <figure file="cow.pdf" context="width=.5&ctx-var-textwidth;" /> <figure file="hacker.jpg" context="width=3cm" /> <caption>Cow and hacker.</caption> </float> \stopXMLdata
food for thought ... (and the wiki)
That is a clever solution! This two pass tag processing. I have not been thinking this way yet. Thank you, Hans. (Wiki: http://contextgarden.net/Two_pass_tag_processing_example) Unfortunately I have next two problems: 1) How to process <pre> HTML tag. I have tried many solution derived from ----- \starttext \defineXMLenvironment[pre] {\starttyping} {\stoptyping} \startXMLdata <pre> Some code line. And another one. </pre> \stopXMLdata \stoptext ----- but without success. 2) It seems to me there is some catcode clash inside XML environment: ----- \defineXMLentity[hyphen]{|_|} \starttext dojde|_|li \startXMLdata dojde‐li \stopXMLdata \stoptext ------ Vit Zyka
\starttext
\useMPlibrary[dum]
\defineXMLentity[ctx-var-textwidth] {\textwidth}
\defineXMLenvironmentsave [float] {\bgroup \defineXMLsave[caption]% \defineXMLignore[figure]} {\XMLflush{float}% \defineXMLignore [caption] \defineXMLcommand [figure] [file=dummy,context=] {\expanded{\externalfigure [\XMLflush{dir-fig}\XMLop{file}][\XMLop{context}]}% \kern1em \ignorespaces}% \placefigure {\XMLflush{caption}} {\hbox{\ignorespaces\XMLflush{float}\removeunwantedspaces}}% \egroup}
\startXMLdata <float> <figure file="cow.pdf" context="width=.5&ctx-var-textwidth;" /> <figure file="hacker.jpg" context="width=3cm" /> <caption>Cow and hacker.</caption> </float> \stopXMLdata
\stoptext