在下面的代码中,sdblock
块仅覆盖两列(b 和 m)。如何让块覆盖所有列,即 s、b、m 和 a 列。
\begin{sequencediagram}
\newinst {s} {S}
\newinst {b} {B}
\newinst {m} {M}
\newinst {a} {A}
\begin{sdblock}{BLOCK}{}
\begin{messcall}{b} {TEXT} {m} \end{messcall}
\end{sdblock}
\end{sequencediagram}
答案1
\path (inst1.west) -- (inst4.east);
您可以通过在环境开始时添加类似 的内容来实现这一点sdblock
。这样做之所以有效,是因为块是使用east
和west
的锚点current bounding box
作为参考绘制的,并且通过添加\path
边界框变得更宽。每个\newinst
都会生成一个名为 的新节点inst<countervalue>
,因此在您的例子中,最左边的节点称为inst1
,最右边的节点称为inst4
。
\documentclass[border=5mm]{standalone}
\usepackage{pgf-umlsd}
\begin{document}
\begin{sequencediagram}
\newinst {s} {S}
\newinst {b} {B}
\newinst {m} {M}
\newinst {a} {A}
\begin{sdblock}{BLOCK}{}
\path (inst1.west) -- (inst4.east);
\begin{messcall}{b} {TEXT} {m} \end{messcall}
\end{sdblock}
\end{sequencediagram}
\end{document}