我在用着普格富姆创建一些序列图。正如您在 pgf-uml 主页上的示例中所看到的,如果插入许多描述,图表会变得非常拥挤。文本和箭头重叠,难以阅读,因为它们相互重叠。
我不是经验丰富的 Latex 用户,我不知道如何稍微改变 pgf-umlsd.sty,以便图表变得更直、更易读。有人能告诉我如何解决这个问题吗,例如增加元素之间的空间?
例如:示例页面上显示:
<-----------------
Update()
----------------->
我怎样才能增加这些箭头之间的距离来拉直图表?
答案1
不幸的是,没有简单的方法可以解决这个问题,因为代码中到处都使用了魔法数字。考虑一下这一行\draw[dotted] (inst\t) -- ++(0,-\theseqlevel*\unitfactor-2.2*\unitfactor);
。这\unitfactor
出现在具有各种系数的众多数学运算中。
开始的尝试是修改环境内的\unitfactor
(默认0.6
)sequencediagram
来拉伸图表:
\documentclass{standalone}
\usepackage{pgf-umlsd}
\begin{document}
\begin{sequencediagram}
\def\unitfactor{0.8}
\newthread{ss}{:SimulationServer}
\newinst{ctr}{:SimControlNode}
\newinst{ps}{:PhysicsServer}
\newinst[1]{sense}{:SenseServer}
\begin{call}{ss}{Initialize()}{sense}{}
\end{call}
\begin{call}{ss}{Update()}{ps}{}
\end{call}
\end{sequencediagram}
\end{document}
但正如您所看到的,更新调用的返回值并未像应有的那样指向 SimulationServer 线程。这是因为代码中用于计算此位置的一些魔法数字假设了默认值\unitfactor
。0.6
这需要进行大手术(本质上是重写)才能纠正。
答案2
另一个选择是\postlevel
使用手动的。注意它可以重复使用以获取更多的垂直空间。
请注意,为了增加水平空间,您可以使用垂直空间\newinst[10]{a}{ARM}
。10
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shadows}
\usepackage{pgf-umlsd}
\begin{document}
\begin{figure}
\begin{sequencediagram}
\newthread[white]{c}{9555}
\newinst[10]{a}{ARM}
\begin{call}{c}{
\shortstack{
looooo ooooo oooooooo oooooooooooo oooooong\\
looooo ooooo oooooooo oooooooooooo oooooong\\
looooo ooooo oooooooo oooooooooooo oooooong}
}
{a}{
\shortstack{
looooo ooooo oooooooo oooooooooooo oooooong\\
looooo ooooo oooooooo oooooooooooo oooooong\\
looooo ooooo oooooooo oooooooooooo oooooong}
}
\postlevel
\postlevel
\postlevel
\postlevel
\end{call}
\begin{call}{c}{aaa}{a}{bbb}
\end{call}
\end{sequencediagram}
\caption{Find Me typical use case}
\end{figure}
\end{document}
还这个答案可能会有帮助