ConTeXt:两列布局中的行号与标记冲突

ConTeXt:两列布局中的行号与标记冲突

在 ConTeXt 中,两列布局中的行号显然与标记机制相冲突。

据我所知(关于这个主题的文档相当稀少),ConTeXt 的“标记”机制应该按如下方式工作:

使用 定义一系列标记后\definemarking[<series>],您可以使用 标记文本中的位置。这些标记中的每一个都是从标记本身到下一个标记的文本部分的“当前”标记。现在,在页面的标题中,您可以通过或\marking[<series>][<label>]检索标记,如下所示:\getmarking\fetchmark

  • \fetchmark[<series>][first]返回页面上定义的第一个标记。
  • \fetchmark[<series>][last]返回页面上定义的最后一个标记之前的最后一个标记(即,页面上的最后一个标记)。
  • \fetchmark[<series>][top]返回当前位于页面文本最开始处的标记。
  • \fetchmark[<series>][bottom]返回当前位于页面文本最末尾的标记。

到目前为止,这种方法效果很好,但在两列布局中使用行号时并非总是如此。

请考虑以下示例:

\setupcolumns[n=2]

\setuplinenumbering
    [
    step=5,
    method=page,
    align=flushright,
    ]

\definemarking[Test]

\setupheadertexts[{\fetchmark[Test][top] -- \fetchmark[Test][bottom]}]

\startbuffer
\dorecurse{12}{words }
\stopbuffer

\starttext
\startcolumns
\startlinenumbering
\marking[Test]{ONE}ONE \dorecurse{12}{\getbuffer}\par
\marking[Test]{TWO}TWO \dorecurse{29}{\getbuffer}\par
\marking[Test]{THREE}THREE \dorecurse{12}{\getbuffer}\par
\stoplinenumbering
\stopcolumns
\stoptext

此处标记“THREE”被放置在第二页的第三行。因此,第一页末尾的当前标记(应该由 返回)\fetchmark[Test][bottom]是标记“TWO”。但结果却是,第一页的页眉显示为“ONE -- THREE”。

如果没有行号,第一页的页眉将显示“ONE -- TWO”,这是意料之中的。

那么如何解决这个问题?

相关内容