天地有情

[LaTeX] blox.sty -- ブロック線図を作成する

 blox.sty -- ブロック線図を作成する

§1.概要

自動制御系の解析や設計をする場合には,その系の信号伝達のありさまを示し伝達関数を求める必要があります.
この目的に適するものにブロック線図があり,自動制御工学を志す方々におかれましては必須のものと考えます.

blox.sty は,このブロック線図を容易に作成するための LaTeXのスタイルファイル です.

初歩的な内容となっています.下記のマニュアルを読むとさらに理解が深まることでしょう.

■ インストール

TeXLive/W32TeX などには標準でインストールされていますので,インストール作業は必要ありません.
すぐに利用できる状態にあると思われます.

■ マニュアル

コマンドラインから texdoc blox と打ち込んでください.

§2.LaTeX2e 文書での指定方法

プリアンブルに
   \usepackage{blox} を記述します.
   本体は \begin{tikzpicture} ~ \end{tikzpicture}で囲みます.

§3.代表的な書式例

  foo.tex
  ■■■■■■■■■■■■■■■■■■■
  %% 文字コード:UTF-8
  
  \documentclass{ltjsarticle}
  \usepackage{blox}
  %
  \begin{document}
   \begin{tikzpicture}
    == ブロック図作成コマンドを記述 ==
   \end{tikzpicture}
  \end{document}
  ■■■■■■■■■■■■■■■■■■■

  ★ クラスファイルは ltjsarticle を使っていますが,scrartcl や article などでも構いません.
  ★ 文字コードは UTF-8 とします.

■ コンパイルの仕方
  luajitlatex foo.tex
  または
  lualatex foo.tex

■ コンパイルの結果
  正しくコンパイルできたら foo.pdf が生成されます.

§4.簡単な例題と説明

(1)次のようなブロック線図を作成するものとします.

blox01.png


(2)シンボルの配置と結線のために [メモ書き]で "エントリーポイント" を決めます.

blox02.png


   この例では"エントリーポイント"(座標)は A, B, C, E です.
   端点である A, E にも付けます.

(3)LaTeX ファイル の書き方

ファイル名:blox01.tex
エンコード:UTF-8
■■■■■■■■■■■■■■■■■■■■■
01:  \documentclass{ltjarticle}
02:  \usepackage{blox}
03:  %
04:  \begin{document}
05:  \begin{tikzpicture}
06:   \bXInput{A}
07:   \bXComp{B}{A}
08:   \bXLink[r]{A}{B}
09:   \bXBloc[2]{C}{$G_p$}{B}
10:   \bXLink[u]{B}{C}
11:   \bXOutput{E}{C}
12:   \bXLink[y]{C}{E}
13:   \bXReturn{C-E}{B}{H}
14:  \end{tikzpicture}
15:  \end{document}
■■■■■■■■■■■■■■■■■■■■■

★ 簡単な説明
  02: \usepackage{blox} を登録
  05:~14: \begin{tikzpicture} ~ \end{tikzpicture} で囲む
  06: \bXInput で入力点を設定
  07: \bXComp で比較器を配置
  08: \bXLink で{A}{B}間を結線.線名を[r]とする
  09: \bXBloc でブロックを配置.内容文字を{$G_p$}に,前段との線長さ[2]単位とする
  10: \bXLink{B}{C}間を結線.線名を[u]とする
  11: \bXOutput で出力点を設定
  12: \bXLink{C}{E}間を結線.線名を[y]とする
  13: \bXReturn{C-E}中間から比較器{B}への戻り結線.線名を[H]とする

★ 主要なコマンド構文を掲載します.詳細は マニュアル を参照して下さい.

■Input / Output
   \bXInput[<label>]{<Name>}
   \bXOutput[<distance>]{<Name>}{<Preceding Node>}
   \bXLinkName[<distance>]{<Previos Node>}{<Label>}

