消息序列图

消息序列图

我正在sequencediagram用 LaTeX 画一个。现在它看起来像这样:

在此处输入图片描述

  • 是否可以删除灰色框?
  • 握手和之间可以留一个空格吗ws.connect

这是我的代码:

\begin{figure}[hbtp!]
\begin{center}
    \fbox{
    \begin{sequencediagram}
        \newthread{c}{:Client}
        \newinst[4]{s}{:Server}

        \begin{call}
            {c}{Handshake}
            {s}{Handshake}
        \end{call}

        \begin{call}
            {c}{ws.connect}
            {s}{ws.connectes}
        \end{call}

        \mess{c}{ws.message}{s}
        \mess{s}{ws.message}{c}
        \mess{c}{ws.message}{s}

    \end{sequencediagram}
    }
\caption{WebSockets}
\end{center}
\end{figure}

答案1

看一下pgf-umlsd.sty并不难发现,默认情况下,所有threads都填充了gray!30。但作为可选参数,您可以更改它,只需声明您喜欢哪种颜色:\newthread[white]{c}{:Client}。我选择了白色,因为none绘制透明threads,不会覆盖背景虚线。

第二个问题更难,因为所有呼叫/消息的位置都基于几个内部计数器和硬编码因素。我能找到的最佳解决方案是针对step up发出每个呼叫的计数器:\stepcounter{seqlevel}

\documentclass[tikz, border=2mm]{standalone}

\usetikzlibrary{arrows,shadows}
\usepackage{pgf-umlsd}

\begin{document}
    \begin{sequencediagram}
        \newthread[white]{c}{:Client}
        \newinst[4]{s}{:Server}

        \begin{call}
            {c}{Handshake}
            {s}{Handshake}
        \end{call}

        \stepcounter{seqlevel}
        \begin{call}
            {c}{ws.connect}
            {s}{ws.connectes}
        \end{call}

        \stepcounter{seqlevel}
        \mess{c}{ws.message}{s}
        \mess{s}{ws.message}{c}
        \mess{c}{ws.message}{s}

    \end{sequencediagram}

\end{document}

在此处输入图片描述

相关内容