TikZ - 如何通过路径线对齐节点?

TikZ - 如何通过路径线对齐节点?

我想将一个包含多个节点的矩形与另一个包含多个节点的矩形水平对齐。这两个矩形一个在另一个之上。当我将代码归结为最小例如,出现以下 MWE。

据我所知,我基本上遵循了手册第 39、138 页和许多其他页上的内容。基本上,我不明白。为什么它不起作用?

MWE 不起作用

\documentclass[
a4paper
]{scrartcl}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}
\usetikzlibrary{intersections}

\listfiles

\begin{document}
\begin{center}
\begin{tikzpicture}[font=\sffamily\small]
\draw
(0,0) coordinate (cornerSW)
(10,0) coordinate (cornerSE)
(10,3) coordinate (cornerNE)
;
\draw[name path=something] (cornerSW) rectangle (cornerNE);
\draw[name path=aaa] (cornerSW) -- (cornerSE) node[midway, above] {aaa};
\begin{scope}[yshift=-2cm, below=of aaa.south, anchor=north]
\node[fill=red!20] at (2,0) {Test};
\end{scope}
\draw[fill=red] (aaa) circle [radius=3pt];
\end{tikzpicture}
\end{center}
\end{document}

在 Percusse 发表第一条评论后更新 MWE

\documentclass[
a4paper
]{scrartcl}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}
\usetikzlibrary{
    calc,
    intersections
    }

\listfiles

\begin{document}
\begin{center}
\begin{tikzpicture}[font=\sffamily\small]
\draw
(0,0) coordinate (cornerSW)
(10,0) coordinate (cornerSE)
(10,3) coordinate (cornerNE)
;
\draw[name path=something] (cornerSW) rectangle (cornerNE);
\draw (cornerSW) -- (cornerSE) node[midway, above] {aaa};
\draw ($(cornerSE)!0.5!(cornerSW)$) coordinate (aaa);
\node[fill=red!20, below=of aaa, anchor=north] {Test};
\draw[fill=red] (aaa) circle [radius=3pt];
\end{tikzpicture}
\end{center}
\end{document}

答案1

我认为这个fit图书馆正好能满足你的需要。

我做了你的corner<cardinal>坐标变成节点只是为了更容易看到发生了什么,但一个节点可以适合节点或者坐标,没关系。

该命名的节点fitted包含所有应参与居中的对象,然后可以相对于该fitted节点定位“测试”节点。

\documentclass[tikz]{standalone}
\usetikzlibrary{fit,positioning}

\begin{document}
\begin{tikzpicture}
\draw
(0,0) node (cornerSW) {SW}
(5,0) node (cornerSE) {SE}
(5,3) node (cornerNE) {NE}
(8,2) node (test) {test}
;
\node[draw,rectangle,inner sep=0pt,fit=(cornerSW) (cornerSE) (cornerNE) (test)] (fitted) {};
\node[fill=red!20, below=of fitted, anchor=north] {Test};
\end{tikzpicture}
\end{document}

在此处输入图片描述

从拟合度中移除后(test),我们可以看到“测试”相对于剩余的拟合项重新居中:

\documentclass[tikz]{standalone}
\usetikzlibrary{fit,positioning}

\begin{document}
\begin{tikzpicture}
\draw
(0,0) node (cornerSW) {SW}
(5,0) node (cornerSE) {SE}
(5,3) node (cornerNE) {NE}
(8,2) node (test) {test}
;
\node[draw,rectangle,inner sep=0pt,fit=(cornerSW) (cornerSE) (cornerNE)] (fitted) {};
\node[fill=red!20, below=of fitted, anchor=north] {Test};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容