编辑

编辑

这是我的代码:

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}
  \begin{tikzpicture}

    \node (circle) [draw, circle, minimum size = 20mm] at (0, 0) {}
    (0, 0) node[above] {$I$};
    \draw (circle.center) [{Rays[]}-|] -- (circle.east) node[below, midway] {$r$};
    \draw (circle.east)                -- (2, 0) node[below, midway] {$r$};
    \draw (2, 0) [|-{Circle[]}]        -- (3, 0) node[below, midway] {$r$} node[above] {P};

  \end{tikzpicture}
\end{document}

该行(0, 0) node[above] {$I$};要求集成到此行中:\node (circle) [draw, circle, minimum size = 20mm] at (0, 0) {}。但我无法实现。我该怎么做?也欢迎任何其他优化。

期望的结果(我想要产生的):

期望结果

答案1

我不确定我是否理解正确,但是你想要这样的东西吗?

可能的需要

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
  \node (circle) [draw, circle, minimum size = 20mm, label=above:$I$] at (0, 0) {};
  \draw (circle.center) [{Rays[]}-|] -- (circle.east) node[below, midway] {$r$};
  \draw (circle.east)                -- (2, 0) node[below, midway] {$r$};
  \draw (2, 0) [|-{Circle[]}]        -- (3, 0) node[below, midway] {$r$} node[above] {P};
\end{tikzpicture}
\end{document}

请记住,节点与路径不同,因此不能以相同的方式标记它。

实际上,您的原始代码在原点放置了两个节点:首先是圆形节点;然后是$I$。这\node是可行的,因为 相当于\path node。所以你有\path node ... node ...;因此,第二个节点放置在由点 组成的路径上方(0,0)

编辑

解决澄清的问题,只需将节点放在线的起点上方即可。例如,

\documentclass[border=10pt,multi,tikz]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
  \node (circle) [draw, circle, minimum size = 20mm] at (0, 0) {};
  \draw (circle.center) [{Rays[]}-|] node [above] {$I$} -- (circle.east) node[below, midway] {$r$};
  \draw (circle.east)                -- (2, 0) node[below, midway] {$r$};
  \draw (2, 0) [|-{Circle[]}]        -- (3, 0) node[below, midway] {$r$} node[above] {P};
\end{tikzpicture}
\end{document}

以上开始

还有其他方法可以做到这一点,但对我来说这似乎和其他方法一样简单。

相关内容