summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/circ/circ.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/circ/circ.sty')
-rw-r--r--Master/texmf-dist/tex/latex/circ/circ.sty699
1 files changed, 699 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/circ/circ.sty b/Master/texmf-dist/tex/latex/circ/circ.sty
new file mode 100644
index 00000000000..40e05792993
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/circ/circ.sty
@@ -0,0 +1,699 @@
+%%
+%% This is file `circ.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% circ.dtx (with options: `code')
+%% CIRC is a LaTeX package to typeset circuit and optics diagrams.
+%% Copyright (C) 1997,1998,2003 Sebastian Tannert and Andreas Tille
+%%
+%% This program is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation; either version 2 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+%%
+%% For error reports concerning UNCHANGED versions of this file no
+%% more than one year old, see CIRC.DVI after installation.
+%% If installation fails search thru this file for 'bug'.
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{circ}
+ [1997/04/23 v1.0d for typeset circuit diagrams]
+\DeclareOption*{\InputIfFileExists{\CurrentOption.def}{}%
+ {\PackageError{CIRC}{File \CurrentOption.def not found.}%
+ {Check spelling or think about the
+ location of file.\MessageBreak
+ I tried to load macros for the CIRC package.}}}
+\def\freecirc{\chardef\CIRCinternals\the\catcode`\*\catcode`\*=11
+ \chardef\cc@lb\the\catcode`\[
+ \chardef\cc@rb\the\catcode`\]
+ \chardef\cc@at\the\catcode`\@
+ \catcode`\[=11\catcode`\]=11\catcode`\@=11 }
+\def\protectcirc{\catcode`\[=\cc@lb\catcode`\]=\cc@rb\catcode`\@=\cc@at
+ \catcode`\*=\CIRCinternals\relax}
+\freecirc
+\newif\ifshowpoints
+\showpointsfalse
+\newif\iflab*
+\lab*true
+\newif\ifval*
+\val*true
+\newif\ifld*
+\ld*false
+\newif\ifcc*
+\cc*false
+\newif\ifpin
+\pintrue
+\newif\ifxoutofgrid
+\newif\ifyoutofgrid
+\xoutofgridfalse
+\youtofgridfalse
+\newif\ifcen*
+\cen*false
+\newif\ifhvcen*
+\hvcen*false
+\newif\ifcheck*
+\newdimen\X*max
+\newdimen\X*min
+\newdimen\*X*
+\newdimen\*Y*
+\newdimen\**X
+\newdimen\**Y
+\newdimen\***X
+\newdimen\***Y
+\newbox\*bbox
+\newbox\box*
+\newdimen\ic*
+\newdimen\ht*
+\newdimen\wd*
+\newdimen\dp*
+\newcount\cc*
+\newdimen\*spc
+\newtoks\ldd* %linke untere Beschriftung
+\newtoks\rud* %rechte obere Beschriftung
+\newtoks\llpos*
+\newtoks\ldpos*
+\newtoks\rlpos*
+\newtoks\rdpos*
+\newtoks\ulpos*
+\newtoks\udpos*
+\newtoks\dlpos*
+\newtoks\ddpos*
+\newcount\cnta*
+\newcount\cntb*
+\newtoks\name* %Bauelementname
+\newtoks\ld*pin %Bezeichnung linker Anschlu"s
+\newtoks\ru*pin % ...
+\newtoks\m*pin % ...
+\newtoks\rmacros
+\newdimen\outerspace
+\newtoks\*Ilist
+\newtoks\*Olist
+
+\newdimen\pin*spc
+\newdimen\pin*ind
+\newdimen\io*ind
+\newdimen\mid*ind
+\newdimen\pinnum*spc
+\def\CIRCredef{}
+\def\safedef#1{\expandafter\ifx\csname#1\endcsname\relax
+\toks0{\expandafter\def\csname#1\endcsname}\else
+\edef\CIRCredef{\CIRCredef\expandafter\string\csname#1\endcsname\space}%
+\toks0{\expandafter\def\csname.#1.\endcsname}\rmacros
+\expandafter{\the\rmacros\let}\rmacros\expandafter\expandafter\expandafter
+{\expandafter\the\expandafter\rmacros\csname#1\endcsname}\rmacros\expandafter
+\expandafter\expandafter
+{\expandafter\the\expandafter\rmacros\csname.#1.\endcsname}\fi
+\the\toks0}
+\def\safedefs#1{\expandafter\ifx\csname#1\endcsname\relax
+\toks0{\expandafter\def\csname#1\endcsname}\else
+\edef\CIRCredef{\CIRCredef\expandafter\string\csname#1\endcsname\space}%
+\toks0{\expandafter\def\csname.#1.\endcsname}\rmacros
+\expandafter{\the\rmacros\let}\rmacros\expandafter\expandafter\expandafter
+{\expandafter\the\expandafter\rmacros\csname#1\endcsname}\rmacros\expandafter
+\expandafter\expandafter
+{\expandafter\the\expandafter\rmacros\csname.#1.\endcsname}\fi
+\the\toks0 }
+\def\getc*#1 {\advance\cc* by #1%
+ \ifcc*
+ \toks0\ldd*\ldd*\rud*\rud*\toks0
+ \ifval*
+ \iflab*\val*true\else\val*false\fi
+ \lab*true
+ \else
+ \iflab*\val*true\else\val*false\fi
+ \lab*false
+ \fi
+ \fi
+ \global\setbox\box*=\hbox{\char\cc*\/\global\ic*=\lastkern\unkern}%
+ \global\ht*\ht\box*\global\wd*\wd\box*\global\dp*\dp\box*}
+\def\check*max#1{\dimen0=#1\advance\dimen0\*X*
+ \ifdim\dimen0>\X*max\global\X*max\dimen0\fi}
+\def\check*X{\ifcheck*\ifdim\*X*<\X*min\global\X*min\*X*\fi
+ \ifdim\*X*>\X*max\global\X*max\*X*\fi\fi}
+\def\check*min#1{\dimen0=-#1\advance\dimen0\*X*
+ \ifdim\dimen0<\X*min\global\X*min\dimen0\fi}
+\def\check*#1{\check*min{#1}\check*max{#1}}
+\def\check*cen{\ifcen*\errhelp{Use `\hcenterto' or `\vcenterto'.}%
+ \errmessage{You can't use `\string\centerto' to center `\the\name*'}\fi}
+\def\put*box{\hbox to 0pt{\kern\*X*\raise\*Y*\box\*bbox\hss}}
+\def\hc*#1{\hbox to 0pt{\hss#1\hss}}
+\def\vc*#1{\vbox to 0pt{\vss#1\vss}}
+\def\tlap#1{\vbox to 0pt{\vss#1}}
+\def\blap#1{\vbox to 0pt{#1\vss}}
+\def\ac*#1{\vc*{\hc*{#1}}}
+\def\reset*ifs{\ld*false\cen*false\hvcen*false\lab*true\val*true\cc*false}
+\def\store*XY#1{\ifshowpoints\message{#1}\fi
+ \expandafter\xdef\csname#1\endcsname{\*X*\the\*X*\*Y*\the\*Y*}}
+\def\save*XY{\**X\*X*\**Y\*Y*}
+\def\save*xy{\***X\*X*\***Y\*Y*}
+\def\restore*XY{\*X*\**X\*Y*\**Y}
+\def\restore*xy{\*X*\***X\*Y*\***Y}
+\def\diff*XY{\advance\**X-\*X*\advance\**Y-\*Y*}
+\def\centerto#1 {\cen*true\save*XY\frompin#1: }
+\def\hcenterto#1 {\hvcen*true\**Y\*Y*\frompin#1: \*Y*\**Y}
+\def\vcenterto#1 {\hvcen*true\**X\*X*\frompin#1: \*X*\**X}
+\def\do*Ilist{\ifshowpoints\message{|<}\fi
+ \check*true
+ \save*XY\the\*Ilist\ifshowpoints\message{>|}\fi\restore*XY\*Ilist={}}
+\def\shift*Ilist#1{\ifshowpoints\message{|<}\fi
+ \check*false
+ \save*XY\the\*Ilist\frompin{\the\name*#1}
+ \ifshowpoints\message{| shift \the\name*#1 |}\fi
+ \advance\**X\**X\advance\**X-\*X*\*X*\**X
+ \advance\**Y\**Y\advance\**Y-\*Y*\*Y*\**Y
+ \check*true
+ \save*XY\the\*Ilist\restore*XY
+ \ifshowpoints\message{>|}\fi\*Ilist={}}
+\def\shift*IOlist#1{\ifshowpoints\message{|<}\fi
+ \check*false
+ \save*XY\the\*Ilist\restore*XY\advance\*X*\wd\*bbox\the\*Olist
+ \frompin{\the\name*#1}
+ \ifshowpoints\message{| shift \the\name*#1 |}\fi
+ \advance\**X\**X\advance\**X-\*X*\*X*\**X
+ \advance\**Y\**Y\advance\**Y-\*Y*\*Y*\**Y
+ \check*true
+ \save*XY\the\*Ilist\restore*XY\advance\*X*\wd\*bbox\the\*Olist
+ \restore*XY\ifshowpoints\message{>|}\fi\*Ilist={}\*Olist={}}
+\def\Ladd*x#1#2{\dimen9=#2%
+ \edef\next{{\the#1\advance\*X*\the\dimen9 }}%
+ \global#1\next}
+\def\Ladd*y#1#2{\dimen9=#2%
+ \edef\next{{\the#1\advance\*Y*\the\dimen9 }}%
+ \global#1\next}
+\def\Lstore*#1#2{\edef\next{{\the#1\noexpand\store*XY{\the\name*#2}}}%
+ \global#1\next}
+\def\Lstopos*#1{\global#1\expandafter{\the#1\save*xy}}
+\def\Lrstpos*#1{\global#1\expandafter{\the#1\restore*xy}}
+\def\LX*check#1{\global#1\expandafter{\the#1\check*X}}
+\def\add*x{\Ladd*x\*Ilist}
+\def\add*y{\Ladd*y\*Ilist}
+\def\store*{\Lstore*\*Ilist}
+\def\stopos*{\Lstopos*\*Ilist}
+\def\rstpos*{\Lrstpos*\*Ilist}
+\def\X*check{\LX*check\*Ilist}
+\def\Cadd*#1{\Ladd*y#1{-\pin*spc}}
+\def\Cstore*#1#2{\ifx{#2}*\else\Lstore*#1{#2}\fi}
+\def\frompin#1 {\expandafter\ifx\csname#1\endcsname\relax
+ \errhelp{Check spelling! Look up in the description of circuits.}%
+ \errmessage{Point >#1< is not defined}\else\csname#1\endcsname\fi}
+\let\atpin\frompin
+\def\h*twopins#1{\getc*#1 \ifcen*\*Y*\**Y\hvcen*true\fi
+\wd\box*=.5\wd*
+\advance\ht*\*spc
+\X*check\store*{\the\ld*pin}\add*x{.5\wd*}\store*:\add*x{.5\wd*}%
+\store*{\the\ru*pin}\X*check
+\ifhvcen*\shift*Ilist:\else\ifld*\shift*Ilist{\the\ru*pin}\else\do*Ilist\fi\fi
+\labelfont
+\setbox0=\hbox{\the\rud*}\setbox1=\hbox{\the\ldd*}%
+\**X\*X*\advance\*X*.5\wd*
+\iflab*\check*{.5\wd0}\fi%
+\ifval*\check*{.5\wd1}\fi%
+\*X*\**X
+\setbox\*bbox=\hbox{\box\box*
+ \iflab*\raise\ht*\hc*{\unhbox0}\fi
+ \ifval*\lower\dp*\vtop{\kern\*spc\hc*{\unhbox1}}\fi
+ \add*cmds}%
+\put*box
+\ifld*\else\advance\*X*\wd*\fi\reset*ifs}
+\def\v*twopins#1{\getc*#1 \ifcen*\*X*\**X\hvcen*true\fi
+\labelfont
+\setbox0=\hbox{\ifval*\the\ldd*\kern\*spc\fi\kern\dp*}\dimen1\wd0
+\setbox1=\hbox{\kern\wd*\iflab*\kern\*spc\the\rud*\fi}\dimen0\wd1
+\dp0=0pt\dp1=0pt
+\wd\box*=0pt\dp\box*=0pt
+\setbox\*bbox=\hbox{\box\box*
+ \raise.5\ht*\hbox{\vc*{\hbox{\llap{\box0}\rlap{\box1}}}\add*cmds}}%
+\store*{\the\ld*pin}\add*y{.5\ht*}\store*:\add*y{.5\ht*}\store*{\the\ru*pin}%
+\ifhvcen*\shift*Ilist:\else\ifld*\shift*Ilist{\the\ru*pin}\else\do*Ilist\fi\fi
+\check*X
+\check*max{\dimen0}%
+\check*min{\dimen1}%
+\put*box
+\ifld*\else\advance\*Y*\ht*\fi\reset*ifs}
+\def\ii*#1 {\if#1h\ld*pin{l}\ru*pin{r}\h*twopins0\relax\else
+ \if#1v\ld*pin{b}\ru*pin{t}\v*twopins1\relax\else
+ \if#1u\ld*pin{b}\ru*pin{t}\v*twopins1\relax\else
+ \if#1d\ld*pin{b}\ru*pin{t}\ld*true\v*twopins1\relax\else
+ \if#1l\ld*pin{l}\ru*pin{r}\ld*true\h*twopins0\relax\else
+ \if#1r\ld*pin{l}\ru*pin{r}\h*twopins0\relax\else
+ \errhelp{Direction >h<, >v<, >l<, >u<, >r< or >d< expected.}%
+ \errmessage{Bad direction specified! You typed:>#1<.}%
+ \fi\fi\fi\fi\fi\fi}
+\def\change*pins{\toks0\ld*pin\ld*pin\ru*pin\ru*pin\toks0}
+\def\CiRCl{1}\def\CiRCr{2}\def\CiRCu{3}\def\CiRCd{4}
+\def\CiRCL{5}\def\CiRCR{6}\def\CiRCU{7}\def\CiRCD{8}
+\def\CIRCiErr{\PackageError{CIRC}{Internal Error}%
+ {You are great, please send all files to the author and wait for
+ answer.}}
+\def\iv*#1 #2 {\cnta*=0\csname CiRC#2\endcsname\relax
+ \ifnum\cnta*=0
+ \PackageError{CIRC}{Bad direction}%
+ {Please check spelling}\fi
+ \ifcase\CIRCpintoN{#1}\relax\CIRCiErr \or
+ \ifcase\cnta*
+ \CIRCiErr\or\<\change*pins\h*twopins2\relax
+ \or\h*twopins0\relax
+ \or\v*twopins1\relax
+ \or\change*pins\<\v*twopins3\relax\else
+ \PackageError{CIRC}{Bad direction}%
+ {Please check spelling, only [l r u d] expected}\fi\or
+ \ifcase\cnta*
+ \CIRCiErr\or\<\h*twopins0\relax
+ \or\change*pins\h*twopins2\relax
+ \or\change*pins\v*twopins3\relax
+ \or\<\v*twopins1\relax\else
+ \PackageError{CIRC}{Bad direction}%
+ {Please check spelling, only [l r u d] expected}\fi\fi}
+\def\iviv*#1 #2 {\cnta*=0\csname CiRC#2\endcsname\relax
+ \ifnum\cnta*=0
+ \PackageError{CIRC}{Bad direction}%
+ {Please check spelling}\fi
+ \ifcase\CIRCpintoN{#1}\relax\CIRCiErr \or
+ \ifcase\cnta*
+ \CIRCiErr\or\<\change*pins\h*twopins6\relax
+ \or\h*twopins0\relax
+ \or\v*twopins5\relax
+ \or\change*pins\<\v*twopins3\relax
+ \or\<\change*pins\h*twopins2\relax
+ \or\h*twopins4\relax
+ \or\v*twopins1\relax
+ \or\change*pins\<\v*twopins7\relax\fi\or
+ \ifcase\cnta*
+ \CIRCiErr\or\<\h*twopins0\relax
+ \or\change*pins\h*twopins6\relax
+ \or\change*pins\v*twopins3\relax
+ \or\<\v*twopins5\relax
+ \or\<\h*twopins4\relax
+ \or\change*pins\h*twopins2\relax
+ \or\change*pins\v*twopins7\relax
+ \or\<\v*twopins1\relax\fi\fi}
+\def\lviii*#1{\store*{\the\m*pin}\X*check
+ \add*x\wd*\stopos*\add*y{-\dp*}\store*{\the\ld*pin}\X*check
+ \rstpos*\add*y\ht*\store*{\the\ru*pin}\rstpos*
+ \dimen0\ht*\advance\dimen0-\dp*\add*y{.5\dimen0}\store*:
+ \rstpos*\add*x\ic*\X*check
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#1}\fi
+ \setbox\*bbox=\hbox{\labelfont
+ \the\llpos*\box\box*\the\ldpos*}\put*box}
+\def\rviii*#1{\store*{\the\m*pin}\X*check
+ \add*x{-\wd*}\stopos*\add*y\ht*\store*{\the\ru*pin}\X*check
+ \rstpos*\add*y{-\dp*}\store*{\the\ld*pin}\rstpos*
+ \dimen0\ht*\advance\dimen0-\dp*\add*y{.5\dimen0}\store*:
+ \rstpos*\add*x{-\ic*}\X*check
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#1}\fi
+ \setbox\*bbox=\hbox{\labelfont
+ \the\rdpos*\box\box*\the\rlpos*}\put*box}
+\def\dviii*#1{\store*{\the\m*pin}%
+ \add*y\dp*\stopos*\add*x\ic*\store*{\the\ru*pin}\X*check
+ \rstpos*\add*x{-\wd*}\store*{\the\ld*pin}\X*check
+ \rstpos*\dimen0-\wd*\advance\dimen0\ic*\add*x{.5\dimen0}\store*:
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#1}\fi
+ \wd\box*=0pt\dp\box*=0pt
+ \setbox\*bbox=\hbox{\labelfont
+ \the\dlpos*\box\box*\the\ddpos*}\put*box}
+\def\uviii*#1{\store*{\the\m*pin}%
+ \add*y{-\ht*}\stopos*\add*x\ic*\store*{\the\ru*pin}\X*check
+ \rstpos*\add*x{-\wd*}\store*{\the\ld*pin}\X*check
+ \rstpos*\dimen0-\wd*\advance\dimen0\ic*\add*x{.5\dimen0}\store*:
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#1}\fi
+ \wd\box*=0pt\ht\box*=0pt
+ \setbox\*bbox=\hbox{\labelfont
+ \the\ulpos*\box\box*\the\udpos*}\put*box}
+\def\viii*#1 #2 {\check*cen
+ \if#2l \getc*0 \lviii*{#1}\else
+ \if#2r \getc*1 \rviii*{#1}\else
+ \if#2d \getc*3 \dviii*{#1}\else
+ \if#2u \getc*2 \uviii*{#1}\else
+ \if#2L\change*pins\getc*4 \lviii*{#1}\else
+ \if#2R\change*pins\getc*5 \rviii*{#1}\else
+ \if#2D\change*pins\getc*7 \dviii*{#1}\else
+ \if#2U\change*pins\getc*6 \uviii*{#1}\else
+ \errhelp{Direction >l<, >r<, >u<, >d<, >L<, >R<, >U< or >D<
+ expected.}%
+ \errmessage{Bad direction >#2<}\fi\fi\fi\fi\fi\fi\fi\fi
+ \reset*ifs}
+\def\CIRCpintoN#1{\if\the\ld*pin#1 1\else
+ \if\the\ru*pin#1 2\else
+ \if\the\m*pin#1 3\else
+ \PackageError{CIRC}{Bad pin name}%
+ {Please check spelling or look up in the documentation}
+\fi\fi\fi}
+\def\cdef#1 #2 #3#4 {\safedef{#1}##1 ##2 {%
+ \name*{#1##1}\rud*{$#2_{##1}$}\ldd*{##2}\cc*#4 #3\ii*}}
+\def\cdefiv#1 #2 #3#4 #5 #6 {\safedef{#1}##1 ##2 {%
+ \name*{#1##1}\rud*{$#2_{##1}$}\ldd*{##2}\m*pin{@}%
+ \ld*pin{#5}\ru*pin{#6}\cc*#4 #3\iv*}}
+\def\cdefivNL#1 #2#3 #4 #5 {\safedef{#1}##1 ##2 {%
+ \name*{#1##1}\rud*{}\ldd*{##2}\ld*pin{#4}\ru*pin{#5}\m*pin{@}%
+ \cc*#3 #2\iv*}}
+\def\cdefiviv#1 #2 #3#4 #5 #6 {\safedef{#1}##1 ##2 {%
+ \name*{#1##1}\rud*{$#2_{##1}$}\ldd*{##2}\ld*pin{#5}\ru*pin{#6}\m*pin{@}%
+ \cc*#4 #3\iviv*}}
+\def\cdefivivNL#1 #2#3 #4 #5 {\safedef{#1}##1 ##2 {%
+ \name*{#1##1}\rud*{}\ldd*{##2}\ld*pin{#4}\ru*pin{#5}\m*pin{@}%
+ \cc*#3 #2\iviv*}}
+\def\cdefNL#1 #2#3 {\safedef{#1}##1 ##2 {%
+ \name*{#1##1}\rud*{}\ldd*{##2}\cc*#3 #2\ii*}}
+\def\cdefviii#1 #2 #3#4 #5 #6 #7 {\safedef{#1}##1 ##2 {\name*{#1##1}%
+ \rud*{$#2_{##1}$}\ldd*{##2}\ld*pin{#5}\m*pin{#6}\ru*pin{#7}\cc*#4 #3\viii*}}
+\def\cwdef#1 #2 {\safedef{#1}##1 ##2 {\cc*#2
+ \cnta*##1\toks2{}\toks4{}\dimen2=##1em\test*xygrid
+ \csname line*##2\endcsname}}
+\def\black*boxii#1 #2 #3 #4 #5 #6 #7 {\check*cen
+ \if#7h\getc*0
+ \store*{P1}\X*check\add*x{.5\wd*}\stopos*\X*check\store*:
+ \add*y\ht*\store*{P4}\rstpos*\add*y{-\dp*}\store*{P2}\rstpos*
+ \add*x{.5\wd*}\X*check\store*{P3}%
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#2}\fi
+ \setbox\*bbox=\hbox{\ifpin\pinnumberfont
+ \setbox0=\hbox{#3\kern\*spc}\check*min{\wd0}%
+ \raise\pinnum*spc\llap{#3\kern\*spc}%
+ \setbox0=\hbox{\kern\*spc\kern\wd*#5}\check*max{\wd0}\wd0=0pt
+ \raise\pinnum*spc\box0
+ \setbox0=\hbox{\kern\pinnum*spc\kern.5\wd*#6}\check*max{\wd0}\wd0=0pt
+ \dimen0\ht*\advance\dimen0\*spc
+ \raise\dimen0\box0
+ \setbox0=\hbox{\kern\pinnum*spc\kern.5\wd*#4}\check*max{\wd0}\wd0=0pt
+ \dimen0\dp*\advance\dimen0\*spc
+ \lower\dimen0\vtop{\kern0pt\box0}\fi
+ \hc*{\kern\wd*\ctextfont\vc*{\hbox{#1}}}\box\box*}\put*box\reset*ifs
+ \else\if#7v\getc*1
+ \store*{P4}\X*check\add*x{.5\wd*}\stopos*\X*check\store*:
+ \add*y\ht*\store*{P3}\rstpos*\add*y{-\dp*}\store*{P1}\rstpos*
+ \add*x{.5\wd*}\X*check\store*{P2}%
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#2}\fi
+ \setbox\*bbox=\hbox{\ifpin\pinnumberfont
+ \setbox0=\hbox{#6\kern\*spc}\check*min{\wd0}%
+ \raise\pinnum*spc\llap{#6\kern\*spc}%
+ \setbox0=\hbox{\kern\*spc\kern\wd*#4}\check*max{\wd0}\wd0=0pt
+ \raise\pinnum*spc\box0
+ \setbox0=\hbox{\kern\pinnum*spc\kern.5\wd*#5}\check*max{\wd0}\wd0=0pt
+ \dimen0\ht*\advance\dimen0\*spc
+ \raise\dimen0\box0
+ \setbox0=\hbox{\kern\pinnum*spc\kern.5\wd*#3}\check*max{\wd0}\wd0=0pt
+ \dimen0\dp*\advance\dimen0\*spc
+ \lower\dimen0\vtop{\kern0pt\box0}\fi
+ \hc*{\kern\wd*\ctextfont\vc*{\hbox{#1}}}\box\box*}\put*box\reset*ifs
+ \else\errhelp{Direction >h< or >v< expected.}%
+ \errmessage{ >#1< Bad direction specified}\fi\fi}
+\def\black*box#1 #2 #3 #4 #5 #6 {\black*boxii{#1} {#2} {#3} {#4} {#5} {#6} h }
+\def\sym*box#1 #2 {\check*cen
+ \getc*0
+ \store*{P1}\X*check\stopos*
+ \add*x{.5\wd*}\store*:\add*x{.5\wd*}\store*{P3}\X*check\rstpos*
+ \add*y{-1em}\store* b
+ \add*x{\wd*}\store* e\rstpos*
+ \add*y{1em}\store* a
+ \add*x{\wd*}\store* f\rstpos*
+ \add*x{.5\wd*}\stopos*
+ \add*y\ht*\store*{P4}%
+ \add*x{1em}\store* g
+ \rstpos*\add*y\ht*
+ \add*x{-1em}\store* h
+ \rstpos*\add*y{-\dp*}\store*{P2}%
+ \add*x{1em}\store* d
+ \rstpos*\add*y{-\dp*}%
+ \add*x{-1em}\store* c
+ \ifhvcen*\shift*Ilist:\else\shift*Ilist{#2}\fi
+ \setbox\*bbox=
+ \hbox{\hc*{\kern\wd*\ctextfont\vc*{\hbox{#1}}}\box\box*}\put*box
+ \reset*ifs}
+\def\bbdef#1 #2#3 {\safedef{#1}##1
+{\name*{#1##1}\cc*#3 #2\black*box}}
+\def\bbdefNeT#1 #2#3 #4 {\safedef{#1}##1
+{\name*{#1##1}\cc*#3#2\black*box{#4} }}
+\def\bbdefNeTii#1 #2#3 #4 {\safedef{#1}##1
+{\name*{#1##1}\cc*#3#2\black*boxii{#4} }}
+\def\sbdef#1 #2#3 #4 {\safedef{#1}##1
+{\name*{#1##1}\cc*#3#2\sym*box{#4} }}
+\cwdef wire {128\c*fnt}
+\cwdef dashed {120\c*fnt}
+\def\line*r{\check*X\ifnum\cnta*=0\else\check*max{\dimen2}\ifxoutofgrid
+ \advance\dimen2-.5\fontdimen6\c*fnt\fi
+ \setbox\*bbox=\hbox{\ifxoutofgrid\else\char\cc*\fi\advance\cc*1%
+ \loop\ifnum\cnta*>1\char\cc*
+ \advance\cnta*-1\repeat}\put*box
+ \advance\*X*.5\dimen2\the\toks2\advance\*X*.5\dimen2
+ \advance\cc*2\setbox\*bbox=\hbox{\char\cc*}\put*box\xoutofgridfalse\fi}
+\def\line*l{\advance\*X*-\dimen2
+ \ifxoutofgrid\advance\*X*.5\fontdimen6\c*fnt\fi
+ \**X\*X*\line*r\*X*\**X}
+\def\line*u{\check*X\ifnum\cnta*=0\else\advance\cc*4\ifyoutofgrid
+ \advance\dimen2-.5\fontdimen6\c*fnt\fi
+ \setbox\box*=\hbox{\char\cc*}\advance\cc*-1%
+ \setbox\*bbox=\vbox{\loop\ifnum\cnta*>1\copy\box*
+ \advance\cnta*-1\repeat
+ \ifyoutofgrid\else\hbox{\char\cc*}\fi}\put*box
+ \advance\*Y*.5\dimen2\the\toks4\advance\*Y*.5\dimen2
+ \advance\cc*2\setbox\*bbox=\vbox{\hbox{\char\cc*}}\put*box\youtofgridfalse\fi}
+\def\line*d{\advance\*Y*-\dimen2
+ \ifyoutofgrid\advance\*Y*.5\fontdimen6\c*fnt\fi
+ \**Y\*Y*\line*u\*Y*\**Y}
+\def\test*xygrid{\dimen9\fontdimen6\c*fnt\count@\dimen9
+ \cntb*\*X*\divide\cntb*\count@
+ \dimen0\*X*\advance\dimen0-\cntb*\dimen9
+ \advance\dimen9-.1pt
+ \ifdim\dimen0<0pt \dimen0-\dimen0 \fi
+ \ifdim\dimen0>0.1pt \ifdim\dimen0<\dimen9 \xoutofgridtrue\fi\fi
+ \cntb*\*Y*\divide\cntb*\count@
+ \dimen0\*Y*\advance\dimen0-\cntb*\fontdimen6\c*fnt
+ \ifdim\dimen0<0pt \dimen0-\dimen0 \fi
+ \ifdim\dimen0>0.1pt \ifdim\dimen0<\dimen9 \youtofgridtrue\fi\fi}
+\def\bundle#1 #2 #3 {\cc*136\c*fnt\cnta*#2\dimen2=#2em
+ \toks2{\setbox\box*=\hbox{\char134}%
+ \setbox\*bbox=\rlap{\raise\ht\box*
+ \hc*{\labelfont#1}\unhbox\box*}\put*box}%
+ \toks4{\setbox\*bbox=\hbox{\char135\labelfont
+ \vc*{\hbox{#1}}}%
+ \check*max{\wd\*bbox}\put*box}%
+ \test*xygrid\csname line*#3\endcsname}
+\def\wwire#1 #2 #3 {\cc*112\c*fnt\cnta*#2\dimen2=#2em
+ \toks2{\setbox\*bbox=\rlap{\raise\*spc
+ \hc*{\labelfont#1}}\put*box}%
+ \toks4{\setbox\*bbox=\hbox{\kern\*spc\labelfont
+ \vc*{\hbox{#1}}}%
+ \check*max{\wd\*bbox}\put*box}%
+ \test*xygrid\csname line*#3\endcsname}
+\def\by#1 {\def\by*cmd{#1}}
+\by{\wire}
+\def\calc*u{\cnta*\fontdimen6\c*fnt\advance\dimen0 .5\fontdimen6\c*fnt
+ \cntb*\dimen0\divide\cntb*\cnta*}
+\def\vtopin#1 {\save*XY\frompin{#1} \test*xygrid
+ \dimen0\**Y\advance\dimen0-\*Y*\restore*XY
+ \ifdim\dimen0<0pt\dimen0-\dimen0
+ \calc*u\by*cmd {\cntb*} u
+ \else\calc*u\by*cmd {\cntb*} d \fi}
+\def\htopin#1 {\save*XY\frompin{#1} \test*xygrid
+ \dimen0\**X\advance\dimen0-\*X*\restore*XY
+ \ifdim\dimen0<0pt\dimen0-\dimen0
+ \calc*u\by*cmd {\cntb*} r
+ \else\calc*u\by*cmd {\cntb*} l \fi}
+\safedef{Utext}#1 from #2 to #3 {{%
+ \frompin{#2} \save*XY\frompin{#3} \diff*XY
+ \ifdim\**X=0pt
+ \setbox1=\hbox{\c*fnt\char132}%
+ \ifdim\**Y<0pt
+ \dimen0-\**Y
+ \setbox0=\hbox{\c*fnt\char'373}\advance\dimen0-\ht0\dp0=0pt
+ \calc*u
+ \setbox\*bbox=
+ \vtop to -\**Y{\vfill\box0\loop\ifnum\cntb*>2\copy1
+ \advance\cntb*-1\repeat\vfill}%
+ \else
+ \dimen0\**Y
+ \setbox0=\hbox{\c*fnt\char'371}\advance\dimen0-\ht0\dp0=0pt
+ \calc*u
+ \setbox\*bbox=
+ \vbox to \**Y{\vfill\loop\ifnum\cntb*>2\copy1
+ \advance\cntb*-1\repeat\box0\vfill}%
+ \fi
+ \put*box\advance\*X*\*spc\advance\*Y*.5\**Y\put\vc*{\hbox{#1}}
+ \else
+ \ifdim\**Y=0pt
+ \ifdim\**X<0pt
+ \dimen0-\**X
+ \setbox0=\hbox{\c*fnt\char'372}\advance\dimen0-\wd0
+ \calc*u
+ \setbox\*bbox=\llap{\hbox to -\**X{\hfill\loop\ifnum\cntb*>2\char129
+ \advance\cntb*-1\repeat\box0\hfill}}%
+ \else
+ \dimen0\**X
+ \setbox0=\hbox{\c*fnt\char'370}\advance\dimen0-\wd0
+ \calc*u
+ \setbox\*bbox=\hbox to \**X{\hfill\box0\loop\ifnum\cntb*>2\char129
+ \advance\cntb*-1\repeat\hfill}%
+ \fi
+ \put*box\advance\*X*.5\**X\advance\*Y*\*spc\put\hc*{#1}
+ \else\errhelp{Only horizontal or vertical labeling allowed.}%
+ \errmessage{Bad points!}\fi\fi}}
+\safedef{centertext}#1 from #2 to #3 {%
+ {\frompin{#2} \save*XY\frompin{#3} \diff*XY
+ \ifdim\**X=0pt
+ \advance\*Y*.5\**Y\put\vc*{\hbox{#1}}
+ \else
+ \ifdim\**Y=0pt
+ \advance\*X*.5\**X\put\hc*{#1}
+ \else\errhelp{Only horizontal or vertical labeling allowed.}%
+ \errmessage{Bad points}\fi\fi}}
+\def\from#1 #2 {\c*fnt\*X*=#1em\*Y*=#2em\check*X}
+\let\at\from
+\def\moverel#1 #2 {\c*fnt\advance\*X* #1em\advance\*Y* #2em\check*X}
+\let\shift\moverel
+\safedef{put}#1 {\setbox\*bbox=\hbox{\ctextfont#1}\check*X
+ \check*max{\wd\*bbox}\put*box}
+
+\safedef{P}#1 {\store*XY{P#1}\check*X\reset*ifs}
+\safedefs{_} #1 #2 {\c*fnt\cnta*=0\csname CiRC#2\endcsname\relax
+ \ifnum\cnta*=0\relax
+ \PackageError{CIRC}{Bad direction}{Please check spelling}\fi
+ \ifcase \cnta* \relax
+ \or \advance\*X* -#1em
+ \or \advance\*X* #1em
+ \or \advance\*Y* #1em
+ \or \advance\*Y* -#1em
+ \or \advance\*X* -#1em
+ \or \advance\*X* #1em
+ \or \advance\*Y* #1em
+ \or \advance\*Y* -#1em \fi}
+\def\nl{\lab*false}
+\def\nv{\val*false}
+\def\cc{\cc*true}
+\def\clr*acmds{\global\let\add*cmds\relax}
+\def\*fdef#1 {\expandafter\xdef\csname#1\endcsname{\the\toks0}}
+\newtoks\CIRCfinit
+\CIRCfinit={}
+\def\addCIRCfont#1 {\expandafter\CIRCfinit=\expandafter{\the\CIRCfinit
+ \expandafter\font\csname CIRC#1\endcsname=#1 scaled \*mag}}
+\def\CIusefont#1#2#3{\fontencoding{\encodingdefault}\fontfamily{#1}%
+ \fontseries{\seriesdefault}\fontshape{\shapedefault}%
+ \fontsize{#2}{#3}\selectfont}
+\def\circuit#1 {\PackageInfo{CIRC}{`\CIRCredef' redefined}%
+ \let\add*cmds\relax
+ \*Ilist{}\*Olist{}\check*true
+ \xdef\*mag{\magstep{#1}}%
+ \global\X*max-\maxdimen
+ \global\X*min\maxdimen
+\ifcase#1 % magstep 0
+ \toks0={\CIusefont{\rmdefault}{10}{12pt}}%
+ \*fdef outlabelfont
+ \*fdef labelfont
+ \*fdef ctextfont
+ \toks0={\CIusefont{\sfdefault}{10}{12pt}}%
+ \*fdef symfont
+ \toks0={\CIusefont{\rmdefault}{7}{8pt}}%
+ \*fdef pinnumberfont
+ \*fdef functionfont
+ \toks0={\CIusefont{\rmdefault}{8}{9.5pt}}%
+ \*fdef circlabelfont
+ \toks0={\CIusefont{\sfdefault}{8}{9.5pt}}%
+ \*fdef inlabelfont
+\or % magstep 1
+ \toks0={\CIusefont{\rmdefault}{12}{14pt}}%
+ \*fdef outlabelfont
+ \*fdef labelfont
+ \*fdef ctextfont
+ \toks0={\CIusefont{\sfdefault}{12}{14pt}}%
+ \*fdef symfont
+ \toks0={\CIusefont{\rmdefault}{8}{9.5pt}}%
+ \*fdef pinnumberfont
+ \toks0={\CIusefont{\rmdefault}{9}{11pt}}%
+ \*fdef functionfont
+ \*fdef circlabelfont
+ \toks0={\CIusefont{\sfdefault}{9}{11pt}}%
+ \*fdef inlabelfont
+\or % magstep 2
+ \toks0={\CIusefont{\rmdefault}{14.4}{18pt}}%
+ \*fdef outlabelfont
+ \*fdef labelfont
+ \*fdef ctextfont
+ \toks0={\CIusefont{\sfdefault}{14.4}{18pt}}%
+ \*fdef symfont
+ \toks0={\CIusefont{\rmdefault}{9}{11pt}}%
+ \*fdef pinnumberfont
+ \toks0={\CIusefont{\rmdefault}{10}{12pt}}%
+ \*fdef functionfont
+ \*fdef circlabelfont
+ \toks0={\CIusefont{\sfdefault}{10}{12pt}}%
+ \*fdef inlabelfont
+\or % magstep 3
+ \toks0={\CIusefont{\rmdefault}{17.28}{22pt}}%
+ \*fdef outlabelfont
+ \*fdef labelfont
+ \*fdef ctextfont
+ \toks0={\CIusefont{\sfdefault}{17.28}{22pt}}%
+ \*fdef symfont
+ \toks0={\CIusefont{\sfdefault}{10}{12pt}}%
+ \*fdef pinnumberfont
+ \toks0={\CIusefont{\rmdefault}{12}{14pt}}%
+ \*fdef functionfont
+ \*fdef circlabelfont
+ \toks0={\CIusefont{\sfdefault}{12}{14pt}}%
+ \*fdef inlabelfont
+\or % magstep 4
+ \toks0={\CIusefont{\rmdefault}{20.74}{25pt}}%
+ \*fdef outlabelfont
+ \*fdef labelfont
+ \*fdef ctextfont
+ \toks0={\CIusefont{\sfdefault}{20.74}{25pt}}%
+ \*fdef symfont
+ \toks0={\CIusefont{\rmdefault}{12}{14pt}}%
+ \*fdef pinnumberfont
+ \toks0={\CIusefont{\rmdefault}{14.4}{18pt}}%
+ \*fdef functionfont
+ \*fdef circlabelfont
+ \toks0={\CIusefont{\sfdefault}{14.4}{18pt}}%
+ \*fdef inlabelfont
+\else\errhelp{0 ... 4 expected.}\errmessage{Bad magnification!}\fi
+{\outlabelfont
+\global\*spc 0.4em}%
+\font\c*fnt=cirest scaled \*mag
+\font\c*fntb=cicirc scaled \*mag
+\font\c*fntd=cidiod scaled \*mag
+\font\c*fntt=cibimos scaled \*mag
+\font\c*fntw=ciwidko scaled \*mag
+\font\c*fnts=cisym scaled \*mag
+\outerspace1mm
+\pinnum*spc.7mm
+\pin*ind\fontdimen12\c*fntb
+\pin*spc\fontdimen13\c*fntb
+\io*ind\fontdimen14\c*fntb
+\mid*ind\fontdimen16\c*fntb
+\X*min\maxdimen
+\X*max-\maxdimen
+\the\CIRCfinit
+\begingroup
+ \the\rmacros
+ \let\.\junction
+ \def\- ##1 ##2 {\wire##1 ##2 }%
+ \def\= ##1 ##2 ##3 {\bundle##1 ##2 ##3 }%
+ \def\<{\ld*true}%
+\parindent0pt
+\offinterlineskip\setbox\*bbox=\hbox\bgroup\at 0 0 }
+\def\endcircuit{\egroup\leavevmode
+ \hbox{\kern-\X*min\unhbox\*bbox\kern\X*max}\endgroup
+ \PackageInfo{CIRC}{`\CIRCredef' restored}}
+\safedef{fallingEdge}{{\c*fnts\char3}}
+\safedef{raisingEdge}{{\c*fnts\char2}}
+\safedef{spike}{{\c*fnts\char4}}
+\safedef{ispike}{{\c*fnts\char12}}
+\safedef{squarePulse}{{\c*fnts\char1}}
+\safedef{squarePulses}{{\c*fnts\char5}}
+\safedef{sawtoothPuls}{{\c*fnt\char6}}
+\def\CIRCLogo{\c*fnt\cc*0\getc*252 \check*max{.5\wd*}\check*min{.5\wd*}%
+ \setbox\*bbox=\hbox to \wd*{\hss\lower\ht*\hbox to 0pt{\hss
+ \symfont\raise1.5ex\rlap{\kern1ex CIRC}\box\box*}\hss}\put*box\reset*ifs}
+\protectcirc
+\ProcessOptions
+\endinput
+%%
+%% End of file `circ.sty'.