答え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}
ここでは何が起こっているのでしょうか? まず、ノードを描画します。ノードはすべて正方形で、中央の 3 つのノードには境界線があります。これを実現するには、\node[minimum size=5em] {...};
オプションを使用してminimum size
ノードの高さと幅を設定し、ノードを正方形にします。また、ライブラリを使用して、ノードを互いに対して配置します。最後に、後で参照できるように、、、... というpositioning
名前を付けます。a
b
e
次に、ノードの下に線を描きます。1 本の実線はb.south
(ノード の下端の中央b
) から始まり、少し下がってから右に進み、再び まで上がりますd.south
。2 つの座標間に長方形の線を描く演算子 (最初に水平に、次に垂直に) を使用します。また、開始座標を下方にシフトするオプション-|
を使用して、線の破線部分を追加します。yshift
次に、ノードの上に線を描きます。最初は数字の付いた垂直線だけです。一番外側の線から始めますが、shift
開始座標を水平方向と垂直方向にシフトするオプションを使用します。次に、\foreach
ループを使用して他の線を追加します。ここでは、カウンターを使用して数字を追加します。
最後に、事前に描画に配置した座標を利用して曲線を描きます。to[out=..., in=...]
構文を使用して、パスの始点と終点に曲線を描きます。