在 tikzuml 中在 类 之间取得平衡 space
Getting even space between classes in tikzuml
考虑以下 class 图:
\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
尺寸较大,我不得不为 Class2
的 x
坐标添加一个单位,以在两者之间保留一些 space。这是正确的方法吗?如果不使用坐标,我怎样才能在 class 之间获得均匀的 space?每次 class 的大小发生变化时,我经常需要重新定义许多坐标。另外,如何修复两个 classes 相对于 Class 1
?
的对齐方式
您可以使用 TikZpositioning
库中的相对定位:
\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}
考虑以下 class 图:
\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
尺寸较大,我不得不为 Class2
的 x
坐标添加一个单位,以在两者之间保留一些 space。这是正确的方法吗?如果不使用坐标,我怎样才能在 class 之间获得均匀的 space?每次 class 的大小发生变化时,我经常需要重新定义许多坐标。另外,如何修复两个 classes 相对于 Class 1
?
您可以使用 TikZpositioning
库中的相对定位:
\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}