在 ConTeXt 中,使新的浮动内容与填充不超出文本宽度

在 ConTeXt 中,使新的浮动内容与填充不超出文本宽度

我想定义一个新的浮点数,将我的文档示例封闭在带有灰色背景的框架中。这是我到目前为止的序言代码:

\setupcolumns[n=2]

\definefloat[example][examples]
\definemeasure[atdmexampleoffset][10pt]
\definemeasure[atdmexamplewidth][\dimexpr\textwidth-2\measure{atdmexampleoffset}]
\setupfloat[example][
    location=middle,
    frame=on,
    width=\measure{atdmexamplewidth}, % <------
    offset=\measure{atdmexampleoffset},
    background=color,
    backgroundcolor=atdm-lightgrey%
]

我使用浮点数作为此代码:

\starttext
\startcolumns

\placeexample[here][ex:foo]{Foo}{%
    For instance: foo. Or bar. Or both. etc.
}

\stopcolumns
\stoptext

我遇到的问题是示例文本恰好跨越 \textwidth,因此导致框架突出于2*offset标准文本主体的右侧(参见红色和绿色规则之间的间隙)。

在此处输入图片描述

不幸的是,宽度参数似乎没有效果。

请注意,单列文本也会出现同样的问题,只有浮动保持居中并在offset左侧和右侧突出。

我怎样才能使浮动占据与其下方和上方的文本相同的宽度?

答案1

您应该将文本放在framedtext可以偏移边距的环境中。

\starttext

\startcolumns

\input knuth

\startplacefloat[title=Zapf]
    \startframedtext[width=max,background=color,backgroundcolor=gray]
    \input zapf
    \stopframedtext
\stopplacefloat

\input tufte

\startplacefloat[title=Ward]
    \startframedtext[width=max,background=color,backgroundcolor=gray]
    \input ward
    \stopframedtext
\stopplacefloat

\input weisman

\stopcolumns

\stoptext

在此处输入图片描述

相关内容