如果在绘制路径的命令中使用 let,我找不到有效识别点坐标的方法。我的例子:
\draw[gray] let \p1=(D), \p2=(intersect), \p3=(C) in (\x1,\y2)
-- +(-\x1,0) node[left, red]{$f(c)$} -- (\x1,\y2) node[above, red]{$F$}
-- (\x3,\y2) node[right, red]{$E$};
现在我想为带有文本 $F$ 的节点创建命名坐标:
\coordinate (F) at (\x1,\y2);
但出现错误。我该如何解决?谢谢。
答案1
您只需命名节点... (\x1,\y2) node[...] (F) {$F$}
,然后就可以通过访问该节点(F)
,因此您可以执行以下操作:
\draw (F) circle (5pt);
如果你确实需要 x 和 y 坐标,你可以使用以下解决方案提取 TikZ 中任意点的 x,y 坐标:
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
% https://tex.stackexchange.com/questions/33703/extract-x-y-coordinate-of-an-arbitrary-point-in-tikz/33706#33706
\newdimen\XCoord
\newdimen\YCoord
\newcommand*{\ExtractCoordinate}[1]{\path (#1); \pgfgetlastxy{\XCoord}{\YCoord};}%
\begin{document}
\begin{tikzpicture}
\coordinate (C) at (0,0);
\coordinate (D) at (2,0);
\coordinate (intersect) at (1,1);
\draw[gray] let \p1=(D), \p2=(intersect), \p3=(C) in (\x1,\y2)
-- +(-\x1,0) node[left, red]{$f(c)$} -- (\x1,\y2) node[above, red] (F) {$F$}
-- (\x3,\y2) node[right, red] {$E$};
\draw (F) circle (5pt);% can just use the node name
\ExtractCoordinate{F}
node [below] (F) {$(\XCoord,\YCoord)$}
\end{tikzpicture}
\end{document}
答案2
您可以使用正交交叉点来避免let
操作,因此calc
使用此类应用程序的库。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (C) at (2cm,2cm);
\coordinate (D) at (-2cm,-3cm);
\coordinate (intersect) at (1cm,1cm);
\draw[thick,gray] (D |- intersect) coordinate (F) --
+([scale=-1]D|-{{(0,0)}}) node[left, red]{$f(c)$} --
(F) node[above, red] {$F$}--
(C|-intersect) node[right, red] {$E$};
\end{tikzpicture}
\end{document}
答案3
感谢@Jake,我的问题很容易解决:
\draw[gray] let \p1=(D), \p2=(intersect), \p3=(C) in (\x1,\y2)
-- +(-\x1,0) node[left, red]{$f(c)$}
-- (\x1,\y2) node[above, red]{$F$} coordinate (F) at (\x1,\y2)
-- (\x3,\y2) node[right, red]{$E$};