我有两个图形。我需要放置第一个图形width=10cm
,然后放置第二个图形,宽度相同,但其中心必须相对于第一张图片的中心向右移动 9 厘米,向下移动 5 厘米。
我还需要文本不要与图片交叉,即我需要这种构造的行为就像一张通常的图片一样。
有没有办法做到这一点?
答案1
您可以使用叠加环境将两幅图像叠加在一起。然后使用命令调整第二幅图的相对位置
\offset
。
\useMPlibrary
[dum]
\setupexternalfigures
[width=10cm]
\starttext
\startoverlay
{\externalfigure}
{\offset[x=9cm, y=5cm]{\externalfigure}}
\stopoverlay
\stoptext
编辑:后续文本覆盖第二幅图像的原因是该\offset
命令没有调整边界框,而这恰恰是我们所希望的。您可以使用该\showboxes
命令直观地跟踪该边界框。
为了解决这个问题,我提出了两个解决方案。第一个\vbox
使用更高级别的命令创建一个\frame
高度为图像高度 + 垂直位移宽度 / 2 = 12.5cm这会创建一个正确高度的框,因此后续文本不会覆盖图像。
\setuppapersize
[A3]
\useMPlibrary
[dum]
\setupexternalfigures
[width=10cm]
\defineframed
[overlayframe]
[frame=off,
offset=overlay,
height=12.5cm,
align=top]
\starttext
\overlayframe{%%
\startoverlay
{\externalfigure}
{\offset[x=9cm, y=5cm]{\externalfigure}}
\stopoverlay}
\input knuth
\stoptext
第二种解决方案是使用 插入垂直空间\vskip
。
\setuppapersize
[A3]
\useMPlibrary
[dum]
\setupexternalfigures
[width=10cm]
\starttext
\startoverlay
{\externalfigure}
{\offset[x=9cm, y=5cm]{\externalfigure}}
\stopoverlay
\godown [\dimexpr 5cm+\lineheight\relax]
\input knuth
\stoptext
结果和上面一样。