Hello, i'm using XML and i find useful specifying a fraction made of text this way: <span class="fraction">text for numerator/text for denominator</span> With some lua, i can transform it into \frac{\text{text for numerator}}{\text{text for denominator}} which typesets something like this: text for numerator -------------------- text for denominator Suppose you want to add some styling to the texts, like this: <span class="fraction">text for <i>numerator</i>/text for <b>denominator</b></span> You should split the span node into two elements and the xmlflush them. This is my M(not)WE: \startbuffer[text] <p>A paragraph with a fraction made of text with styles: <span class="fraction">a <i>fraction</i> made of text/with <red>styles</red> inside</span>.</p> \stopbuffer \startluacode local sub = string.sub local sfind = string.find local xmltext = xml.text local xmlconvert = xml.convert local function numeratorDenominator( text ) local before, after = sfind( text, "[^<]/[^>]" ) local num, den if before and after then num = sub( text, 1, before ) den = sub( text, after ) end return num, den end function xml.functions.textfraction( t ) local text = xmltext( t, '' ) local num, den = numeratorDenominator( text ) if num and den then local fontstyle = tokens.getters.macro( "fontstyle" ) local xml_num = xmlconvert( num ) local xml_den = xmlconvert( den ) -- context( "$\\frac{\\text{\\" ..fontstyle .. " " .. num .. "}}{\\text{\\" ..fontstyle .. " " .. den .. "}}$" ) context( "$\\frac{\\text{\\" ..fontstyle .. " " ) context( num ) -- context.xmlprocessstring( xml_num ) context( "}}{\\text{\\" ..fontstyle .. " " ) context( den ) -- context.xmlprocessstring( xml_den ) context( "}}$" ) else context.xmlflush( t ) end end \stopluacode \startxmlsetups xml:textsetups \xmlsetsetup{#1}{*}{+} \xmlsetsetup{#1}{p|i|red}{xml:*} \xmlsetsetup{#1}{{span.fraction}}{xml:fraction} \stopxmlsetups \xmlregistersetup{xml:textsetups} \startxmlsetups xml:p \xmlflush{#1}\par \stopxmlsetups \startxmlsetups xml:i {\it \xmlflush{#1}} \stopxmlsetups \startxmlsetups xml:red {\red \xmlflush{#1}} \stopxmlsetups \startxmlsetups xml:fraction \xmlfunction{#1}{textfraction} \stopxmlsetups \starttext \xmlprocessbuffer{main}{text}{} \stoptext Massi