避免宏后换行

避免宏后换行

以下示例在第二个文本后产生换行符。

\define[2]\smallfigure{\placefigure[margin][#1]{#2}{!}}%

\starttext 
text text\smallfigure{fig1}{A}text text 
\stoptext

linebreak_example

ConTeXt 常见问题解答明确解决了这个问题。然而,尽管问题看起来相同,将宏更改为

\define[2]\smallfigure{\dontleavehmode\placefigure[margin][#1]{#2}{!}}%

无法按预期工作,并完全避免使用宏

\starttext 
text text\dontleavehmode\placefigure[margin][]{A}{!}text text 
\stoptext 

也不起作用。有没有办法避免换行?

答案1

转移placefigure通话

一个解决方案是将图表放在段落开头。这样可以使文本保持连贯。

\starttext

\startplacefigure [title=Caption,location=margin]
  \externalfigure [dummy]
\stopplacefigure
text text
text text

\stoptext

使用推迟机制

延迟机制使文本保持在一起。但是,它会影响浮动的位置。浮动在页面上出现在文本之后,这可能是不理想的。

text text
\startpostponing [+1]
  \startplacefigure [title=Caption,location=margin]
    \externalfigure [dummy]
  \stopplacefigure
\stoppostponing
text text

相关内容