[NTG-context] dealing with footnotes and ol in XML

Pablo Rodriguez oinos at gmx.es
Sun Jan 11 22:01:10 CET 2015


On 01/10/2015 02:01 PM, Hans Hagen wrote:
> On 1/9/2015 1:24 PM, Pablo Rodriguez wrote:
>> [...]
>> Footnotes that end with \par have wrong space with next footnote.
>>
>> I don’t know whether this is intended. How could I avoid that in XML?
> 
> well, more unexpected .. messing with the depth is always tricky

Many thanks for your code, Hans.

I’m afraid I cannot get it working:

\setupbodyfont[40pt]
\startbuffer[demo]
<doc>
     <p>text<a href="#fn1" class="footnoteRef"
id="fnref1"><sup>1</sup></a> with<a href="#fn2" class="footnoteRef"
id="fnref2"><sup>2</sup></a> footnotes<a href="#fn3" class="footnoteRef"
id="fnref3"><sup>3</sup></a></p>
     <div class="footnotes">
         <hr/>
         <ol>
             <li id="fn1"><p>footnote one</p><p>In two paragraphs<a
href="#fnref1">↩</a></p></li>
             <li id="fn2"><p>footnote two</p>In two paragraphs<a
href="#fnref2">↩</a></li>
             <li id="fn3"><p>footnote three</p><p>In two paragraphs<a
href="#fnref3">↩</a></p></li>
         </ol>
     </div>
</doc>
\stopbuffer

\starttext

\usemodule[html]

\xmlregistersetup{xml:html:basics}
\xmlregistersetup{xml:html:tables}

\startxmlsetups xml:initialize
     \xmlsetsetup{#1}{a[@class='footnoteRef']}{xml:footnote:ref}
     \xmlsetsetup{#1}{div[@class='footnotes']}{}
\stopxmlsetups

\xmlregistersetup{xml:initialize}

\startxmlsetups xml:doc
      \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:footnote:set
     \startfootnote
         \xmlflush{#1}
     \stopfootnote
\stopxmlsetups

\startluacode
     local gsub = string.gsub
     function xml.expressions.idstring(str)
         return type(str) == "string" and gsub(str,"^#","") or ""
     end
\stopluacode

\startxmlsetups xml:footnote:ref
\xmlfilter{main}{div[@class='footnotes']/ol/li[@id=idstring('\xmlatt{#1}{href}')]/command(xml:footnote:set)}
\stopxmlsetups

\xmlprocessbuffer{main}{demo}{}

\unexpanded\def\handlenoteitself#tag#id%
   {\edef\currentnotenumber{#id}%
    \edef\currentnote{#tag}%
    \strc_constructions_initialize{#tag}%
    \strc_notes_synchronize


\edef\currentconstructionlistentry{\ctxcommand{notelistindex("\currentnote",#id)}}%

    \reinstateconstructionnumberentry\currentconstructionlistentry
    \dontcomplain
    \strc_notes_interaction_check_display
    \strc_notes_set_reference_attribute_text
    \strc_constructions_stored_start
    \begstrut
    \strc_references_flush_destination_nodes
    \strc_notes_set_destination_attribute_text
    \strc_notes_inject_text
    \ifvmode\obeydepth\else\endstrut\fi % \obeydepth new 2015-01-10
    \strc_constructions_stored_stop}

\stoptext

Sorry, but this is all Greek to me. What am I doing wrong here?

Many thanks for your help,


Pablo
-- 
http://www.ousia.tk


More information about the ntg-context mailing list