ConTeXt XML:如何排版空白行、前导空格

ConTeXt XML:如何排版空白行、前导空格

我有以下示例,其中一个<Line>是空白行,另一个有前导空格。ConTeXt 忽略了空白行并修剪了前导空格。我该如何关闭此功能?

\startbuffer[demo]
<?xml version="1.0" encoding="UTF-8"?>
<Reading>
<Header>Foo</Header>
<Line>Line #1</Line>
<Line>Line #2</Line>
<Line></Line>
<Line>  Line #3</Line>
</Reading>
\stopbuffer

\startxmlsetups xml:initialize
  \xmlsetsetup{#1}{*}{-}
  \xmlsetsetup{#1}{Book|Reading|Header|Line}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:initialize}

\startxmlsetups xml:Reading
  \startdocument
    \xmlflush{#1}
  \stopdocument
\stopxmlsetups

\startxmlsetups xml:Line
    \xmlflush{#1}\par
\stopxmlsetups

\xmlprocessbuffer{main}{demo}{}

规范化线

答案1

使用\xmlflushspacewise遵守节点内的空格和换行符,并\dontleavehmode在之前使用,以便连续\par不会折叠。

\startbuffer[demo]
<?xml version="1.0" encoding="UTF-8"?>
<Reading>
<Header>Foo</Header>
<Line>Line #1</Line>
<Line>Line #2</Line>
<Line></Line>
<Line>  Line #3</Line>
</Reading>
\stopbuffer

\startxmlsetups xml:initialize
  \xmlsetsetup{#1}{*}{-}
  \xmlsetsetup{#1}{Book|Reading|Header|Line}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:initialize}

\startxmlsetups xml:Reading
  \startdocument
    \xmlflush{#1}
  \stopdocument
\stopxmlsetups

\startxmlsetups xml:Line
    \dontleavehmode\xmlflushspacewise{#1}\par
\stopxmlsetups

\xmlprocessbuffer{main}{demo}{}

在此处输入图片描述

相关内容