自定义 pgfuml(距离)

自定义 pgfuml(距离)

我在用着普格富姆创建一些序列图。正如您在 pgf-uml 主页上的示例中所看到的,如果插入许多描述,图表会变得非常拥挤。文本和箭头重叠,难以阅读,因为它们相互重叠。

我不是经验丰富的 Latex 用户,我不知道如何稍微改变 pgf-umlsd.sty,以便图表变得更直、更易读。有人能告诉我如何解决这个问题吗,例如增加元素之间的空间?

例如:示例页面上显示:

<-----------------
       Update()
----------------->

我怎样才能增加这些箭头之间的距离来拉直图表?

答案1

不幸的是,没有简单的方法可以解决这个问题,因为代码中到处都使用了魔法数字。考虑一下这一行\draw[dotted] (inst\t) -- ++(0,-\theseqlevel*\unitfactor-2.2*\unitfactor);。这\unitfactor出现在具有各种系数的众多数学运算中。

开始的尝试是修改环境内的\unitfactor(默认0.6sequencediagram来拉伸图表:

\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 线程。这是因为代码中用于计算此位置的一些魔法数字假设了默认值\unitfactor0.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}

在此处输入图片描述

这个答案可能会有帮助

相关内容