答え1
学習の開始点として (基本ツールとして TikZ パッケージを選択した場合)、次の MWE が役立ちます。
\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{chains,decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}[
node distance=0pt,
start chain = A going right,
X/.style = {rectangle, draw,% styles of nodes in string (chain)
minimum width=2ex, minimum height=3ex,
outer sep=0pt, on chain},
B/.style = {decorate,
decoration={brace, amplitude=5pt,
pre=moveto,pre length=1pt,post=moveto,post length=1pt,
raise=1mm,
#1}, % for mirroring of brace, if necessary
thick},
B/.default=mirror, % by default braces are mirrored
]
\foreach \i in {0,1,1,0,0,0,1,0,0,
0,1,0,1,0,0,0,1,0,
0,0,1,1,0,0,1,0,0}% <-- content of nodes
\node[X] {\i};
\draw[B] ( A-1.south west) -- node[below=2mm] {Channel 1 Links} ( A-9.south east);
\draw[B] (A-10.south west) -- node[below=2mm] {Channel 2 Links} (A-18.south east);
\draw[B] (A-19.south west) -- node[below=2mm] {Channel 3 Links} (A-27.south east);
\node (B1) [inner sep=1pt,above=of A-10.north west] {$\times$};
\node (B2) [inner sep=1pt,above=of A-19.north west] {$\times$};
\draw[B=](B1.north) -- node[above=2mm] {Crossover Points}(B2.north);
\end{tikzpicture}
\end{document}
これにより、次のようになります。
コードの簡単な説明: 上記のコードは (非常に) 簡潔なので、理解するには TikZ パッケージに関する経験が必要です。設計では次の点を考慮しました。
画像のシンプルな構造。同じ形状の 27 個のノードがチェーンを形成します。そのため、
chains
配置には TikZ のライブラリが使用されます。これはオプション で定義されますstart chain = A going right
。ここで、A はチェーン名です。したがって、チェーン内のノードは A-1、A-2、...、A-27 という名前になります。チェーン内のノード間の距離は によって決定されます
node distance
。デフォルト値は 15 mm なので、node distance=0pt
これをゼロに設定すると、ノードはouter sep
シェイプのパラメータによってのみ分離されます。境界線が適切に重なり合うように、この距離もゼロに設定されます (ノードのスタイルの定義では、X と呼ばれます)TikZでは、
foreach
ループは繰り返しタスクを実行することを目的としています。このようなタスクは、チェーン内のノードを設定することです。\forach \i in {...}\node[X] {\i};
ノードのチェーン (スタイル X) が形成され、その内容は中括弧内のリストによって決定されます。ノードの位置はチェーンによって決定されるため、ループは実際にはノードの数と内容のみを決定します。
ノードの下と上の括弧は、ライブラリを使用して描画されます
decorations.pathreplacing
。その定義では、パラメータ間でパラメータmirror
がフリーパラメータとして選択され、後で決定できます。4 つの括弧のうち 3 つはミラーリングされているため、これがデフォルトとして設定され、例外は「ローカル」で決定されます。1pt
中括弧は、各辺が座標間の距離よりも短くなるように設計されており、raise=1mm
指定された座標から下(ミラーリングされている場合)または上(ミラーリングされていない場合)に移動します。「チャンネル 2 リンク」の先頭と末尾の上の十字は「クラシック ウェイ」に設定されており
above=of <coordinate name>
、乗算用の数学記号として使用されます。
ここで使用されている TikZ の原理のより詳細な説明は、TikZ マニュアルに記載されています。
- 鎖については、第46章「鎖」の541ページをご覧ください。
- for
\foreach
ループ: 第 83 章 繰り返し: Foreach ステートメント、901 ページ - 括弧の場合: 48.3 パス置換装飾の項、581 ページ
答え2
次のような短いコードpstricks
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{mathtools}
\usepackage{pstricks-add, multido}
\usepackage{auto-pst-pdf}
\begin{document}
\sffamily
\begin{pspicture}
\psset{dimen=middle, linewidth=0.6pt, braceWidthOuter=4pt, braceWidthInner=4pt, braceWidth=0.8pt, labelsep =-2ex}
\multido{\i = 0 + 1, \n=0+0.5}{27}{\fnode[framesize=0.5](\n, 0){A\i}}%
\rmultiput{$0$}(A0)(A3)(A4)(A5)(A7)(A8)(A9)(A11)(A13)(A14)(A15)(A17)(A18)(A19)(A22)(A23)(A25)(A26)
\rmultiput{$1$}(A1)(A2)(A6)(A10)(A12)(A16)(A20)(A21)(A24)
\psset{rot=90, nodesepB=2ex}
\multido{\ia=0 + 9, \ib=8 + 9}{3}{\pnode[-0.15, -0.35](A\ia){B\ia}\pnode[0.15, -0.35](A\ib){B\ib}\psbrace(B\ia)(B\ib){\clap{Channel\,1 Links}}}
\multido{\i=8 + 9}{2}{\pnode[0.25,0.6](A\i){C\i}\uput{1pt}[d](C\i){$\times$}}
\psbrace[rot=-90, nodesepB=-0.5ex](C17)(C8){\clap{Crossover Points}}
\end{pspicture}
\end{document}