latex - 在 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
尺寸更大,我不得不为x
坐标添加一个单位,Class2
以在两者之间保持一些空间。这是正确的方法吗?如何通过不玩坐标来获得类之间的均匀空间?每次班级规模发生变化时,我经常需要重新定义许多坐标。另外,如何解决两个类的对齐问题Class 1
?
解决方案
您可以使用 Ti k Zpositioning
库中的相对定位:
\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}
推荐阅读
- python - 尝试在 Python Pandas 中实现 join / vlookup(更新)
- c# - 可以进一步改进此代码以连接地址吗?
- python - Python - Pandas,每周拆分时间序列数据帧
- laravel - 运行 Laravel docker 镜像并暴露端口 -p
- wordpress - 在生产中优化 WooCommerce 网站
- javascript - 简化 Javascript - 这是数组的情况吗?
- mysql - 在 Node 中向 DB 插入记录时重新抛出非 MySQL 错误
- apache-spark - dataproc 集群 (PySpark) 中的 Jupyter NB 单元现在执行了一个多小时,我如何检查作业是否正在运行?
- mysql - MySQL:索引可能包含非 JSON 数据的 JSON 数组列
- sql - 使用 SQL 跨多个字段对输出进行分组