我正在使用 ConTeXt Mk IV,我想让两页文档中的文本像这样排列:
+--------+--------+
+ + +
+ xxx + xx +
+ xxxx + xxx +
+ xx + +
+ + xxx +
+ xxx + xxxx +
+ xx + xxxx +
+ + +
+--------+--------+
我试过
\setuppagenumbering[alternative=twosided]
\setupalign[flushouter]
\starttext
page 1 (should align flush right)
\page[yes]
page 2 (should align flush left)
\stoptext
但那不起作用。[flush]inner/outer/left/right 都不起作用。尽管在 setuphead[subject] 中,
align=flushouter
做做预期和渴望的事情。
我是不是漏掉了一个神奇的词?
干杯,
西特斯
答案1
这是一个可以运行的最小示例。请注意,这\setuppagenumbering[alternative=doublesided]
是必需的——这是告诉 ConTeXt 我们想要双面排版的规范方法。(\setuplayout[location=doublesided]
如果纸张大于页面,则与页面的定位有关。)
\setuppagenumbering[alternative=doublesided]
\starttext
odd page \page[yes]
\startalignment[outer]
even page \page[yes]
odd page \page[yes]
\stopalignment
\stoptext
下面的修补说明不再需要;这个问题已在最近的 MkIV 版本中修复。(此注释添加于 2012-06-12。)
由于代码目前(日期为 2012-02-20),
\startalignment[outer]
必须在偶数页(即左侧)调用。如果在第 1 页或第 3 页调用,则不起作用。放入\setupalign[outer]
序言中也不起作用。这可能会在即将发布的测试版中得到修补,或者没有耐心的人可以tex/texmf-context/tex/context/base/spac-ali.mkiv
按如下方式修补:\def\spac_align_flush_horizontal {\ifcase\c_spac_align_state_horizontal % 0 \spac_align_set_horizontal_none \or % 1 center % ----<some lines left out>---- \or % 5 outer \ifdoublesided \signalouterrealign \fi %%%%%% Faulty line: %\rightorleftpageaction\c_spac_align_state_horizontal_left\spac_align_set_horizontal_right %%%%%% Replace with: \rightorleftpageaction\spac_align_set_horizontal_left\spac_align_set_horizontal_right \or % 6 oneliner \ifcase\c_spac_align_state_broad \spac_align_set_horizontal_right \else \spac_align_set_horizontal_very_right \fi \parfillskip\zeropoint \or % 7 centered last line \spac_align_set_horizontal_centered_last_line \fi}
修补此核心文件后,运行context --make en
(在任意目录中)以重新制作格式。现在两者\setupalign[outer]
都\startalign[outer]
可以正常工作。
答案2
根据 Context wiki,\setupalign
识别以下关键词:
宽度 左对齐 右对齐 中间 内 外 宽 宽高 底线 重置 悬挂 不悬挂 带连字符 不带连字符
所以你尝试做的事情似乎不受支持。不过,通过扩展 的行为,可能很容易改变这种情况\setupalign
:按照 Aditya 的建议联系 Context 邮件列表是一种找出答案的方法。