我正在尝试使用 ConTeXt 以从右到左的语言排版双列文本。因为我希望此文本中的脚注设置为底部不齐,所以我使用页面列而不是标准列(请参阅ConTeXt 中的脚注底部不齐)。我还想使用标记来跟踪每页上的第一个和最后一个文本分割标记。将所有这些成分组合起来似乎会在 ConTeXt 中产生一个问题:当页面列按从右到左的顺序设置时,获取的顶部和底部标记始终是左列的顶部和底部标记,而真正的顶部标记应该是右列的顶部标记。我已经使用实际从右到左语言的文本观察到了这种行为,但以下带有英语示例文本的最小(非)工作示例演示了相同的行为:
%Create a new markset to use:
\definemarking[TestMark]
%Setup header to reflect top and bottom marks:
\setupheadertexts[top: {\fetchmark[TestMark][top]}][bottom: {\fetchmark[TestMark][bottom]}][top: {\fetchmark[TestMark][top]}][bottom: {\fetchmark[TestMark][bottom]}] %even left, even right, odd left, odd right
%Setup the columns layout:
\definepagecolumns [example] [
n=2, %number of columns
direction=reverse, %does not work if ending comma is removed!
]
\starttext
\startpagecolumns[example]
\marking[TestMark]{1}(1) \input knuth\par
\marking[TestMark]{2}(2) \input knuth\par
\marking[TestMark]{3}(3) \input knuth\par
\marking[TestMark]{4}(4) \input knuth\par
\marking[TestMark]{5}(5) \input knuth\par
\marking[TestMark]{6}(6) \input knuth\par
\marking[TestMark]{7}(7) \input knuth\par
\marking[TestMark]{8}(8) \input knuth\par
\stoppagecolumns
\stoptext
我使用与 TeXLive 2020 一起发布的 ConTeXt 版本 2020.03.10 对此进行了排版。正如我在 MWE 中的评论指出的那样,键值解析中似乎也存在一个错误,\definepagecolumns
导致它不会解析direction=reverse
输入,除非它后面跟着一个逗号。
有什么方法可以改进语法以避免此问题,或者这只是一个需要修复的错误?我尝试获取其他标记(例如,第一个和最后一个),但 ConTeXt 似乎只能找到左列的标记。
答案1
好的,在 ntg-context 邮件列表上搜索了一下,我找到了答案。对于多列布局,\getmarking
应使用包装函数,并将列号指定为第二个参数。
就我而言,将MWE 中的\fetchmark[TestMark][top]
和更改\fetchmark[TestMark][bottom]
为\getmarking[TestMark][1][top]
和使一切正常运行。\getmarking[TestMark][2][bottom]