LaTeXでフローチャートを作成する方法
1. 序章
フローチャートは、プロセスとアルゴリズムを体系的に説明するための優れたリソースです。 フローチャートを使用すると、たとえば、条件付きの決定やループを視覚的かつ簡単な方法で定義できます。
要約すると、LaTeXは、タグとマークを使用してドキュメントをフォーマットするシステムです。 LaTeXには、さまざまな描画パッケージを含むいくつかのパッケージが用意されています。 これらの描画パッケージを使用すると、ユーザーはいくつかのグラフィカルリソースを最初から作成できます。
これらのパッケージの中には、TikZと呼ばれるものがあります。 TikZは、一般的な使用のためのベクトル描画パッケージです。 特に、TikZはフローチャートを描くための複数のツールを提供します。
このチュートリアルでは、LaTeX/TikZを使用してフローチャートを作成する方法について説明します。 最初に、LaTeX/TikZ画像環境の構成について学習します。 したがって、フローチャートの描画に使用できるTikZ要素のセットが表示されます。 最後に、完全なTikZフローチャートの例をいくつか示します。
2. LaTeX/TikZ画像環境
LaTeX / TikZで描画するには、特定のパッケージをインポートし、特定のタグで環境を整理する必要があります。 このように、このセクションでは、TikZを使用してフローチャートを作成するためのLaTeXドキュメントを準備する方法を示します。
この例では、フローチャートを作成するためのベースドキュメントとして次のコードを使用します。
(1) \documentclass{standalone}
(2) \usepackage{tikz}
(3) \usetikzlibrary{shapes, arrows}
(4) \begin{document}
(5) \begin{tikzpicture}
(6) ...
(7) \end{tikzpicture}
(8) \end{document}
基本ドキュメントでは、スタンドアロンクラスを使用しています(1行目)。 したがって、LaTeXコンパイラは、特にドキュメントで定義されているTikZイメージ用のPDFを作成します。 ただし、articleやa4paperなどの他のドキュメントクラスでTikZを問題なく使用できます。
次の行(2)では、TikZパッケージをLaTeXドキュメントにインポートします。 このインポートラインにより、TikZリソースを使用できます。 3行目は、TikZの形状と矢印のライブラリを使用することを指定しています。
フローチャートの他に、TikZを使用してチャートおよびグラフを描画するのが一般的であることに注意してください。
次に、サンプルドキュメントの環境を開くことができます。 4行目は、LaTeXドキュメント自体の始まりを定義しています。 5行目は、TikZ画像環境の開始を示しています。
環境を開いた後、TikZイメージを定義できます。 この例では、6行目が画像の定義を表しています。 ただし、この定義には複数の行が含まれる可能性があることに注意してください。
最後に、7行目と8行目は、TikZ画像環境(7)とLaTeXドキュメント(8)の終わりを示しています。
デフォルトでは、LaTeXコンパイラがPDFドキュメントを生成することを強調します。 ただし、スタンドアロン画像の場合は、PNGやJPGなどの他のファイル形式に変換することができます。
2.1. LaTeX/TikZ座標系
TikZを使用したフローチャートの作成は、画像にグラフィック要素を含めることで構成されます。したがって、これらの要素を適切に割り当てるには、画像の原点を参照として考慮する必要があります。
フローチャートを描くために、TikZパッケージの2D座標系(X、Y)を検討します。 次の画像では、TikZの単純なデカルト平面システムを見ることができます。
TikZのデカルト平面の原点は、画像の中央(黄色の点)にあります。原点を基準として、画像内のグラフィック要素を見つけるための座標系は次のように動作します。
- 正のXとY:グラフィック要素の中点は、デカルト平面の右上のセクションに配置されます(たとえば、赤い円)。
- 負のXおよびY:グラフィック要素の中点は、デカルト平面の左下のセクションに配置されます(たとえば、緑色の円)。
- 負のXと正のY:グラフィック要素の中点は、デカルト平面の左上のセクションに配置されます(たとえば、青い円)。
- 正のXと負のY:グラフィック要素の中点は、デカルト平面の右下のセクションに配置されます(たとえば、紫色の円)。
3. TikZのフローチャート要素
フローチャートを描くためのいくつかの要素があります。 これらの要素は、せいぜい単純な幾何学的図形です。 このセクションでは、LaTeXおよびTikZのコンテキストでこれらのフローチャート要素のいくつかを検討します。
以下のサブセクションでは、TikZを使用してフローチャート要素を作成するための定義コマンドを示します。 したがって、LaTeXファイル(\ begin {document})のbegindocumentコマンドの前に定義コマンドを含める必要があります。
3.1. ターミネーター
terminator 要素は、プロセスの開始または終了を示します。 TikZでターミネータを定義するには、次の定義コマンドを使用できます。
\tikzstyle{terminator} = [rectangle, draw, text centered, rounded corners, minimum height=2em]
次に、ターミネータ要素の画像を見ることができます。
最後に、次のように、この要素をTikZ画像環境のノードとして含めることができます。
\node at (X,Y) [terminator] (t-id) {Terminator};
3.2. プロセス
process 要素は、フローチャートの処理機能を表します。 したがって、プロセス要素のTikZ定義行を次に示します。
\tikzstyle{process} = [rectangle, draw, text centered, minimum height=2em]
次の画像は、プロセス要素を示しています。
次のコマンドを使用して、TikZ画像環境で画像を再現できます。
\node [process] at (0,0) (p-id) {Process};
3.3. 決断
decision 要素は、フローチャート上の2つ以上のブランチを表します。 したがって、特定の条件に従ってとられるさまざまなパスを定義します。 次の行で決定要素を定義できます。
\tikzstyle{decision} = [diamond, draw, text centered, minimum height=2em]
次に示す画像は、決定要素を示しています。
前の定義が完了したら、次のコマンドを使用してフローチャートに決定要素を挿入できます。
\node [decision] at (X,Y) (d-id) {Decision};
3.4. データ
データ要素は、フローチャートの入力または出力の操作を示します。 したがって、この要素は、データがシステムに導入されているか、システムによって提供されていることを意味します。 この要素を定義するための実行可能な方法を次に示します。
\tikzstyle{data}=[trapezium, draw, text centered, trapezium left angle=60, trapezium right angle=120, minimum height=2em]
次の画像は、データ入力/出力要素を示しています。
次の行は、データ要素をフローチャートに挿入します。
\node [data] at (X,Y) (dio-id) {Data\\In/Out};
3.5. コネクタ
コネクタ要素は、要素間の関係で構成されます。 次に、フローチャートの一連のコネクタに従って、パスを作成します。 次に、コネクタ要素の定義を確認できます。
\tikzstyle{connector} = [draw, -latex']
次の画像は、コネクタ要素の形状を示しています。
後続の行を使用して、2つの要素間のコネクタを作成できます( e1-id を原点として、 e2-idを原点として宛先):
\path [connector] (e1-id) -- (e2-id);
要素間の二重ハイフンは、要素を結ぶ直線を示していることを強調します。 フローチャートに曲線を作成するために、1つのハイフンをパイプに置き換えることができます:|-または-|。
4. 簡単なフローチャートの例
このセクションでは、前のセクションで示した要素を使用してフローチャートを作成するさまざまな方法を説明します。 最初に、要素の座標を明示的に定義するフローチャートを作成する方法を理解します。 したがって、明示的な座標ではなく、相対位置を使用して同じフローチャートを作成します。
4.1. 明示的な座標を使用したフローチャートの作成
座標を使用すると、要素をTikZデカルト平面の任意の場所に制限なく配置できます。したがって、明示的な座標を使用すると、フローチャートを作成するプロセスが非常に一般的でカスタマイズ可能になります。
次のLaTeX/TikZコードは、明示的な座標を使用して簡単なフローチャートを作成するためのTikZ画像環境を示しています。
\begin{tikzpicture}
\node [terminator, fill=blue!20] at (0,0) (start) {\textbf{Start}};
\node [data, fill=blue!20] at (0,-2) (data) {Provide data};
\node [decision, fill=blue!20] at (0,-5) (decision) {Valid data?};
\node [process, fill=red!20] at (3.5,-5) (error) {Error};
\node [process, fill=green!20] at (0,-8) (success) {Success};
\node [terminator, fill=blue!20] at (0,-10) (end) {\textbf{End}};
\node[draw=none] at (1.85, -4.75) (no) {No};
\node[draw=none] at (0.35, -6.75) (yes) {Yes};
\path [connector] (start) -- (data);
\path [connector] (data) -- (decision);
\path [connector] (decision) -- (error);
\path [connector] (decision) -- (success);
\path [connector] (error) |- (end);
\path [connector] (success) -- (end);
\end{tikzpicture}
以下の画像は、以前に提示されたコードによって生成されたフローチャートを示しています。
フローチャートには、2つのターミネータ(startおよびend)、1つのデータ要素( data )、1つの決定要素(decision)の合計12の要素が含まれています。 )、2つのプロセス(エラーおよび成功)、および6つのコネクタ。
要素の座標は明示的に定義されています( (X、Y)で )。
ノード修飾子も採用しました 塗りつぶし 要素の色を設定します。 さらに、特定のコネクタにラベルを付けるために追加のノードを使用しました(番号 と はい).
4.2. 相対的な位置付けによるフローチャートの作成
座標を明示的に定義する場合と比較してカスタマイズの可能性は低くなりますが、フローチャート内の要素の相対的な配置にはいくつかの利点があります。
これらの利点の中には、たとえば、フローチャートを作成する際の直感性や、フローチャート内の要素間の距離の標準化などが挙げられます。
次のLaTeX/TikZコードは、相対ポジショニングを使用して簡単なフローチャートを作成するためのTikZ画像環境を示しています。
\begin{tikzpicture}[node distance = 3cm]
\node [terminator, fill=blue!20] (start) {\textbf{Start}};
\node [data, fill=blue!20, below of=start] (data) {Provide data};
\node [decision, fill=blue!20, below of=data] (decision) {Valid data?};
\node [process, fill=red!20, right of=decision] (error) {Error};
\node [process, fill=green!20, below of=decision] (success) {Success};
\node [terminator, fill=blue!20, below of=success] (end) {\textbf{End}};
\node[draw=none] at (1.60, -5.75) (no) {No};
\node[draw=none] at (0.35, -7.80) (yes) {Yes};
\path [connector] (start) -- (data);
\path [connector] (data) -- (decision);
\path [connector] (decision) -- (error);
\path [connector] (decision) -- (success);
\path [connector] (error) |- (end);
\path [connector] (success) -- (end);
\end{tikzpicture}
以前に提示されたコードを使用して生成された画像を次に示します。
座標の定義がノード配置修飾子( の下、 の上、 の右、の左]に置き換えられたことに注意してください。 X172X])。 したがって、要素を割り当てる参照を提供する必要があります。
この場合、参照は以前に割り当てられた他の要素であり、グローバル参照は最初に割り当てられた要素(ターミネーター start )です。
さらに、ノード距離のTikZ画像環境修飾子を使用して、隣接ノードの中心間の標準距離を決定します。
最後に、ラベリングノード(noおよびyes)が画像上で特定の位置を要求したら、それらの座標を定義しました。
5. 結論
LaTeX / TikZは、フローチャートを作成するための非常に用途の広いツールであると結論付けることができます。 具体的には、TikZパッケージライブラリを使用すると、ユーザーはいくつかのフォームをネイティブに作成でき、そのライブラリは、すでに定義されているこれらのフォームのいくつかを提供します。