発言者: apm
発言日: 2008 08/27 17:33
発言元: ntsitm389066.sitm.nt.ftth.ppp.infoweb.ne.jp
emCircuit.sty ならば有りました。
% emCircuit.sty by tDB(emath@nifty.ne.jp)
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{emCircuit}[2007/04/22 v 0.02゚逅餐]%
%
\DeclareOption{notMy}{\def\not@My{}}%
\DeclareOption{dviout}{\def\em@grdrv{dviout}}%
\DeclareOption{dvips}{\def\em@grdrv{dvips}}%
\DeclareOption{dvipdfm}{\def\em@grdrv{dvipdfm}}%
\DeclareOption{dvipdfmx}{\def\em@grdrv{dvipdfmx}}%
\DeclareOption{EMdvipsk}{\def\em@dvipsk{}}%
\DeclareOption{EMdvipdfm}{\def\em@dvipdfm{}}%
\DeclareOption{EMdvipdfmx}{\def\em@dvipdfmx{}}%
\DeclareOption{papersize}{\papersizetrue}
\ProcessOptions\relax
%
\RequirePackage{emathPxy}%
\RequirePackage{emathPp}%
\RequirePackage{multido}%
%
%\edef\emKairo@ul{.5mm}%
\edef\emC@labelopt{empty}%
\newdimen\cunitlength\cunitlength=.5mm\relax
%
\define@key{emCircuit}{kosuu}{\edef\ko@suu{#1}}%
\define@key{emCircuit}{type}{\edef\parts@type{#1}}%
\define@key{emCircuit}{height}{\setlength{\@tempdima}{#1}\edef\parts@H{\the\@tempdima}}%
\define@key{emCircuit}{width}{\setlength{\@tempdima}{#1}\edef\parts@W{\the\@tempdima}}%
\define@key{emCircuit}{pos}{\def\@pos{#1}}%
\define@key{emCircuit}{label}{\def\emC@label{#1}}%
\define@key{emCircuit}{currentlength}{\edef\emcurrent@length{#1}}%
\define@key{emCircuit}{currentheight}{\edef\emcurrent@height{#1}}%
\define@key{emCircuit}{labeloption}{\EMxdefappend\emC@labelopt{,#1}}%
\define@key{emCircuit}{partsoption}{\EMedef\parts@option{#1}}%
\define@key{emCircuit}{yazirusi}[a]{\def\yazirusi@opt{#1}}%
\define@key{emP}{cul}{\cunitlength=#1\relax}%
%
\def\emCtype#1{%
%
\def\emCtype@sep##1<##2>\@nil{%
\edef\parts@type{##1}\edef\parts@option{##2}%
}%
%
\Strchr{#1}{<}\emCtype@tmp
\ifnum\emCtype@tmp>\z@
\emCtype@sep#1\@nil%\parts@type\parts@option
\else
\EMedef\parts@type{#1}%
\edef\parts@option{\empty}%
\fi
\ifthenelse{\equal{\parts@type}{coil}}{\edef\emC@type{0}}{%
\ifthenelse{\equal{\parts@type}{resistor}}{\edef\emC@type{1}}{%
\ifthenelse{\equal{\parts@type}{condenser}}{\edef\emC@type{2}}{%
\ifthenelse{\equal{\parts@type}{battery}}{\edef\emC@type{3}}{%
\ifthenelse{\equal{\parts@type}{switch}}{\edef\emC@type{4}}{%
\ifthenelse{\equal{\parts@type}{meter}}{\edef\emC@type{5}}{%
\ifthenelse{\equal{\parts@type}{current}}{\edef\emC@type{6}}{%
\ifthenelse{\equal{\parts@type}{bresistor}}{\edef\emC@type{7}}{%
\ifthenelse{\equal{\parts@type}{diode}}{\edef\emC@type{8}}{%
\ifthenelse{\equal{\parts@type}{transistor}}{\edef\emC@type{9}}{%
\ifthenelse{\equal{\parts@type}{earphone}}{\edef\emC@type{10}}{%
\ifthenelse{\equal{\parts@type}{earth}}{\edef\emC@type{11}}{%
\errmessage{パ・踉札弔量裲ケ前:\parts@type は未定義です}}%
}%
}%
}%
}%
}%
}%
}%
}%
}%
}%
}%
}%
\def\emCircuit{%
\def\emresistor{\@ifnextchar<{\@emresistor}{\@emresistor<\empty>}}%
\def\@emresistor<##1>{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\edef\ko@suu{4}%
\edef\parts@type{\empty}%
\edef\parts@H{\empty}%
\edef\parts@W{\empty}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\ifx\empty\parts@H\else
\setlength{\@tempdima}{\parts@H}%
\setlength{\yunitlength}{0.25\@tempdima}%
\fi
\IMul{4}\ko@suu\resistor@e
\IMul{2}\ko@suu\resistor@c
\ifx\empty\parts@W\else
\calcval{1/(4*\ko@suu)}\emr@tmp
\setlength{\@tempdima}{\parts@W}%
\setlength{\xunitlength}{\emr@tmp\@tempdima}%
\fi
\begin{picture}(0,0)\relax
\Nuritubusi[0]{(-\resistor@c,-4)(\resistor@c,-4)(\resistor@c,4)(-\resistor@c,4)}%
\multido{\ix=-\resistor@c+4}{\ko@suu}{\Put{(\ix,0)}{\Drawlines{(0,0)(1,4)(3,-4)(4,0)}}}%
\getOrgP{(0,4)}\resT
\ifx\empty\parts@type
\else
\Hamidasisenbun<yazirusi=a>{(-\resistor@c,-5)}{(\resistor@c,5)}{\cunitlength}{\cunitlength}%
\fi
\end{picture}\relax
}}%
\def\embresistor{\@ifnextchar<{\@embresistor}{\@embresistor<\empty>}}%
\def\@embresistor<##1>{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\edef\ko@suu{4}%
\edef\parts@type{\empty}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\IMul{2}\ko@suu\resistor@c
\begin{picture}(0,0)\relax
\Nuritubusi[0]{(-\resistor@c,-3)(\resistor@c,-3)(\resistor@c,3)(-\resistor@c,3)}%
\Takakkei{(-\resistor@c,-3)(\resistor@c,-3)(\resistor@c,3)(-\resistor@c,3)}%
\getOrgP{(0,3)}\resT
\ifx\empty\parts@type
\else
\Hamidasisenbun<yazirusi=a>{(-\resistor@c,-5)}{(\resistor@c,5)}{2\cunitlength}{2\cunitlength}%
\fi
\end{picture}\relax
}}%
%
\def\emcoil{\@ifnextchar<{\@emcoil}{\@emcoil<\empty>}}%
\def\@emcoil<##1>{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\sironukifalse
\edef\ko@suu{4}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\IMul{4}\ko@suu\coil@w
\IMul{2}\ko@suu\coil@hw
\Nuritubusi[0]{(-\coil@hw,-4)(\coil@hw,-4)(\coil@hw,4)(-\coil@hw,4)}%
\EMbane{(-\coil@hw,0)}{(\coil@hw,0)}{4}{\ko@suu}%
}}%
%
\def\embattery{\@ifstar{\embattery@}{\@embattery}}%
\def\@embattery{\@ifnextchar<{\@@embattery}{\@@embattery<\empty>}}%
\def\@@embattery<##1>{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\edef\ko@suu{1}%
\typeout{embattery:arg1=##1}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\Mul\ko@suu{5}\emb@w%% 2n*(2.5)
\Sub\emb@w{2.5}\emb@w% (2n-1)*(2.5)
\Div\emb@w{2}\emb@hw
\Nuritubusi[0]{(-\emb@hw,-4)(\emb@hw,-4)(\emb@hw,4)(-\emb@hw,4)}%
\Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i <\ko@suu}{\Addself\emb@x{2.5}}\do{%
\Addself\emb@x{2.5}%
\Incr\emb@i
\Drawline{(\emb@x,-4)(\emb@x,4)}\relax
}%
\allinethickness{1pt}\relax
\Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i<\ko@suu}{\Addself\emb@x{5}}\do{%
\Incr\emb@i
\Drawline{(\emb@x,-2)(\emb@x,2)}\relax
}%
}}%
\def\embattery@{\@ifnextchar<{\embattery@@}{\embattery@@<\empty>}}%
\def\embattery@@<##1>{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\edef\ko@suu{1}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\Mul\ko@suu{5}\emb@w%% 2n*(2.5)
\Sub\emb@w{2.5}\emb@w% (2n-1)*(2.5)
\Div\emb@w{2}\emb@hw
\Nuritubusi[0]{(-\emb@hw,-4)(\emb@hw,-4)(\emb@hw,4)(-\emb@hw,4)}%
\Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i<\ko@suu}{\Addself\emb@x{5}}\do{%
\Incr\emb@i
\Drawline{(\emb@x,-4)(\emb@x,4)}\relax
}%
\allinethickness{1pt}\relax
\Cfor{\edef\emb@i{0}\edef\emb@x{-\emb@hw}}{\emb@i <\ko@suu}{\Addself\emb@x{2.5}}\do{%
\Addself\emb@x{2.5}%
\Incr\emb@i
\Drawline{(\emb@x,-2)(\emb@x,2)}\relax
}%
}}%
%
\def\emcondenser{\@ifnextchar<{\@emcondenser}{\@emcondenser<\empty>}}%
\def\@emcondenser<##1>{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\edef\parts@type{\empty}%
\edef\parts@H{\empty}%
\edef\parts@W{\empty}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\begin{picture}(0,0)%
\Nuritubusi[0]{(-1.25,-4)(1.25,-4)(1.25,4)(-1.25,4)}%
\Drawline{(-1.25,-4)(-1.25,4)}%
\Drawline{(1.25,-4)(1.25,4)}%
\ifx\empty\parts@type
\else
\Hamidasisenbun<yazirusi=a>{(-4,-4)}{(4,4)}{\cunitlength}{\cunitlength}%
\fi
\end{picture}
}}%
%
\def\emdiode{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\Nuritubusi[0]{(-3,3)(-3,-3)(3,-3)(3,3)}
\Nuritubusi[1]{(-3,3)(-3,-3)(3,0)}
{\thicklines\Drawline{(3,-3)(3,3)}}%
}}%
%
\def\emmeter{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\Nuritubusi[0]{(-6,-6)(6,-6)(6,6)(-6,6)}%
\En\O{6}\relax
}}%
%
\def\emtransistor{\@ifnextchar<{\@emtransistor}{\@emtransistor<\empty>}}%
\def\@emtransistor<##1>{{%
\edef\parts@type{pnp}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\begin{picture}(0,0)\relax
\edef\emtr@r{12}%
\tenretu*{emtr@C(0,-6);emtr@EO(-3,-10);emtr@CO(3,-10);emtr@BO(0,-10);emtrB@(0,-18)}%
\Candk\emtr@C\emtr@r{(0,0)}{0}\emtrE@\emtrC@
\En*[0]\emtr@C\emtr@r
\En\emtr@C\emtr@r
{\allinethickness{1.2pt}\hamidasisenbun\emtr@EO\emtr@CO{.5}{.5}}%
\ifthenelse{\equal\parts@type{pnp}}{%
\kansan{.6pt}{\cunitlength}\emtr@tmp
\Addvec\emtr@EO{(0,\emtr@tmp)}\emtr@EOO
\Drawline<yazirusi=r>{\emtr@EOO\emtrE@}%
\Drawline{\emtr@CO\emtrC@}%
\getOrgP{\emtrC@}\emtrC
\getOrgP{\emtrE@}\emtrE
}{%
\Drawline{\emtr@EO\emtrE@}%
\Drawline<yazirusi=a>{\emtr@CO\emtrC@}%
\getOrgP{\emtrC@}\emtrE
\getOrgP{\emtrE@}\emtrC
}%
\Drawline{\emtr@BO\emtrB@}%
\getOrgP{\emtrB@}\emtrB
\end{picture}\ignorespaces
}}%
%
\def\emearphone{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\begin{picture}(0,0)\relax
\Nuritubusi[0]{(-3,-6)(-3,6)(3,6)(3,-6)}%
\Takakkei{(-2,-6)(-2,6)(2,6)(2,-6)}%
\Drawlines{(-3,-6)(-3,6);(3,-6)(3,6)}%
{\thicklines
\En{(0,-12)}{3}
\Takakkei{(-3,-7)(-3,-9)(3,-9)(3,-7)}%
}%
\Nuritubusi[0]{(-3,-7)(-3,-9)(3,-9)(3,-7)}%
\En*[0]{(0,-12)}{3}
\end{picture}
}%
%
\def\emearth{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\Drawline{(0,-4)(0,4)}%
\Nuritubusi*[-45]<syanuriKankaku=.5mm>{(0,-4)(0,4)(4,4)(4,-4)}%
}%
%
\def\emcurrent@length{6mm}%
\def\emcurrentlength##1{\edef\emcurrent@length{##1}}%
\def\emcurrent{\@ifnextchar<{\@emcurrent}{\@emcurrent<\empty>}}%
%\def\@emcurrent<##1>{\@ifnextchar[{\@@emcurrent<##1>}{\@@emcurrent<##1>[\empty]}}%
%\def\@@emcurrent<##1>[##2]{{%
\def\@emcurrent<##1>{{%
\edef\current@str{}%
\edef\yazirusi@opt{a}%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
\@tempdima=6\cunitlength
\edef\emcurrent@height{\the\@tempdima}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\@tempdima=\emcurrent@length
\ukansan{.5\@tempdima}\emcurrent@hw
\edef\yazirusi@opt@{\yazirusi@opt}%
\HenKo<henkotype=parallel,yazirusi=\yazirusi@opt@,henkoH=\emcurrent@height>{(-\emcurrent@hw,0)}{(\emcurrent@hw,0)}{}%
% \begin{picture}(0,0)\relax
% \edef\yazirusi@opt@{\yazirusi@opt}%
% \HenKo<henkotype=parallel,yazirusi=\yazirusi@opt@,henkoH=\emcurrent@height>{(-\emcurrent@hw,0)}{(\emcurrent@hw,0)}{}%
% \end{picture}%
}}%
\def\emswitch{{%
\setlength{\unitlength}{\cunitlength}%
\setlength{\xunitlength}{\cunitlength}%
\setlength{\yunitlength}{\cunitlength}%
% \rtenretu*{emswitchA(3,-120);emswitchB(3,-60)}%
\begin{picture}(0,0)\relax
\Nuritubusi[0]{(-6,-1)(6,-1)(6,5)(-6,5)}%
\Drawline{(-6,0)(6,5)}%
\siromaru{(-6,0);(6,0)}%
% \Put{(6,5)}{\Takakkei{\O\emswitchA\emswitchB}}%
\end{picture}%
}}%
%
\def\getOrgP##1##2{%
\Kaiten{(0,0)}{##1}\Putparts@arg\getorg@tmp
\vecXY{\getorg@tmp}\getorgP@x\getorgP@y
\setlength{\@tempdima}{\getorgP@x\xunitlength}\kansan\@tempdima\org@ul\getorgP@x@
\setlength{\@tempdima}{\getorgP@y\yunitlength}\kansan\@tempdima\org@ul\getorgP@y@
\Addvec{\Putparts@P}{(\getorgP@x@,\getorgP@y@)}\getorg@P\xdef##2{\getorg@P}}%
%
\def\Putparts{\def\Putparts@r{1}\@ifstar{\Putparts@}{\@Putparts}}%
\def\Putparts@{\def\Putparts@r{0}\@Putparts}%
\def\@Putparts{\@ifnextchar<{\@@Putparts}{\@@Putparts<\empty>}}%
\def\@@Putparts<##1>##2##3##4{{%
% ##1 : key = val
% pos
% ##2 : パ・踉札ト
% ##3 : 始点
% ##4 : 終点
\edef\org@ul{\the\unitlength}%
\emCtype{##2}%
\ifnum\emC@type=11
\edef\@pos{1}%
\Drawline{##3##4}%
\else
\edef\@pos{.5}%
\fi
\edef\emC@labelopt{\empty}%
% \edef\parts@option{\empty}%
\ifx\empty ##1\else\setkeys{emCircuit}{##1}\fi
\Sub{1}{\@pos}{\@pos@}
\Subvec{##4}{##3}\Putparts@v
\Argvec\Putparts@v\Putparts@arg
\Bunten{##3}{##4}{\@pos}{\@pos@}\Putparts@P
\ifnum\Putparts@r>\z@
\ifx\empty\parts@option
\Put\Putparts@P(0,0)[c]{\rotatebox{\Putparts@arg}{\csname em\parts@type\endcsname}}%
\else
\def\parts@cmd{\csname em\parts@type\endcsname}%
\edef\parts@opt{<\parts@option>}%
\Put\Putparts@P(0,0)[c]{\rotatebox{\Putparts@arg}{\expandafter\parts@cmd\parts@opt}}%
\fi
\else
\Put\Putparts@P(0,0)[c]{\csname em\parts@type\endcsname}%
\fi
\@ifundefined{emC@label}{}{%
\ifcase\emC@type% emCtype=0 (coil)
\def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=1 (registor)
\def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=2 (condenser)
\def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=3 (battery)
\def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=4 (switch)
\def\emC@labelopt@{henkoH=-2.5\cunitlength-.6667em,putoption={(0,0)[c]}}%
\or% emCtype=5 (meter)
\def\emC@labelopt@{henkoH=0pt,putoption={(0,0)[c]}}%
\or% emCtype=6 (current)
\def\emC@labelopt@{henkoH=6\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=7 (bresistor)
\def\emC@labelopt@{henkoH=3\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=8 (diode)
\def\emC@labelopt@{henkoH=2\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=9 (transistor)
\def\emC@labelopt@{henkoH=2\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=10 (earphone)
\def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
\or% emCtype=11 (earth)
\def\emC@labelopt@{henkoH=4\cunitlength+.6em,putoption={(0,0)[c]}}%
\fi
\EMedef\emC@labelopt@@{sironuki=false,henkotype=parallel,putpos=\@pos,\emC@labelopt@}%
\ifx\empty\emC@labelopt\else\EMedefappend\emC@labelopt@@{,\emC@labelopt}\fi
\EMedef\emC@labeloption{[0]<\emC@labelopt@@>}
\expandafter\HenKo\emC@labeloption{##3}{##4}{\emC@label}%
}%
}}%
%
\begin{zahyou*}}
%
\def\endemCircuit{\end{zahyou*}}
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
v 0.00゚逅餐 2007/03/24
v 0.01゚逅餐 2007/03/25 パ・踉札弔ヒ transistor を追加
\Putparts で指定した部品が存在しないときは,エラ・踉擦箸垢襦」
パ・踉札弔鯢漸茲垢覿表蟶舵厳呂砲「韻訶世 emCircuit座標系に変換する\getOrgP
v 0.02゚逅餐 2007/04/22 パ・踉札弔ヒ earphone, eartch を追加
▼関連発言
│
└◆7462:emCircuitのプリントアウト [TM] 08/26 22:31
└◆7463:Re:emCircuitのプリントアウト [tDB] 08/27 13:03
└◆7467:Re[2]:emCircuitのプリントアウト [apm] 08/27 17:33
└◆7468:Re[3]:emCircuitのプリントアウト [石原 守] 08/27 17:54
└◆7469:Re[4]:emCircuitのプリントアウト [tDB] 08/27 19:39
└◆7470:Re[5]:emCircuitのプリントアウト [TM] 08/27 22:37<-last