« Setting up shop, and shopping | Home | Introducing North Coast Synthe... »

Circuit-Macrosで回路図を書いて

Thu 15 Dec 2016 by mskala Tags used: , , ,

僕の新しい仕事がアナログシンセのデザインです。 LaTeXでユーザーマニュアルを作りたいです。 ドキュメントの中で回路図を書きたいです。 今日、Circuit-Macrosで回路図を書き方の勉強しましょう。 よろしくお願いします。

これはTeX & LaTeX Advent Calendar 2016に僕の寄贈です。昨日はmarimo-nekomimiさんの日です。 明日、Yasuhide Minodaさんの日です。

Circuit-MacrosはTeXLiveでありません。 CTAN著者のサイトから受けできます。 その上picインタプレターとm4が必要です。 Aplevichさんのサイトで、リンクがあります。 便利だから、GNU MakeとLatex-Makeも使いことがいいです。

Circuit-Macrosはm4のマクロのパーケージです。 ある言語で回路について話すあと、m4のインタプレターを走らせる。 m4マクロはpicマクロを作ります。 だからpicのインタプレターを走らせる。 picマクロはTeXマクロを作ります。 じつはTikZマクロです。 TeXドキュメントで\inputを使います。 だからドキュメントで回路図が入れられます。

この回路図を書きます。

予定のために、手製の回路図を書きます。 Circuit-Macrosの言語は時々難しいだから、ラフ稿がいいです。

新しいファイル「commone.m4」を作ります。 この回路は「common emitter amplifier」や「エミッタ共通回路」だからその名前です。 始めに、トランジスターだけを書きます。

% commone.m4
PS
cct_init
 
Q: bi_tr(up_ 0.667)
 
PE
 

.PScct_initはいつもCircuit-Macrosのプログラムの手始めです。 .PEが結末です。 Q: bi_tr(up_ 0.667)で、「Q」はトランジスターの名前です。 そのあと、このトランジスターに持ち出しています。 だから名前が必要です。 bi_trは「bipolar transistor」のマクロです。 Circuit-Macrosのマニュアルでマクロのリストあります。 このトランジスターはまっすぐです。さがさまありません。 高さ0.667インチです。 だからup_ 0.667を書きます。

今m4のインタプレターを走らせる。 Circuit-Macrosのディレクトリを持ち出します。

m4 -I /usr/local/share/texmf/tex/latex/circuit_macros pgf.m4 commone.m4 > commone.pic

長いファイルを生じました。

.PS
# cct_init Version 8.0: TikZ PGF m4 macro settings.
 
  # gen_init Version 8.0: TikZ PGF m4 macro settings.
 
 
  define rpoint__ {
    rp_wid = last line.end.x-last line.start.x
    rp_ht = last line.end.y-last line.start.y
    rp_len = sqrt(abs((rp_wid)^2+(rp_ht)^2)); move to last line.start
        rp_ang = atan2(rp_ht,rp_wid) }
 
  rp_ang = 0;  right
# とか…
PE
 

次にpicのインタプレターを走らせる。

dpic -g commone.pic > commone.tex

じつは、それがタイピング過ぎます。 GNU Makeを使いましょう。

include LaTeX.mk
 
%.pic: %.m4
	m4 -I /usr/local/share/texmf/tex/latex/circuit_macros \
	  pgf.m4 $*.m4 > $*.pic
 
%.tex: %.pic
	dpic -g $*.pic > $*.tex
 
make commone.tex

このファイルcommone.texがたくさんのTikZマクロを含みます。

\begin{tikzpicture}[scale=2.54]
% dpic version 2014.Jan.01 option -g for TikZ and PGF 1.01
\ifx\dpiclw\undefined\newdimen\dpiclw\fi
\global\def\dpicdraw{\draw[line width=\dpiclw]}
\global\def\dpicstop{;}
\dpiclw=0.8bp
\dpiclw=0.8bp
\dpicdraw (0.325,-0.3335)
 --(0.325,-0.15)
 --(0.31393,-0.15)\dpicstop
% とか…
 

LaTeXのドキュメントは\inputでこのファイルを使います。

% amplifier.tex
\documentclass{article}
 
\usepackage{tikz}
 
\begin{document}
 
Here's a typical transistor-based audio amplifier.
 
\input{commone.tex}
 
Since the transistor is intended to operate in its active region throughout
the signal cycle, this is a Class~A amplifier.
 
\end{document}
 
make amplifier.pdf

しかし他の電子部品が欲しいです。 コンデンサーを作りましょう。

.PS
cct_init
 
Q: bi_tr(up_ 0.667)
 
move to Q.B
line left_ 0.175; dot; capacitor(left_ 0.667); dot(,,1)
 
PE
 

新しいコードで、move to Q.Bだからトランジスターのベースから始まります。 忘れなくてトランジスターの名前が「Q」です。 そのあとline left_ 0.175と言います。 0.175インチのラインを書きます。 dotとコンデンサを書きます。 コンデンサーは、英語の言葉が「capacitor」です。 トランジスターの同じに、コンデンサーは0.667インチです。 今入力のターミナルが欲しい。 もう一度dotと言います。 でもこれがdot(,,1)です。 だから空っぽな丸です。

make amplifier.pdf

ウォームアップしました。 今、あまりなコードを書きましょう。

.PS
cct_init
 
Q: bi_tr(up_ 0.667)
 
move to Q.B
line left_ 0.175; dot; capacitor(left_ 0.667); dot(,,1)
 
move to Q.E
dot; resistor(down_ 0.667); dot; ground
 
move to Q.E
line right_ 0.5
corner # ①
capacitor(down_ 0.667,C) # ②
corner; line left_ 1.0; corner; resistor(up_ 0.667);
line up_ 0.667; resistor(up_ 0.667); corner; line right_ 0.5
 
move to Q.C
dot; resistor(up_ 0.667); dot; ground(,,S,90) # ③
 
move to Q.C
line right_ 0.5; dot(,,1)
 
PE

① 二つのラインは角に結ばれるとき、清潔な角が欲しいです。 cornerとは、清潔な角を作ります。

② コンデンサーに「,C」を書くだから反るプレートのコンデンサシンボルを作ります。

ground(,,S,90)は上りな矢のパワーシンボルを作ります。

make amplifier.pdf

時々Circuit-Macrosを使えばトライ&エラーが必要です。 しかし究極の回路図がすてきです。

この記事からのファイルはダウンロードが出来ます。

0 comments



(optional field)
(optional field)
Answer "bonobo" here to fight spam. ここに「bonobo」を答えてください。SPAMを退治しましょう!
I reserve the right to delete or edit comments in any way and for any reason.