编辑

编辑

我按照以下方式绘制了一系列三条垂直线:

 \documentclass{amsart}
 \usepackage{tikz}
 \usetikzlibrary{calc,intersections,through}

\begin{document}
    \begin{tikzpicture}
    \coordinate [label= left:$B$] (B) at (-2.2,0);  
    \coordinate [label= right:$E$] (E) at (0.8,0); 
    \coordinate  (F) at (2.2,0);
    \draw (B) let
    \p1 = ($ (F) - (E) $), \p2 = ($ (E) - (B) $) 
    in  (E) -- +(0,{-veclen(\x1,\y1)}) [label= left:$C$]  -- 
    +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) -- (B);
    \end{tikzpicture}
\end{document}

有没有直接的方法可以在第二和第三个顶点上放置标签,它们是使用 \p1 和 \p2 计算的?

您可以看到这些顶点不在问题中的正多边形上如何标记多边形的顶点?

而且,在较长的路径中我也遇到了这个问题,其中步骤不垂直,所以依赖矩形的解决方案对我没有太大帮助。

编辑:好的,对于这个特定问题,另一个解决方案是执行第二个 let 操作,指定相同的 \p1 和 \p2,并使用它来放置节点而不是路径。但这并不能回答我在这里提出的问题。我在这里问的是,当顶点由相对坐标指定时,是否有一种直接的方法可以在路径的顶点上放置标签。

答案1

您可以只使用一个节点。计算坐标没有区别:无论哪种方式您都需要一个节点。

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate [label= left:$B$] (B) at (-2.2,0);
  \coordinate [label= right:$E$] (E) at (0.8,0);
  \coordinate  (F) at (2.2,0);
  \draw (B) let \p1 = ($ (F) - (E) $), \p2 = ($ (E) - (B) $) in  (E) -- +(0,{-veclen(\x1,\y1)}) node [right] {$C$}  -- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) -- (B);
\end{tikzpicture}
\end{document}

节点中的标签

编辑

或者,您当然也可以使用坐标。

  \coordinate [label= right:$E$] (E) at (0.8,0);
  \coordinate  (F) at (2.2,0);
  \draw (-2.2,0) coordinate [label=left:$B$] (B) let \p1 = ($ (F) - (E) $), \p2 = ($ (E) - (B) $) in (E) -- +(0,{-veclen(\x1,\y1)}) coordinate [label=right:$C$] (C)  -- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) coordinate [label=left:$G$] (G) -- (B);

midway或者您可以利用在|--|路径上挑选角落的事实。

  \coordinate [label={[blue]right:$K$}] (K) at (.8,-2);
  \draw [blue] (-2.2,-2) coordinate [label=left:$H$] (H) let \p1 = ($ (2.2,-2) - (K) $), \p2 = ($ (K) - (H) $) in (K) |- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) coordinate [label=left:$G$] (G) coordinate [midway, label=right:$I$] (I) -- (H);

或者您可以将其全部组合成一个命令。

  \draw [red] (-2.2,2) coordinate [label=left:$M$] (M) (.8,2) coordinate [label={[red]right:$L$}] (L) let \p1 = ($ (2.2,2) - (L) $), \p2 = ($ (L) - (M) $) in (L) |- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) coordinate [label=left:$O$] (O) coordinate [midway, label=right:$P$] (P) -- (M);

三种变化

显然,有更简单的方法来构建这些特定的路径!

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate [label= right:$E$] (E) at (0.8,0);
  \coordinate  (F) at (2.2,0);
  \draw (-2.2,0) coordinate [label=left:$B$] (B) let \p1 = ($ (F) - (E) $), \p2 = ($ (E) - (B) $) in (E) -- +(0,{-veclen(\x1,\y1)}) coordinate [label=right:$C$] (C)  -- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) coordinate [label=left:$G$] (G) -- (B);
  \coordinate [label={[blue]right:$K$}] (K) at (.8,-2);
  \draw [blue] (-2.2,-2) coordinate [label=left:$H$] (H) let \p1 = ($ (2.2,-2) - (K) $), \p2 = ($ (K) - (H) $) in (K) |- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) coordinate [label=left:$G$] (G) coordinate [midway, label=right:$I$] (I) -- (H);
  \draw [red] (-2.2,2) coordinate [label=left:$M$] (M) (.8,2) coordinate [label={[red]right:$L$}] (L) let \p1 = ($ (2.2,2) - (L) $), \p2 = ($ (L) - (M) $) in (L) |- +({-veclen(\x2,\y2)},{-veclen(\x1,\y1)}) coordinate [label=left:$O$] (O) coordinate [midway, label=right:$P$] (P) -- (M);
\end{tikzpicture}
\end{document}

相关内容