如何在 pgf 序列图中添加注释

如何在 pgf 序列图中添加注释

我们如何在序列图中添加注释?我想在每个响应返回时(接收 ARes、BRes、CRes)添加注释(描述某些功能)。我该怎么做?

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\usepackage{tikz}
\usepackage[underline=true]{pgf-umlsd}

\begin{document}
    \begin{sequencediagram}
    \newthread {r}    {R} {}
    \newinst [1] {a} {A}
    \newinst [1] {e} {E}
    \newinst [1] {u} {U}
    
        \begin {sdblock} {Block} {}
        \path (inst1.west) -- (inst4.east);
            \begin{call}{r}{ACall}{a}{ARes}
                \begin{call}{a}{B}{e}{BRes}
                    \begin{call}{e}{CCall}{u}{CRes}
                    \end{call}
                \end{call}
            \end{call}
        \end {sdblock}                                      
    \end{sequencediagram}
\end{document}

在此处输入图片描述

答案1

该包pgf-umlsd内部定义了节点cfnctn和 ,rfn用于rtn调用来自/到 ,并返回来自/到 ,用于调用号码n。例如,问题代码中标记为 ACall 的箭头从节点(cf1)指向(ct1)

不幸的是,您要注释的节点标签在 中没有名称pgf-umlsd。但是,使用calctikzlibrary,您可以将节点定义为两个节点之间的中点,在本例中为从/到节点。此语法为($(first node)!0.5!(second node)$)

要将注释放在箭头下方,您可以.south在计算中间点时使用节点的锚点。

为了对注释节点的位置进行更多的控制,您可以使用xshiftyshift/或库本身的细粒度控制calc

梅威瑟:

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usepackage{tikz}
\usepackage[underline=true]{pgf-umlsd}

\begin{document}
    \begin{sequencediagram}
    \newthread {r}    {R} {}
    \newinst [1] {a} {A}
    \newinst [1] {e} {E}
    \newinst [1] {u} {U}
    
        \begin {sdblock} {Block} {}
        \path (inst1.west) -- (inst4.east);
            \begin{call}{r}{ACall}{a}{ARes}
                \begin{call}{a}{B}{e}{BRes}
                    \begin{call}{e}{CCall}{u}{CRes}
                    \end{call}
                \end{call}
            \end{call}
        \end {sdblock}
        \node (aannot) at ($(rf1.south)!0.5!(rt1.south)$) {annot A};                                
        \node[yshift=-3mm] (bannot) at ($(rf2.south)!0.5!(rt2.south)$) {annot B};
    \end{sequencediagram}
\end{document}

结果:

在此处输入图片描述

相关内容