![如何在 pgf 序列图中添加注释](https://linux22.com/image/426172/%E5%A6%82%E4%BD%95%E5%9C%A8%20pgf%20%E5%BA%8F%E5%88%97%E5%9B%BE%E4%B8%AD%E6%B7%BB%E5%8A%A0%E6%B3%A8%E9%87%8A.png)
我们如何在序列图中添加注释?我想在每个响应返回时(接收 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
内部定义了节点cfn
、ctn
和 ,rfn
用于rtn
调用来自/到 ,并返回来自/到 ,用于调用号码n
。例如,问题代码中标记为 ACall 的箭头从节点(cf1)
指向(ct1)
。
不幸的是,您要注释的节点标签在 中没有名称pgf-umlsd
。但是,使用calc
tikzlibrary,您可以将节点定义为两个节点之间的中点,在本例中为从/到节点。此语法为($(first node)!0.5!(second node)$)
。
要将注释放在箭头下方,您可以.south
在计算中间点时使用节点的锚点。
为了对注释节点的位置进行更多的控制,您可以使用xshift
和yshift
/或库本身的细粒度控制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}
结果: