背景

背景

背景

希望调整用作框架文本背景的 METAPOST 图形的外部填充。

ConTeXt 版本 2021.05.15。

南加州大学

从邮件列表中窃取:

\startuseMPgraphic{TextBubble}
  z1 = (0, 0) ;
  z2 = (OverlayWidth, 0) ;
  z3 = (OverlayWidth, OverlayHeight) ;
  z4 = (0, OverlayHeight) ;

  2/12[x1,x2] = x8 + 1cm = x7 + .5cm = x9 - .5cm ;
  y7 =  0cm ;
  y8 = -1cm ;
  y9 =  0cm ;

  path p ;
  p = (z1--z7--z8--z9--z2--z3--z4--cycle) cornered .25cm ;
  draw p withpen pencircle scaled 0.5 ;

  setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\defineoverlay[TextBubbleOverlay][\useMPgraphic{TextBubble}]
\defineframedtext[TextBubbleFrame][
  frame=off,
  width=\textwidth,
  background=TextBubbleOverlay,
  offset=.5em,
]

\starttext 
  \input knuth

  \TextBubbleFrame{\input ward \input knuth }

  \input knuth
\stoptext

问题

对话框浸入下面的文本中:

会话框

after选项似乎被忽略,并且boffset会增加整体高度。

问题

如何添加足够的填充以使尾部单独占据一行或两行?有没有办法增加 METAPOST 图形高度,以使带框的文本符合新的尺寸?

使用类似的东西\define\PaddedBubble{\TextBubble{...}\blank[1cm]}会起作用,但感觉不像ConTeXt 方式.(不能使用会话框模块,因为不能保证一定能安装。)

有关的

类似问题:

答案1

以下解决方案不是最好的:尾部高度间接与 耦合3*big,而不是使用选项或变量链接。

\startuseMPgraphic{TextBubble}
  z1 = (0, 0) ;
  z2 = (OverlayWidth, 0) ;
  z3 = (OverlayWidth, OverlayHeight) ;
  z4 = (0, OverlayHeight) ;

  2/12[x1,x2] = x8 + 1cm = x7 + .5cm = x9 - .5cm ;
  y7 =  0cm ;
  y8 = -1cm ;
  y9 =  0cm ;

  path p ;
  p = (z1--z7--z8--z9--z2--z3--z4--cycle) cornered .25cm ;
  draw p withpen pencircle scaled 0.5 ;

  setbounds currentpicture to OverlayBox ;
\stopuseMPgraphic

\defineoverlay[TextBubbleOverlay][\useMPgraphic{TextBubble}]
\defineframedtext[TextBubbleFrame][
  frame=off,
  width=\textwidth,
  background=TextBubbleOverlay,
  offset=.5em,
  after={\blank[3*big]},
]

\starttext 
  \input knuth

  \startTextBubbleFrame
    \input ward
  \stopTextBubbleFrame

  \input knuth
\stoptext

我无法让文本背景工作。文本背景似乎需要迭代段落中的行数。

会话框

相关内容