背景
我想在两列之间居中添加一条粗线。
示例代码
说明该问题的最小工作示例:
\setupcolors[state=start]
\startuseMPgraphic{StyleVerticalRule}
thickness := 6.50pt;
if CurrentColumn < NOfColumns :
setbounds currentpicture to OverlayBox
shifted( -3*thickness, 0 );
draw rightboundary OverlayBox
withpen pensquare scaled thickness
withcolor \MPcolor{red};
fi
\stopuseMPgraphic
\defineoverlay[StyleVerticalRule][
\useMPgraphic{StyleVerticalRule},
]
\definecolumnset[StyleColumns][
n=2,
background=StyleVerticalRule,
]
% Horizontal line below the section header.
\define[2]\StyleSection{%
\framed[
frame=off,
bottomframe=on,
framecolor=pink,
rulethickness=1.0pt,
width=local,
]{\vbox{#2}}}
\setuphead[section][
command=\StyleSection,
after={\startcolumnset[StyleColumns]},
aftersection={\stopcolumnset},
]
\starttext
\startbodymatter
\startchapter[title={Chapter}, reference=sec:my-chapter,]
\startsection[title={Section}, reference=sec:my-section,]
\startsubsection[title={Equipment},reference=sec:my-equipment,]
\input knuth
\input knuth
\stopsubsection
\stopsection
\stopchapter
\stopbodymatter
\stoptext
问题
垂直规则高度似乎是\textheight
,而不是列的高度。上面的代码产生:
垂直规则超出了子部分标题的范围,因为我认为它引用了OverlayBox
。我想使用列高而不是文本高度来生成:
问题
关于多列布局:
- 如何限制垂直规则的高度以使其符合列高(即,如何确定列高)?
- 如何为该部分的列边距添加足够的空间,以便垂直规则不会与任何文本重叠?
- 需要进行哪些计算才能确保垂直规则位于列之间(即,
-3*thickness
似乎......不正确)?
OverlayBox
尽管我找到了一些例子,但我还是找不到 的任何定义。
有关的
有点相关的信息:
答案1
使用列集时,整个页面的设计都必须使用列集完成。因此,如果您希望章节或节标题跨越整个页面,则必须定义列跨度。
对于简单的两列文档,您可以使用\startcolumns ... \stopcolumns
或其 MkIV 替代品\startmixedcolumns ... \stopmixedcolumns
。以下是示例:
\setupcolors[state=start]
\startuseMPgraphic{StyleVerticalRule}
draw OverlayBox;
\stopuseMPgraphic
\defineoverlay[StyleVerticalRule][\useMPgraphic{StyleVerticalRule}]
\definemixedcolumns
[sectioncolumns]
[
n=2,
separator=rule,
rulecolor=red,
rulethickness=6.5pt,
balance=yes,
]
\setupalign[verytolerant,stretch,hanging]
% Horizontal line below the section header.
\defineframed[sectionframed]
[
frame=off,
bottomframe=on,
framecolor=pink,
rulethickness=1.0pt,
width=local,
align=normal, % to get a vbox
]
\define[2]\StyleSection{\sectionframed{#2}}
\setuphead
[section]
[
command=\StyleSection,
after={\startsectioncolumns},
aftersection={\stopsectioncolumns},
]
\starttext
\startchapter[title={Chapter}, reference=sec:my-chapter,]
\startsection[title={Section}, reference=sec:my-section,]
\startsubsection[title={Equipment},reference=sec:my-equipment,]
\input knuth
\input knuth
\stopsubsection
\stopsection
\stopchapter
\stoptext
这使