背景
以下屏幕截图显示了四个不均匀的列,这是所需的结果:
问题
该命令的和选项似乎beforesection
没有任何效果,导致以下结果:aftersection
setuphead
代码
使用以下方法重现问题:
\usemodule[newcolumnsets]
\definecolumnset[BookColumns][n=4]
\setupcolumnset[BookColumns:1][width=6in]
\setupcolumnset[BookColumns:2][width=4in]
\setupcolumnset[BookColumns:3][width=4in]
\setupcolumnset[BookColumns:4][width=4in]
\setuphead[chapter][
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\definepapersize[BookPaperSize][
width=24in,
height=12in,
]
\setuppapersize[BookPaperSize]
\starttext
\chapter[title={Chapter Title}]
\dorecurse{5}{\input knuth \input lorem}
\stoptext
可以通过改变主体来生成不均匀的柱子\startcolumnset
,\stopcolumnset
直接使用:
\startcolumnset[BookColumns]
\chapter[title={Chapter Title}]
\dorecurse{5}{\input knuth \input lorem}
\stopcolumnset
想法
我尝试将chapter
元素重新定义为:
\let\oldchapter\chapter
\unexpanded\def\chapter{\dosingleempty\newchapter}
\def\chapter[#1]{\startcolumnset[BookColumns]\oldchapter[#1]\stopcolumnset}
这不起作用。起作用的是一系列sed
调用:
sed -i 's/^\\chapter\(.*\)/\\stopcolumnset\n\\startcolumnset[BookColumns]\n\\chapter\1/' body.tex
sed -i '1d' body.tex
echo "\\stopcolumnset" >> body.tex
sed
当然,呼叫不是“ConTeXt 方式”。
另一个问题显示使用beforesection
和aftersection
:mixedcolumns
\setuphead[subsection][
beforesection={\startmixedcolumns[n=2,balance=no,]},
aftersection={\stopmixedcolumns},
page=no,
]
问题
如何确保\startcolumnset
和\stopcolumnset
命令将每一章括起来而不修改正文?(也就是说,仅通过更改设置来应用每章的列集。)
有关的
相关问题包括:
答案1
在使用and选项之前,必须用\start
and\stop
命令(例如\startsection
and\stopsection
或\startchapter
and )平衡各部分。例如:\stopchapter
beforesection
aftersection
\setuphead[section][
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
当使用 pandoc 的顶级划分选项时,它会产生\chapter
命令:
pandoc --top-level-division=chapter ...
通过将命令行参数更改为--section-divs
,pandoc 会生成\startsection
、\startsubsection
和\startsubsubsection
等效\stop
命令:
pandoc --section-divs ...
结合两个参数产生\startchapter
和\stopchapter
,这也使得beforesection
和aftersection
能够起作用:
pandoc --top-level-division=chapter --section-divs ...