背景
希望调整用作框架文本背景的 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
我无法让文本背景工作。文本背景似乎需要迭代段落中的行数。