我需要将节点的坐标提取到变量中。我试过了\pgfextractx
\documentclass[11pt]{article}
\usepackage{fp}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node (node1) at (0,0) {N1};
\node (node2) at (2,0) {N2};
\newdimen\varAX
\pgfextractx{\varAX}{node1.center}
\newdimen\varBX
\pgfextractx{\varBX}{node2.center}
\FPeval\varCX {clip(\varBX - \varAX)}
\node at (\varCX,0) {N3};
\end{tikzpicture}
\end{document}
但看起来 FP 不能处理长度(pt、cm 等),我想这回头看看是合乎逻辑的......
此外,当移除 FP 并将第三个节点更改为时,\node at (\varBX,0) {N3};
它向左偏移了一点。尽管它本应与 N2 重叠。
编辑
在我发布这个问题之后,我注意到你实际上不能用 来做类似的事情Node1.east
。pgfextract
这是最终代码的一部分。所以我需要一个全新的解决方案来获取如上所示的 X 值 ^
答案1
有
\pgfpointanchor{<point>}{<anchor>}
你可以使用它作为
\pgfextractx{\centerAx}{\pgfpointanchor{node1}{center}}
将 N3 置于 N1 和 N2 中点的完整示例:
\documentclass{article}
\usepackage{tikz}
\newdimen\centerAx
\newdimen\centerAy
\newdimen\centerBx
\newdimen\centerBy
\begin{document}
\begin{tikzpicture}
\node (node1) at (0,0) {N1};
\node (node2) at (2,0) {N2};
\pgfextractx{\centerAx}{\pgfpointanchor{node1}{center}}
\pgfextracty{\centerAy}{\pgfpointanchor{node1}{center}}
\pgfextractx{\centerBx}{\pgfpointanchor{node2}{center}}
\pgfextracty{\centerBy}{\pgfpointanchor{node2}{center}}
\node at (0.5\centerAx+0.5\centerBx,0) {N3};
\end{tikzpicture}
\end{document}
答案2
您可以使用TikZ 库let
中的语法calc
\begin{tikzpicture}
\node (node1) at (0,0) {N1};
\node (node2) at (2,0) {N2};
\path let \p1=($(node2.west)-(node1.east)$) in node at (\x1,0) {N3};
\end{tikzpicture}