■Blocks
   \bXBloc[<distance>]{<Name>}{<Contents>}{<Previous Node>}
   \bXBlocL[<distance>]{<Name>}{<Contents>}{<Previous Node>
   \bXBlocr[<distance>]{<Name>}{<Contents>}{<Previous Node>
   \bXBlocrL[<distance>]{<Name>}{<Contents>}{<Previous Node>}

■Comparators and Summations
   \bXComp*[<distance>]{<Name>}{<Previous Node>}
   \bXSum[<distance>]{<Name>}{<Previous Node>}{<a>}{<b>}{<c>}

■Links
   \bXLink[<labe>]{<Previous Node>}{<Next Node>}
   \bXLinkxy
   \bXLinkyx{<Previous Node>}{<Next Node>}

■Returns
   \bXReturn[<distance>]{<Previous Node>}{<Next Node>}{<label>}

■Chains
   \bXChain[<distance>]{<Previous Node>}{<list>}
   \bXChainReturn[<distance>]{<Previous Node>}{<list>}
   \bXLoop[<distance>]{<Previous Node>}{<list>}

■Branches
   \bXBranchx[<distance>]{<Previous Node>}{<Name>}
   \bXBranchy[<distance>]{<Previous Node>}{<Name>}

(4)コンパイル

  luajitlatex blox01.tex
  または
  lualatex blox01.tex

(5)出来上がりの PDF は冒頭に示したようになります.

blox01.png


§5.ブロック線図全体の拡大と縮小

ブロック線図の全体を拡大したり,縮小したりする "LaTeX 環境" が用意されています.
\begin{tikzpicture} ~ \end{tikzpicture} の内部で利用できます.

(1)tiny環境:  \begin{tiny} ~ \end{tiny}

(2)small環境:  \begin{small} ~ \end{small}

(3)Large環境:  \begin{Large} ~ \end{Large}

■ tiny環境
\begin{tikzpicture}
 \begin{tiny}
  \bXInput{A}\bXLoop[2]{A}{b/$G_1$,c/$G_2$}
 \end{tiny}
\end{tikzpicture}

■ small環境
\begin{tikzpicture}
 \begin{small}
  \bXInput{A}\bXLoop[2]{A}{b/$G_1$,c/$G_2$}
 \end{small}
\end{tikzpicture}

■ Large環境
\begin{tikzpicture}
 \begin{Large}
  \bXInput{A}\bXLoop[2]{A}{b/$G_1$,c/$G_2$}
 \end{Large}
\end{tikzpicture}

■ normal環境
\begin{tikzpicture}
 \bXInput{A}\bXLoop[2]{A}{b/$G_1$,c/$G_2$}
\end{tikzpicture}&%

blox03.png


§6.サンプル集

(1)直列結合

 \begin{tikzpicture}
  \bXInput[x]{A}
  \bXBloc[2]{B}{$G_1$}{A}
  \bXLink{A}{B}
  \bXBloc[2]{C}{$G_2$}{B}
  \bXLink[z]{B}{C}
  \bXOutput[2]{D}{C}
  \bXLink{C}{D}
  \bXLinkName[0.6]{D}{y}
 \end{tikzpicture}

blox04.png


(2)並列結合

 \begin{tikzpicture}
  \bXInput[x]{A}
  \bXBloc[4]{B}{$G_1$}{A}
  \bXLink{A}{B}
  \bXSumb[8]{C}{B}
  \bXLink{B}{C}
  \bXOutput[4]{D}{C}
  \bXLink{C}{D}
  \bXLinkName[.6]{D}{y}
  \bXBranchy[4]{A-B}{u}
  \bXBloc{E}{$G_2$}{u}
  \bXLinkyx{A-B}{E}
  \bXBranchy[4]{C}{v}
  \bXLinkxy{E}{C}
 \end{tikzpicture}

blox05.png


(3)負帰還結合

 \begin{tikzpicture}
  \bXInput[x]{A}
  \bXComp{B}{A}
  \bXLink[r]{A}{B}
  \bXBloc[2]{C}{$G$}{B}
  \bXLink[e]{B}{C}
  \bXOutput[8]{D}{C}
  \bXLink{C}{D}
  \bXLinkName[.6]{D}{y}
  \bXBranchy[5]{D}{E}
  \bXBlocr[8]{F}{$H$}{E}
  \bXLinkyx{C-D}{F}
  \bXBranchy[5]{B}{G}
  \bXLinkxy{F}{B}
 \end{tikzpicture}

blox06.png


(4)調節器+プロセス

 \begin{tikzpicture}
  \bXInput[目標値]{A}
  \bXComp{B}{A}
  \bXLink[r]{A}{B}
  \bXBloc[5]{C}{調節器}{B}
  \bXLink[e 偏差]{B}{C}
  \bXSuma[8]{D}{C}
  \bXLink[y 操作量]{C}{D}
  \bXBloc[2]{E}{プロセス}{D}
  \bXLink{D}{E}
  \bXOutput[4]{F}{E}
  \bXLink{E}{F}
  \bXLinkName[.6]{F}{c 制御量}
  \bXReturn[4]{E-F}{B}{負帰還}
  \bXBranchy[-5]{D}{G}
  \bXLink[外乱]{G}{D}
 \end{tikzpicture}

blox07.png


(5)\bXChainマクロ と \bXLoopマクロ

■ \bXChainマクロ

 \begin{tikzpicture}
  \bXInput{E}
  \bXChain[2]{E}%
  {G1/$G_1$, G2/$G_2$, Gp/$G_p$}
 \end{tikzpicture}

■ \bXLoopマクロ

 \begin{tikzpicture}
  \bXInput[r]{A}
  \bXLoop[1.5]{A}{c/Md,d/kid,e/$4<$}
 \end{tikzpicture}

blox08.png


§7.あとがき

ブロック線図やフローチャートを作成するツールとして flow.exe (.sty でない)があります.

これは,ブロック線図あるいはフローチャートを作成する文法に従い記述し,これを
flow.exe でコンパイルしてLaTeXのpicture環境コードを生成します.これを本文に\inputで
取り込むものです.

もし,試してみたければ, http://www.ctan.org/pkg/flow から flow.zip をダウンロードし,
そこに含まれる flow.c をコンパイルします.たとえば,
gcc -o flow.exe flow.c
とすれば,flow.exe が得られます.マニュアルとして,flowdoc.pdf が含まれています.


EOT
スポンサーサイト
  1. 2014/09/18(木) 07:56:39|
  2. LaTeX Tools
  3. | トラックバック:0
  4. | コメント:0
<<[LaTeX] reflectgraphics -- ぼやけた鏡像を作る | ホーム | [LaTeX] pas-tableur -- スプレッドシートの作成 ~初歩の初歩~ >>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://konoyonohana.blog.fc2.com/tb.php/81-8d52ed32
この記事にトラックバックする(FC2ブログユーザー)