如何定位一个 uml 类相对于其他两个类

如何定位一个 uml 类相对于其他两个类

如何将 tikz uml 类相对于另外两个类进行定位?

在我的示例代码中,我能够弄清楚如何以这种方式定位节点,但无法对 tikz uml 类执行相同操作。

先感谢您 :)

定位

\documentclass{standalone}
\usepackage{fullpage}
\usepackage{tikz-uml}
\usepackage{amssymb}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\umlsimpleclass[x=5,y=-5] {A}
\umlsimpleclass[x=10,y=-10]{B}
%\umlsimpleclass[]{C} at (A -| B);
\node(c) at (A -| B){C};
\end{tikzpicture}
\end{document}

答案1

一种方法是从两个现有节点中提取相关的 x 和 y 坐标,并将它们与语法一起使用x=..,y=..。使用稍微改编的版本https://tex.stackexchange.com/a/179946/

\documentclass{article}
\usepackage{tikz-uml}
\usetikzlibrary{calc}
\makeatletter
\def\extractcoordx#1#2{
  \path let \p1=(#2) in \pgfextra{
    \pgfmathsetmacro#1{\x{1}/\pgf@xx}
    \xdef#1{#1}
  };
}
\def\extractcoordy#1#2{
  \path let \p1=(#2) in \pgfextra{
    \pgfmathsetmacro#1{\y{1}/\pgf@yy}
    \xdef#1{#1}
  };
}
\makeatother
\begin{document}
\begin{tikzpicture}
\umlsimpleclass[x=5,y=-5] {A}
\umlsimpleclass[x=10,y=-10]{B}
\extractcoordx\umltmpx{B}
\extractcoordy\umltmpy{A}
\umlsimpleclass[x=\umltmpx,y=\umltmpy]{C}
\end{tikzpicture}
\end{document}

结果:

在此处输入图片描述

相关内容