我刚刚为一个特定的文档从 LaTeX 切换到 ConTeXt,我必须承认我对 ConTeXt 的几种多列替代方案有点迷茫。
据我了解,下面的代码应该可以完成这项工作,但是
- 我不确定它是否正确,甚至不太理想
- 我想知道是否有一种方法可以全局定义(即整个文档)双列设置,然后分解/宏化某些部分,以便摘要和图表自动显示在一列上,而无需在每次出现时添加额外的startcolumns/stopcolumns 命令。
\define[1]\myabstract{\startnarrower[2*middle] #1 \stopnarrower}
\starttext
\chapter{The first chapter}
\myabstract{Abstract of the first chapter}
\startcolumns[n=2]
This is some random text that fills the first chapter.
Nothing interesting here.
\stopcolumns
\chapter{The second chapter}
\myabstract{Abstract of the second chapter}
\startcolumns[n=2]
This is some random text that fills the second chapter.
\stopcolumns
\placefigure.....
\startcolumns[n=2]
Nothing interesting here.
\stopcolumns
\stoptext
答案1
来自维基百科:
在两列或多列中排版文本有不同的可能性:
- columns :适用于多列文本的简单情况
- 段落:如果您需要表格状结构(翻译、问卷等)
- 列集:灵活处理不同列或其他复杂任务
- 页面网格:新的列集实现(MkIV)流:设置并排同步的不同文本(例如双语版)
原则上,列集应该是这里的选择,因为它们支持跨越多列的图形,但是,它们的 MKIV 支持很差,我个人不建议使用它们。
您的示例看起来不错,但并未完全遵循“ConTeXt 方式”。您不应为摘要定义自己的宏,而应定义自己的实例narrower
。n=2
可以使用全局设置来分解列的选项。始终使用\start...\stop
命令的变体。
\definenarrower[abstract][2*middle]
\setupcolumns[n=2]
\starttext
\startchapter[title={The first chapter}]
\startabstract
\input knuth
\stopabstract
\startcolumns
\input knuth
\stopcolumns
\stopchapter
\startchapter[title={The second chapter}]
\startabstract
\input knuth
\stopabstract
\startcolumns
\input knuth
\stopcolumns
\startplacefigure[title=Image]
\externalfigure[dummy]
\stopplacefigure
\startcolumns
\input knuth
\stopcolumns
\stopchapter
\stoptext