答案1
例如这样:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{fontspec}
\setmainfont{Noto Serif CJK SC}
\begin{document}
\begin{tikzpicture}
\node[minimum size=5em] (a) {进气道};
\node[draw, minimum size=5em, right=of a] (b) {压气机};
\node[draw, minimum size=5em, right=of b] (c) {燃烧室};
\node[draw, minimum size=5em, right=of c] (d) {涡轮};
\node[minimum size=5em, right=of d] (e) {尾喷管};
\draw (b.south) -- +(0,-0.5) -| (d.south);
\draw[dashed]
([yshift=-0.5cm]b.south) -- +(-4.5,0)
([yshift=-0.5cm]d.south) -- +(4.5,0);
\draw
([shift={(-0.5,-0.75)}]a.north west) -- +(0,1.75)
coordinate (ax)
node[anchor=north east] {\strut 0}
([shift={(0.5,-0.5)}]e.south east) -- ([shift={(0.5,1)}]e.north east)
coordinate (fx)
node[anchor=north east] {\strut 8}
node[anchor=north west] {\strut (9)};
\foreach \n [count=\i from 2] in {b,c,d,e} {
\draw
([shift={(-0.5,-0.25)}]\n.north west) -- +(0,1.25)
coordinate (\n x)
node[anchor=north east] {\strut \i};
}
\draw
([yshift=-3em]ax) to[out=30, in=180]
([yshift=-1.5em]bx) --
([yshift=-1.5em]ex) to[out=0, in=150]
([yshift=-3em]fx);
\end{tikzpicture}
\end{document}
这是怎么回事?首先,我绘制节点。它们都应该是正方形,中间的三个节点应该有边框。我通过使用\node[minimum size=5em] {...};
选项minimum size
设置节点的高度和宽度使其成为正方形来实现这一点。我还使用positioning
库将节点相互放置。最后,我将其命名为a
、b
、 ...e
以供以后参考。
然后我在节点下方画线:一条实线从b.south
(即节点 下边界的中间b
)开始,向下延伸一点,然后向右再向上延伸到d.south
。我利用在两个坐标之间绘制矩形线的运算符(先水平,然后垂直)。我还使用选项将起始坐标向下移动-|
,添加了线的虚线部分。yshift
现在,我在节点上方绘制线条,首先是带有数字的垂直线。我从最外面的线条开始,现在使用选项shift
水平和垂直移动起始坐标。然后,我使用循环\foreach
添加其他线条。在这里,我使用计数器来添加数字。
最后,我利用事先放置在绘图上的一些坐标绘制曲线。我使用语法to[out=..., in=...]
在路径的起点和终点绘制曲线。