我试图按照如下方式装饰我的论文中的浮点数:
- 每个浮标应有一个自定义颜色的顶部/底部框架,
- 每个浮动的标题和内容应该具有相同的背景颜色。
基本上,我希望它看起来像这样:
到目前为止,我只能通过将浮点数嵌入框架文本来实现这一点,如下所示:
\startframedtext[frame=off,topframe=on,bottomframe=on,framecolor=darkgray,background=color,backgroundcolor=lightgray]
\placefigure[here][figure:figure label]
{figure caption}
{figure content}
\stopframedtext
只要浮动元素位于页面中间某处,这种方法就有效。但是,一旦浮动元素成为页面上的第一个元素,标题和内容就会移出框架文本,看起来有点像这样:
我猜想这与 ConTeXt 放置浮点数的特殊方式有关。
现在,我想知道是否有办法解决这个问题。一种方法可能是根本不使用浮点数,而是设置带有标签的自定义枚举环境。有什么想法我还可以尝试吗?\setupfloats
并且\setupcaptions
确实有before=
,after=
和inbetween=
选项,但我无法让它们为我创建所需的装饰。
答案1
以下内容在 MkII 中有效(使用 pdftex 引擎),但在 MkIV 中无效,因为\placefloatcaption
尚未在 MkIV 中实现。
\setupexternalfigures[location={local,global,default}]
\setupcolors[state=start]
\setupfloats[frame=off,background=color, backgroundcolor=gray, backgroundoffset=3mm]
\starttext
\section{A figure with a background}
\placefigure
{none}
{\placelegend
{\externalfigure[cow]}
{\placefloatcaption[figure]{A dutch cow}}}
\stoptext
对于 MkIV,您可以定义自己的浮点处理程序来绘制背景。例如:
\setupexternalfigures[location={local,global,default}]
\installfloatboxbuilder {bottombackground} \dofloatboxbackgroundbuilder
\unprotected\def\dofloatboxbackgroundbuilder
{\expanded{\doifinset{\v!overlay}{\floatcaptionparameter\c!location}}\bothangfloat
{\tempfloatwidth\wd\float_content_box
\framed
[
\c!align=\v!normal,
\c!frame=\floatcaptionparameter\c!frame,
\c!framecolor=\floatcaptionparameter\c!framecolor,
\c!background=\floatcaptionparameter\c!background,
\c!backgroundcolor=\floatcaptionparameter\c!backgroundcolor,
\c!backgroundoffset=\floatcaptionparameter\c!backgroundoffset,
]%
{\ifparfloat
\hbox{\hbox {\box\float_content_box}}%
\dofloatboxbetweenstack
\hbox{\locate_side_float {\box\float_caption_box}}%
\else
\setfloathsize
\hbox{\float_align_content{\box\float_content_box}}%
\dofloatboxbetweenstack
\hbox{\locate_text_float {\box\float_caption_box}}%
\fi}}}
\setupcaption[location={bottombackground},background=color, backgroundcolor=gray, frame=off]
\starttext
\section{A figure with a background}
\startplacefigure[title={A dutch cow}]
\externalfigure[cow]
\stopplacefigure
\stoptext
答案2
您将图形放在框架中,但您应该将框架放在图形中。当您的图形放置在“此处”时,它最终会在框架内,但顶部或底部放置会将其移出框架。这会将标题放在框架之外:
\placefigure[top][figure:figure label]
{figure caption}
{
\startframedtext[frame=off,topframe=on,bottomframe=on,framecolor=darkgray,background=color,backgroundcolor=lightgray]
figure content
\stopframedtext
}