我正在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}