[NTG-context] XML and math

Aditya Mahajan adityam at umich.edu
Thu Jan 10 23:09:17 CET 2019


On Fri, 11 Jan 2019, Henri Menke wrote:

> On 11/01/19 10:26 AM, Aditya Mahajan wrote:
>> Hi,
>> 
>> I have an XML file (which is generated via a program that I have no
>> control over), which contains elements as follows:
>> 
>>          <p>
>>             <equation text="$$y_1(t) = 1, t \geq 0$$">
>>                <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation"
>> height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/>
>>             </equation>
>>          </p>
>> 
>> I want to typeset the `text` attribute of equation (and ignore the <img>
>> tag). So, I tried:
>> 
>> \startxmlsetups matlab
>>   % Bunch of missing definitions
>>   \xmlsetsetup{#1}{equation}{matlab:*}
>> \stopxmlsetups
>> 
>> \startxmlsetups matlab:equation
>>   \xmlatt{#1}{text}
>> \stopxmlsetups
>> 
>> This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the
>> attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for
>> content and not attributes).
>
> You could write your own attribute fetcher in Lua.  Probably there is a
> more elegant method.
>
> \startbuffer[test]
>         <p>
>            <equation text="$$y_1(t) = 1, t \geq 0$$">
>               <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation"
> height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/>
>            </equation>
>         </p>
> \stopbuffer
>
> \startxmlsetups matlab
>  % Bunch of missing definitions
>  \xmlsetsetup{#1}{p}{matlab:*}
>  \xmlsetsetup{#1}{equation}{matlab:*}
> \stopxmlsetups
>
> \startxmlsetups matlab:p
>  \xmlflush{#1}
> \stopxmlsetups
>
> \startxmlsetups matlab:equation
>  \xmlfunction{#1}{equation}
> \stopxmlsetups
> \startluacode
> local a = "text"
> local ctxcatcodes = catcodes.numbers.ctxcatcodes
>
> function xml.functions.equation(id)
>    local e = lxml.getid(id)
>    if e then
>        local at = e.at
>        if at then
>            local att = at[a]
>            if att ~= "" then
>                context.sprint(ctxcatcodes,att)
>            end
>        end
>    end
> end
> \stopluacode
>
> \xmlregistersetup{matlab}
>
> \starttext
> \xmlprocessbuffer{test}{test}{}
> \stoptext

Thanks!

Aditya


More information about the ntg-context mailing list