在 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”,这是意料之中的。
那么如何解决这个问题?