ConTeXt:placefigure 的行为非常奇怪

ConTeXt:placefigure 的行为非常奇怪

在尝试使用 ConTeXt 排版文档时,我遇到了您可以在以下 MWE 上看到的问题。

\setuppapersize[A5][A5]
\useexternalfigure[ctanlion][http://www.ctan.org/lion/ctan_lion_350x350.png][width=4cm]
\starttext
%% Works correctly
\placefigure[right,none]{}{\externalfigure[ctanlion]}
here is a test : \input linden
\hairline
%% Wrapping doesn't work
\placefigure[right,none]{}{\externalfigure[ctanlion]}
{here is a test :} \input linden    
\stoptext

在此处输入图片描述

我不明白为什么会发生这种情况。有没有什么解释,如果可能的话,有什么解决方法?

答案1

解决方案

图后的段落开头不能成组出现。请删除括号,或通过在前面添加 明确开始段落\dontleavehmode

解释

使用剪切放置方法时,ConTeXt 会进行一些记录。它会记住图形的放置位置以及它将占用多少空间。然后,接下来的段落将使用正确的方法进行调整\parshape。要知道段落是否需要调整,ConTeXt 会检索一些信息,例如新段落开始时剪切图形的放置位置。

TeX 将新段落的开始定义为从垂直模式切换到水平模式。当 TeX 读取一个字符时就会发生这种情况。此时,的内容\everypar将插入到 ConTeXt 存储浮点信息的位置。

这就是分组的作用所在。在你的例子中,段落开头是

{here is a test :} The warm water...

请记住,一个段落的开始时间是一个人物遇到。因为第一个字符是hhere所以段落开始于一个组内。这意味着 的内容\everypar也插入到组内,TeX 将忘记组内未完成的设置\global。不幸的是,浮动被标记为已检查在全球范围内,但是\parshape当 TeX 退出该组时将被遗忘。

建议

除非你知道其含义,否则永远不要以一个群体来开始一个段落。

相关内容