$\LaTeX$ で論理回路 (2)
ということで今回は Circuit macros のインストールの方法と基本的な使い方を中心に。 一般的な Unix 系の OS + TeXLive を想定しています。Windows の方は頑張って下さい。
Circuit macros のインストール
まず Circuit macros に必要なソフトウェアをインストールする必要があります。
m4
一般的な Unix 系のシステムであれば m4 はすでに入っていると思われます。もし入っていなければ、インストールして下さい。 うろ覚えの情報で申し訳ないのですが、もしかすると GNU の m4 じゃないと駄目かもしれません。 FreeBSD とか Solaris とかの m4 は GNU のものではなかった気がします。
m4 --version
を実行してみて
m4 (GNU M4) 1.4.18
などと出力されれば問題ないでしょう。
FreeBSD/OpenBSD あたりでは m4 に -g
(Activate GNU-m4 compatibility mode.) というオプションがあるようなので、
これでいけるかもしれません。
だめだったら GNU m4 をインストールして下さい。
以下のサンプル等を実行してみてうまくいかないようであれば、この辺を確認してみて下さい。
dpic
Circuit macros と同じ作者によるプログラムです。
dpic のサイト
から入手してインストールして下さい。
./configure ; make
でいけますが、 make install
でオプションを付けないと
/usr/bin
とかにインストールしようとするので、必要なら付けて下さい。
例えば /usr/local
以下にインストールするなら、
make DESTDIR=/usr PREFIX=local install
などとします。 ディストリビューションによってはパッケージングシステムでインストールできるかもしれません。 Arch Linux の場合は AUR にあるようです (2025-01-31 現在)。
gpic
原則必要ありません。
Circuit macros
TeX Live 2019 以降であれば、 /usr/local/texlive/2019/texmf-dist/doc/latex/circuit-macros/
あたりにインストールされているはずです。
TeX Live 2018 以前の方は
CTAN
もしくは
Circuit_macros のサイト
から取得し、展開して、中身を適切な場所 (例えば /usr/local/share/Circuit_macros/
。他の場所でも OK) へ移動して下さい。
いずれの場合も、パスを確認しておいて下さい。
使い方の基本
以下では pgf で処理する場合のみ説明します。
.m4 ファイルで回路を書く
ひとまず以下のファイルを使ってみましょう。ファイル名は以下の説明の都合上 and.m4
としておいて下さい。
(dnl
の行は m4 のコメントなので、無くても OK)
dnl and.m4
.PS
log_init
A: AND_gate
line left 5*L_unit from A.In1
line left 5*L_unit from A.In2
line right 5*L_unit from A.Out
.PE
pic ファイルを生成
以下のコマンドにより、 .pic
ファイルを生成します。
(.pic
ファイルは中間形式と思っておけばよいでしょう。)
m4 -I /usr/local/share/Circuit_macros liblog.m4 pgf.m4 and.m4 > and.pic
-I
の引数は Circuit macros がインストールされている場所
(liblog.m4
などがあるディレクトリ)、
and.m4
は 手順「.m4 ファイルで回路を書く」で作成したファイルです。
なお、 liblog.m4
は論理回路用ライブラリ、 pgf.m4
は pgf 出力用ライブラリ (設定ファイル) です。
pgf 形式の .tex
ファイルを生成
以下のコマンドにより、pgf 形式のファイルを生成します。
dpic -g and.pic > and.tex
-g
は pgf で出力するためのオプションです。
$\LaTeX$ で処理
以下のような感じで、作成したい $\LaTeX$ 文書に取り入れます。
いつもの手順でコンパイルして下さい。このファイルは当然 and.tex
以外の名前にして下さい。
% example.tex
% and.tex 以外のファイル名にしておいて下さい。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\input{and}
\end{document}
これで完成です。ちゃんと表示されましたか? うまくいったら、前回の full adder でも挑戦してみましょう!
ところで、手順「pgf 形式の .tex
ファイルを生成」と手順「$\LaTeX$ で処理」は一度に処理できます。ちょっと長くなりますが、
m4 -I /usr/local/share/Circuit_macros liblog.m4 pgf.m4 and.m4 | dpic -g > and.tex
とパイプでつなげられます。
但し、エラーがある場合は .pic
ファイルの行番号でエラー箇所が指示されるので、
最初は .pic
を生成しておいた方が良いと思います。
補足
単体の PDF を作成したい場合は、
m4 -I /usr/local/share/Circuit_macros liblog.m4 and.m4 | dpic -d > and.pdf
とします。
ただし、当然ながら (La)TeX のコマンドは処理できませんし、文字が入ってるとたいていうまくいきません。
(Circuit macros で \scriptsize
とか使っているので)。
make の利用
と、いうことで、基本は押さえられたと思います。 が、毎回これだとちょっと大変なので、Makefile を作るのが良いでしょう。 というか作りました。思いっきり GNU make に依存した書き方になっていますので、入ってなければインストールしておいて下さい。
以下の GNUmakefile
をどこか (とりあえず .m4
ファイルのある場所) にコピーし、必要な箇所を修正して下さい。
特に Circuit macros をインストールした場所 (CMLIBDIR
)、使用するライブラリ (CMLIBS
) などは要確認です。
また、必要であれば DPIC
をフルパスで指定して下さい。それ以外では、
-
MODE
- デフォルトでの出力形式です
-
TEXMODE
.tex
を生成する場合の方式 (MODE
がtex
以外の場合は不使用)-
EPSMODE
.eps
を生成する場合の方式 (MODE
がeps
以外の場合は不使用)
なども確認して下さい。
確認し終えたら (and.tex
を削除してから)、 make
を実行してみます。
すると、そのディレクトリにある全ての .m4
ファイルに対して MODE
で指定した形式に変換します。
特に
注意
MODE = tex
のとき、ファイル名が重複しないよう注意して下さい (上書きされます)。
なお、
make and.tex
とすれば (他に .m4
ファイルがあったとしても) and.m4
から and.tex
(のみ) が生成されます。
また、 GNUmakefile
内の MODE
の指定によらず、
make and.pdf # GNUmakefile 内の MODE は tex のままで OK
とすれば and.m4
から and.pdf
が生成されます。
make MODE=pdf
とすれば、全ての .m4
ファイルから pdf
を生成します。
繰り返しますが、上書きによって重要なファイルが消えてしまわないよう、十分注意して下さい。(一切のトラブルについて責任を負いません。)
注意
不具合等がありましたら、是非お知らせ下さい。
万一ダウンロードが上手くいかない場合は、以下をコピー & ペーストして下さい (タブ文字に注意)。