在 ConTeXt 中,为什么我的浮动元素在列之间“重叠”?

在 ConTeXt 中,为什么我的浮动元素在列之间“重叠”?

这是我制作的一份文档的摘录。在右列,红色背景停止在左列表格的高度,尽管它不应该停止。

显示错误的页面

如果我删除左边的表格,那么右边的块就会正确绘制(红色背景和所有文本周围的深红色边框)。

以下是导致此问题的一个最小工作示例:

%---------------------------------------------------------------------
% 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。这样,示例中的背景间隙就会消失。

在此处输入图片描述

相关内容