在 ConTeXt 中,如何让正文与外部对齐?

在 ConTeXt 中,如何让正文与外部对齐?

我正在使用 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 邮件列表是一种找出答案的方法。

相关内容