在我的 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
答案1
你遗漏了两件事:
\startcolumns ... \stopcolumns
是一个外宏旨在用于页面级别。如果您想要框架内的列,请使用\startsimplecolumns .. \stopsimplecolumns
。\setlayer[...]{...}
应该使用后字体设置。在您的示例中,您没有任何字体设置,因此 ConTeXt 在 处加载默认字体设置\starttext
。因此,当您调用 时,尚未设置字体,这就是您以电传打字机字体获得输出的原因。可以通过添加显式字体设置或移动到 之后来\setlayer[...]
避免这种情况。\setlayer[...]
\starttext