如何覆盖 UML 图中使用的 sdblock 中的所有列

如何覆盖 UML 图中使用的 sdblock 中的所有列

在下面的代码中,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。这样做之所以有效,是因为块是使用eastwest的锚点current bounding box作为参考绘制的,并且通过添加\path边界框变得更宽。每个\newinst都会生成一个名为 的新节点inst<countervalue>,因此在您的例子中,最左边的节点称为inst1,最右边的节点称为inst4

output of code

\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}

相关内容