ConTeXt:如何在一个图层中放置一个包含两列文本的框?

ConTeXt:如何在一个图层中放置一个包含两列文本的框?

在我的 MWE 中,如下所示,我希望有一个从左边距开始的框架,包含 2 列文本。相反,它有一列宽度合适的文本,但文本并没有像我希望的那样流入第二列。

我的问题是:

1 - 我将文本作为框架放入图层中,因为我可以指定框架的高度和宽度。我实际上不需要在文本周围绘制框架。框架是将文本框放入图层的最佳方式吗,还是还有其他方法?

2 - 如何使框架内的文本分为两列?

3 - 为什么文本从框架顶部向下移动?如果我删除MWE 中的\startcolumns[n=2]and ,\stopcolumns文本不会向下移动。

\showframe %\showgrid
\setuplayout[backspace=80mm, width=100mm, topspace=50mm, header=0mm, footer=0mm, height=200mm, margindistance=10mm, leftmargin=40mm]

\definelayer[new]   
[x=0mm, y=0mm,  width=160mm, height=200mm]

\setlayer[new]  
[hoffset=30mm, voffset=150mm] 
{\framed[frame=on, location=middle,align=flushleft,width=120mm, height=30mm]{\startcolumns[n=2]So, l recently bought a small clock. I didn’t need a clock, but it was there, and l could, so l did. It’s just as well l didn’t need it, because although it has a face showing hours, and another one for minutes, both are quite hard to read.\stopcolumns} } 

\starttext  
\setupbackgrounds[page][background=new]
\dorecurse{1}{\input{knuth} }
\stoptext

MWEF 失败

答案1

你遗漏了两件事:

  1. \startcolumns ... \stopcolumns是一个宏旨在用于页面级别。如果您想要框架内的列,请使用\startsimplecolumns .. \stopsimplecolumns

  2. \setlayer[...]{...}应该使用字体设置。在您的示例中,您没有任何字体设置,因此 ConTeXt 在 处加载默认字体设置\starttext。因此,当您调用 时,尚未设置字体,这就是您以电传打字机字体获得输出的原因。可以通过添加显式字体设置或移动到 之后来\setlayer[...]避免这种情况。\setlayer[...]\starttext

相关内容