我正在尝试使用 ConTeXt 处理 JATS XML。一个问题是如何正确排版脚注,因为在 JATS XML 中,脚注引用和脚注内容在源中的位置并不相同。
\startbuffer[test]
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN"
"JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.0" article-type="other">
<front>
</front>
<body>
<p>Text.
<xref ref-type="fn" rid="fn1">1</xref>
More Text.
</p>
</body>
<back>
<fn-group>
<fn id="fn1"><p>Footnote content</p></fn>
</fn-group>
</back>
</article>
\stopbuffer
\startxmlsetups xml:test
\xmlsetsetup{#1}{*}{-}
\xmlsetsetup{#1}{article|front|body|back|p}{xml:*}
% Footnotes
\xmlsetsetup{#1}{fn-group}{xml:*}
\xmlsetsetup{#1}{fn}{xml:*}
\xmlsetsetup{#1}{xref[@ref-type='fn']}{xml:footnote}
\stopxmlsetups
\xmlregistersetup{xml:test}
\startxmlsetups xml:footnote
\xmlfilter
\footnote{\xmlfirst{test}{fn[@id="\xmlatt{#1}{rid}"]}}
\stopxmlsetups
\startxmlsetups xml:fn-group
\xmlflush{#1}
\stopxmlsetups
\startxmlsetups xml:fn
\xmlflush{#1}
\stopxmlsetups
% Root
\startxmlsetups xml:article
\xmlflush{#1}
\stopxmlsetups
% Front
\startxmlsetups xml:front
\xmlflush{#1}
\stopxmlsetups
% Body
\startxmlsetups xml:body
\xmlflush{#1}
\stopxmlsetups
% Back
\startxmlsetups xml:back
\xmlflush{#1}
\stopxmlsetups
% Paragraphs
\startxmlsetups xml:p
\xmlflush{#1}
\stopxmlsetups
\starttext
\xmlprocessbuffer{test}{test}{}
\stoptext
使用此设置,脚注会出现两次,一次在脚注中,另一次在正文中。如果我更改此设置
\xmlsetsetup{#1}{fn-group}{xml:*}
\xmlsetsetup{#1}{fn}{xml:*}
到
\xmlsetsetup{#1}{fn-group}{}
\xmlsetsetup{#1}{fn}{}
脚注内容在两个位置都消失了。
在 ConTeXt XML 手册(第 86-87 页)中,有一个使用基于 lua 的方法实现此目的的示例。我已设法将此方法适应我的设置,但我仍然想了解如何正确使用这种基于查找的方法。
答案1
您可以设置fn-group
为空但刷新fn
:
\startxmlsetups xml:test
\xmlsetsetup{#1}{*}{-}
\xmlsetsetup{#1}{article|front|body|back|p}{xml:*}
% Footnotes
\xmlsetsetup{#1}{fn-group}{}
\xmlsetsetup{#1}{fn}{xml:*}
\xmlsetsetup{#1}{xref[@ref-type='fn']}{xml:footnote}
\stopxmlsetups