微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 tikzuml 中获得类之间的均匀空间

如何解决在 tikzuml 中获得类之间的均匀空间

考虑下面的类图:

\documentclass{article}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{empheq}
\usepackage{mdframed}
\usepackage{booktabs}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{color}
\usepackage{psfrag}
\usepackage{pgfplots}
\usepackage{bm}
\usepackage{tikz}
\usepackage{tikz-uml}


\begin{document}

\begin{figure}[h!]
    \centering
    \begin{tikzpicture}
    \umlclass[]{Class1}
    {
        
    }
    {

    }
    \umlinterface[y=4]{Class2}{}
    {
        + createDocument(doc: str) : str \\
        + resolveDocument(id: str) : str \\
        + updateDocument(doc: str) : str \\
        + deleteDocument(id: str) : str \\
        + createStatusList(sl: str) \\
        + resolveStatusList(id: str) \\
        + updateStatusList(sl: str) \\
        + deleteStatusList(id: str)
    }
    \umlclass[x=-2,y=-3]{Class33333333333333333333333}{}{}
    \umlclass[x=3,y=-3]{Class4}{}{}
    
    \umlinherit{Class1}{Class2}
    \umlaggreg[geometry=|-|]{Class1}{Class33333333333333333333333}
    \umlaggreg[geometry=|-|]{Class1}{Class4}
\end{tikzpicture}
\end{figure}
    
\end{document}

由于 Class3 的尺寸较大,我必须为 xClass2 坐标添加一个单位,以在两者之间保留一些空间。这是正确的方法吗?如何通过不玩坐标来获得班级之间的均匀空间?每次类的大小发生变化时,我经常需要重新定义许多坐标。另外,如何在 Class 1 方面修复两个类的对齐?

enter image description here

解决方法

您可以使用 TikZ positioning 库中的相对定位:

\documentclass{article}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{empheq}
\usepackage{mdframed}
\usepackage{booktabs}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{color}
\usepackage{psfrag}
\usepackage{pgfplots}
\usepackage{bm}
\usepackage{tikz}
\usepackage{tikz-uml}

\usetikzlibrary{positioning}


\begin{document}

\begin{figure}[h!]
    \centering
    \begin{tikzpicture}
    \umlinterface{Class2}{}
    {
        + createDocument(doc: str) : str \\
        + resolveDocument(id: str) : str \\
        + updateDocument(doc: str) : str \\
        + deleteDocument(id: str) : str \\
        + createStatusList(sl: str) \\
        + resolveStatusList(id: str) \\
        + updateStatusList(sl: str) \\
        + deleteStatusList(id: str)
    }
    \umlclass[below=1cm of Class2]{Class1}
    {
        
    }
    {

    }

    \umlclass[below left=2cm and 0.5cm of Class1]{Class33333333333333333333333}{}{}
    \umlclass[below right=2cm and 0.5cm of Class1]{Class4}{}{}
    
    \umlinherit{Class1}{Class2}
    \umlaggreg[geometry=|-|]{Class1}{Class33333333333333333333333}
    \umlaggreg[geometry=|-|]{Class1}{Class4}
\end{tikzpicture}
\end{figure}
    
\end{document}

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。