我想画一条由 6 个点组成的线:A、B、C、D、E、F。我知道如何在 tikz 包中创建这些点,但我不知道如何在由点 A 和 B 确定的线段上写入文本,然后在由点 B 和 C 确定的线段上写入文本,依此类推...
谢谢!
答案1
非常基础(并且功能有限,一个没有复杂的\foreach
用法,一个有\foreach
)
关键点是定义坐标和a \node (...) at ($(Foo)!.5!(Foobar)$) {...}
,即把节点放在两个坐标(Foo)
和之间(Foobar)
。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\foreach \x in {0,...,5} {
\coordinate (A\x) at (\x,0);
\draw[fill=red] (A\x) circle(2pt);
}
\draw (A0) -- (A1) -- (A2) -- (A3) -- (A4) -- (A5);
\node[inner sep=2pt,label=above:$A$] (A00) at ($(A0)!.5!(A1)$) {};
\node[inner sep=2pt,label=above:$B$] (A10) at ($(A1)!.5!(A2)$) {};
\node[inner sep=2pt,label=above:$C$] (A20) at ($(A2)!.5!(A3)$) {};
\node[inner sep=2pt,label=above:$D$] (A30) at ($(A3)!.5!(A4)$) {};
\node[inner sep=2pt,label=above:$E$] (A40) at ($(A4)!.5!(A5)$) {};
\end{tikzpicture}
\begin{tikzpicture}[blue]
\foreach \x in {0,...,9} {%
\coordinate (A\x) at (\x,0);
\draw[fill=black,black] (A\x) circle(2pt);
}
\foreach \x/\y in {0/A,1/B,2/C,3/D,4/E,5/F,6/G,7/H,8/I} {%
\draw (A\x) -- (A\the\numexpr\x+1);
\node[inner sep=2pt,label=above:$\y$] (A\x 0) at ($(A\x)!.5!(A\the\numexpr\x+1)$) {};
}
\end{tikzpicture}
\end{document}
答案2
假设已知线段的起点和终点坐标,并且它们的名称为A
、B
、 ... 等,并且线段以所述坐标之间的线条表示。您可以用多种方式在线条上书写文本。除了 Christian Hupfer 中描述的方式外,还有其他方式,在我看来更简单(正如我在上面的评论中指出的那样):
\draw (A) -- (B) node[midway,% determine point on the middle between A and B above, % text will appear above line ] {text};
- 同样的结果是
\draw (A) -- node[above] {text};
- 借助 TikZ 库
quotes
- 它必须加载到文档前言中\usetikzlibrary{quotes}
- 您可以获得相同的结果\draw (A) to ["text"] (B);
。通常使用此选项为 TikZ 图片添加选项auto
,例如像这样\begin{tikzpicture}[auto] ... \end{tikzpicutre}
。 - 如果行不是水平对齐的,则
sloped
节点中的选项将文本与行对齐:\draw (A) -- node[above,sloped] {text};
或类似地使用引号:\draw (A) to [sloped,"text"] (B);
- 如果文本应该位于坐标之间,那么
quotes
(用于在路径上写标签)就不成立。使用节点,您可以使用 实现此定位\draw (A) -- node[fill=white] {text};
,其中fill=white
覆盖线的一部分,文本放置在哪里。
节点的形式是决定节点样式的最佳方式。当然,强烈建议阅读 TikZ 手册。基础知识可以在第 17 章:节点和边中找到。