这是我制作的一份文档的摘录。在右列,红色背景停止在左列表格的高度,尽管它不应该停止。
如果我删除左边的表格,那么右边的块就会正确绘制(红色背景和所有文本周围的深红色边框)。
以下是导致此问题的一个最小工作示例:
%---------------------------------------------------------------------
% Document main configuration
\setupcolumns[n=2,balance=no] % document columns nb, fill 1st col first
% Exemples float
\definetextbackground[examplebg][%
location=paragraph,
background=color,
backgroundcolor=red,
]
\define[2]\atdmexample{% % define a macro for using examples background
\startexamplebg
{\tfa\em #1} % example title as it appears inside the ex frame
\blank[big]
#2% % - exemple content
\stopexamplebg
}
\starttext
%---------------------------------------------------------------------
\startcolumns
\dorecurse{16}{This is a dummy text in order to occupy some space. }
\placetable[here][table:my_table]{My Table}
{\bTABLE
\bTR \bTD XXXXXX \eTD \bTD YYYYYY \eTD \eTR
\eTABLE}
\dorecurse{11}{This is a dummy text in order to occupy some space. }
\atdmexample{My Example}{%
\dorecurse{31}{This is a dummy text in order to occupy some space. }
}
\stopcolumns
\stoptext
知道哪里出了问题吗?
答案1
在标准设置中,ConTeXt 不会将文本背景置于浮动元素后面。所需空间的计算考虑了垂直位置和边距设置(对于侧边浮动元素,则考虑浮动内容的宽度),但不会像您的情况那样考虑多列。
\useMPlibrary[dum]
\definetextbackground
[example]
[location=paragraph,
background=color,
backgroundcolor=red]
\setuppapersize[A5]
%\setupfloats[freeregion=no]
\starttext
\starttextbackground[example]
\input linden
\placefigure
{Dummy figure}
{\externalfigure[dummy]}
\input weisman
\stoptextbackground
\stoptext
您可以通过将文本背景置于浮动元素后面freeregion=no
的设置来禁用此功能\setupfloat
。这样,示例中的背景间隙就会消失。