18378 lines
744 KiB
TeX
18378 lines
744 KiB
TeX
% Copyright 2007-2019 by Massimo Redaelli
|
|
%
|
|
% This file may be distributed and/or modified
|
|
%
|
|
% 1. under the LaTeX Project Public License and/or
|
|
% 2. under the GNU Public License.
|
|
%
|
|
% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
|
|
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
|
|
\def\pgfcircversion{git:a3aea45}
|
|
\def\pgfcircversiondate{2019/12/01}
|
|
|
|
\ProvidesPackage{circuitikzgit}
|
|
[\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]
|
|
|
|
%% Version 3.0 of pgf/TikZ is required
|
|
\RequirePackage{tikz}
|
|
\usetikzlibrary{calc}
|
|
%
|
|
% "arrows" library is deprecated, and behave badly with
|
|
% arrows on short paths. Change to the new arrows.meta
|
|
% In pfgcirc.define, we will add the old definition of
|
|
% latex' which we have lost in the transition
|
|
%
|
|
\usetikzlibrary{arrows.meta, bending}
|
|
|
|
% The options are listed in the manual in this order
|
|
|
|
\DeclareOption{europeanvoltage}{
|
|
\ctikzset{voltage=european}
|
|
}
|
|
|
|
\DeclareOption{straightvoltages}{
|
|
\pgf@circuit@bipole@voltage@straighttrue
|
|
}
|
|
|
|
\DeclareOption{americanvoltage}{
|
|
\ctikzset{voltage=american}
|
|
}
|
|
|
|
\DeclareOption{europeancurrent}{
|
|
\ctikzset{current = european}
|
|
}
|
|
|
|
\DeclareOption{americancurrent}{
|
|
\ctikzset{current = american}
|
|
}
|
|
|
|
|
|
|
|
\DeclareOption{americanresistor}{
|
|
\ctikzset{resistor = american}
|
|
}
|
|
|
|
\DeclareOption{europeanresistor}{
|
|
\ctikzset{resistor = european}
|
|
}
|
|
|
|
\DeclareOption{americaninductor}{
|
|
\ctikzset{inductor = american}
|
|
}
|
|
|
|
\DeclareOption{europeaninductor}{
|
|
\ctikzset{inductor = european}
|
|
}
|
|
|
|
\DeclareOption{cuteinductor}{
|
|
\ctikzset{inductor = cute}
|
|
}
|
|
|
|
\DeclareOption{americanport}{
|
|
\ctikzset{logic ports = american}
|
|
}
|
|
|
|
\DeclareOption{europeanport}{
|
|
\ctikzset{logic ports = european}
|
|
}
|
|
|
|
\DeclareOption{european}{
|
|
\ctikzset{voltage=european} \ctikzset{current=european} \ctikzset{inductor=european}
|
|
\ctikzset{resistor=european} \ctikzset{logic ports=european} \ctikzset{gas filled surge arrester choice = european}
|
|
}
|
|
|
|
\DeclareOption{american}{
|
|
\ctikzset{voltage=american} \ctikzset{current=american} \ctikzset{resistor=american} \ctikzset{inductor=american} \ctikzset{gas filled surge arrester choice = american}
|
|
\ctikzset{logic ports = american}
|
|
}
|
|
|
|
\DeclareOption{fulldiodes}{
|
|
\ctikzset{diode = full}
|
|
}
|
|
|
|
\DeclareOption{emptydiodes}{
|
|
\ctikzset{diode = empty}
|
|
}
|
|
|
|
\DeclareOption{europeanvoltages}{
|
|
\ctikzset{voltage=european}
|
|
}
|
|
|
|
\DeclareOption{americanvoltages}{
|
|
\ctikzset{voltage=american}
|
|
}
|
|
|
|
\DeclareOption{europeancurrents}{
|
|
\ctikzset{current = european}
|
|
}
|
|
|
|
\DeclareOption{americancurrents}{
|
|
\ctikzset{current = american}
|
|
}
|
|
|
|
\DeclareOption{americanresistors}{
|
|
\ctikzset{resistor = american}
|
|
}
|
|
|
|
\DeclareOption{europeanresistors}{
|
|
\ctikzset{resistor = european}
|
|
}
|
|
|
|
\DeclareOption{americaninductors}{
|
|
\ctikzset{inductor = american}
|
|
}
|
|
|
|
\DeclareOption{europeaninductors}{
|
|
\ctikzset{inductor = european}
|
|
}
|
|
|
|
\DeclareOption{cuteinductors}{
|
|
\ctikzset{inductor = cute}
|
|
}
|
|
|
|
\DeclareOption{americanports}{
|
|
\ctikzset{logic ports = american}
|
|
}
|
|
|
|
\DeclareOption{europeanports}{
|
|
\ctikzset{logic ports = european}
|
|
}
|
|
|
|
\DeclareOption{americangfsurgearrester}{
|
|
\ctikzset{gas filled surge arrester choice = american}
|
|
}
|
|
|
|
\DeclareOption{europeangfsurgearrester}{
|
|
\ctikzset{gas filled surge arrester choice = european}
|
|
}
|
|
|
|
\DeclareOption{siunitx}{
|
|
\pgf@circ@siunitxtrue
|
|
}
|
|
|
|
\DeclareOption{nosiunitx}{
|
|
\pgf@circ@siunitxfalse
|
|
}
|
|
|
|
\DeclareOption{fulldiode}{
|
|
\ctikzset{diode = full}
|
|
}
|
|
|
|
\DeclareOption{emptydiode}{
|
|
\ctikzset{diode = empty}
|
|
}
|
|
|
|
\DeclareOption{strokediode}{
|
|
\ctikzset{diode = stroke}
|
|
}
|
|
|
|
\DeclareOption{arrowmos}{
|
|
\pgf@circuit@mos@arrowstrue
|
|
}
|
|
|
|
\DeclareOption{noarrowmos}{
|
|
\pgf@circuit@mos@arrowsfalse
|
|
}
|
|
|
|
\DeclareOption{fetbodydiode}{
|
|
\pgf@circuit@fet@bodydiodetrue
|
|
}
|
|
|
|
\DeclareOption{nofetbodydiode}{
|
|
\pgf@circuit@fet@bodydiodefalse
|
|
}
|
|
|
|
\DeclareOption{fetsolderdot}{
|
|
\pgf@circuit@fet@solderdottrue
|
|
}
|
|
|
|
\DeclareOption{nofetsolderdot}{
|
|
\pgf@circuit@fet@solderdotfalse
|
|
}
|
|
|
|
\DeclareOption{emptypmoscircle}{
|
|
\pgf@circuit@pmos@emptycircletrue
|
|
}
|
|
|
|
|
|
\DeclareOption{lazymos}{
|
|
\ctikzset{tripoles/nmos/width=.5}
|
|
\ctikzset{tripoles/nmos/gate height=.35}
|
|
\ctikzset{tripoles/nmos/base height=.35}
|
|
\ctikzset{tripoles/nmos/height/.initial=1.2}
|
|
\ctikzset{tripoles/nmos/base width=.5}
|
|
\ctikzset{tripoles/nmos/gate width=.65}
|
|
|
|
\ctikzset{tripoles/pmos/width=.5}
|
|
\ctikzset{tripoles/pmos/gate height=.35}
|
|
\ctikzset{tripoles/pmos/base height=.35}
|
|
\ctikzset{tripoles/pmos/height/.initial=1.2}
|
|
\ctikzset{tripoles/pmos/base width=.5}
|
|
\ctikzset{tripoles/pmos/gate width=.65}
|
|
|
|
\pgf@circuit@pmos@emptycircletrue
|
|
}
|
|
|
|
\DeclareOption{straightlabels}{
|
|
\ctikzset{label/align = straight}
|
|
}
|
|
|
|
\DeclareOption{rotatelabels}{
|
|
\ctikzset{label/align = rotate}
|
|
}
|
|
|
|
\DeclareOption{smartlabels}{
|
|
\ctikzset{label/align = smart}
|
|
}
|
|
|
|
\DeclareOption{compatibility}{
|
|
\pgf@circuit@compattrue
|
|
}
|
|
|
|
\DeclareOption{oldvoltagedirection}{
|
|
\pgf@circ@oldvoltagedirectiontrue
|
|
\pgf@circ@explicitvdirtrue
|
|
\pgf@circ@fixbatteriesfalse
|
|
}
|
|
\DeclareOption{nooldvoltagedirection}{
|
|
\pgf@circ@oldvoltagedirectionfalse
|
|
\pgf@circ@explicitvdirtrue
|
|
\pgf@circ@fixbatteriesfalse
|
|
}
|
|
|
|
\DeclareOption{RPvoltages}{
|
|
\pgf@circ@oldvoltagedirectiontrue
|
|
\pgf@circ@explicitvdirtrue
|
|
\pgf@circ@fixbatteriestrue
|
|
}
|
|
\DeclareOption{EFvoltages}{
|
|
\pgf@circ@oldvoltagedirectionfalse
|
|
\pgf@circ@explicitvdirtrue
|
|
\pgf@circ@fixbatteriestrue
|
|
}
|
|
|
|
\DeclareOption{legacytransistorstext}{
|
|
\pgf@circuit@transisors@fixlabelsfalse
|
|
}
|
|
|
|
\DeclareOption{nolegacytransistorstext}{
|
|
\pgf@circuit@transisors@fixlabelstrue
|
|
}
|
|
|
|
\DeclareOption{centertransistorstext}{
|
|
\pgf@circuit@transisors@fixlabelstrue
|
|
}
|
|
|
|
\DeclareOption{betterproportions}{
|
|
\ctikzset{monopoles/ground/width/.initial=.15}
|
|
|
|
\ctikzset{bipoles/resistor/height/.initial=.23}
|
|
\ctikzset{bipoles/resistor/width/.initial=.6}
|
|
\ctikzset{bipoles/capacitor/height/.initial=.4}
|
|
\ctikzset{bipoles/capacitor/width/.initial=.1}
|
|
\ctikzset{bipoles/potentiometer/height/.initial=.6}
|
|
\ctikzset{bipoles/potentiometer/height 2/.initial=.23}
|
|
\ctikzset{bipoles/potentiometer/width/.initial=.6}
|
|
\ctikzset{bipoles/photoresistor/height/.initial=.6}
|
|
\ctikzset{bipoles/photoresistor/height 2/.initial=.23}
|
|
\ctikzset{bipoles/photoresistor/width/.initial=.6}
|
|
\ctikzset{bipoles/thermistor/main/.initial=.7}
|
|
\ctikzset{bipoles/thermistor/height/.initial=.328}%.23/.7
|
|
\ctikzset{bipoles/thermistor/width/.initial=.6}
|
|
\ctikzset{bipoles/thermistorntc/width/.initial=.6}
|
|
\ctikzset{bipoles/thermistorntc/main/.initial=.7}
|
|
\ctikzset{bipoles/thermistorntc/height/.initial=.328}%.23/.7
|
|
\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.23/.7
|
|
\ctikzset{bipoles/thermistorptc/width/.initial=.6}
|
|
\ctikzset{bipoles/thermistorptc/main/.initial=.7}
|
|
\ctikzset{bipoles/thermistorptc/height/.initial=.328}%.23/.7
|
|
\ctikzset{bipoles/varistor/main/.initial=.7}
|
|
\ctikzset{bipoles/varistor/height/.initial=.328}%.23/.7
|
|
\ctikzset{bipoles/varistor/width/.initial=.6}
|
|
\ctikzset{bipoles/vresistor/height/.initial=.45}
|
|
\ctikzset{bipoles/vresistor/width/.initial=.6}
|
|
\ctikzset{bipoles/generic/height/.initial=.23}
|
|
\ctikzset{bipoles/generic/width/.initial=.6}
|
|
\ctikzset{bipoles/generic potentiometer/height/.initial=.6}
|
|
\ctikzset{bipoles/generic potentiometer/height 2/.initial=.23}
|
|
\ctikzset{bipoles/generic potentiometer/width/.initial=.6}
|
|
\ctikzset{bipoles/ageneric/height/.initial=.23}
|
|
\ctikzset{bipoles/ageneric/width/.initial=.6}
|
|
\ctikzset{bipoles/memristor/height/.initial=.23}
|
|
\ctikzset{bipoles/memristor/wave height/.initial=.375}
|
|
\ctikzset{bipoles/memristor/width/.initial=.60}
|
|
\ctikzset{bipoles/tgeneric/height/.initial=.525}
|
|
\ctikzset{bipoles/tgeneric/width/.initial=.6}
|
|
\ctikzset{bipoles/tfullgeneric/height/.initial=.525}
|
|
\ctikzset{bipoles/tfullgeneric/width/.initial=.60}
|
|
\ctikzset{bipoles/fullgeneric/height/.initial=.23}
|
|
\ctikzset{bipoles/fullgeneric/width/.initial=.6}
|
|
\ctikzset{bipoles/diode/height/.initial=.3}
|
|
\ctikzset{bipoles/diode/width/.initial=.25}
|
|
\ctikzset{bipoles/bidirectionaldiode/height/.initial=.66}
|
|
\ctikzset{bipoles/bidirectionaldiode/width/.initial=.6}
|
|
\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
|
|
\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
|
|
|
|
\ctikzset{tripoles/thyristor/height/.initial=.66}
|
|
\ctikzset{tripoles/thyristor/height 2/.initial=.3}
|
|
\ctikzset{tripoles/thyristor/width/.initial=.6}
|
|
\ctikzset{tripoles/thyristor/diode height/.initial=.3}
|
|
\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
|
|
\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
|
|
|
|
\ctikzset{tripoles/triac/height/.initial=.66}
|
|
\ctikzset{tripoles/triac/width/.initial=.6}
|
|
\ctikzset{tripoles/triac/diode width left/.initial=.3}
|
|
\ctikzset{tripoles/triac/diode width right/.initial=.3}
|
|
}
|
|
|
|
% This is a nice hack that prints all the shapes declared
|
|
% by the package. Very useful for coverage testing and debugging.
|
|
%
|
|
% \let\origpgfdeclareshape=\pgfdeclareshape
|
|
% \def\pgfdeclareshape#1{%
|
|
% \typeout{SHAPE:\space"#1"}%
|
|
% \origpgfdeclareshape{#1}
|
|
% }
|
|
|
|
|
|
%%%%%%%%%
|
|
%%%%%%%%%%% Springe nach tex/pgfcirc.defines
|
|
%%%---------- open: tex/pgfcirc.defines.tex
|
|
%% Key managements
|
|
|
|
\long\def\pgf@circ@comment#1{}
|
|
|
|
\def\circuitikzbasekey{/tikz/circuitikz}
|
|
|
|
\pgfkeys{\circuitikzbasekey/.is family}
|
|
|
|
\def\circuitikzset#1{\pgfkeys{\circuitikzbasekey,#1}}
|
|
\let\ctikzset\circuitikzset
|
|
\def\ctikzvalof#1{\pgfkeysvalueof{\circuitikzbasekey/#1}}
|
|
\def\ctikzsetvalof#1#2{\pgfkeyssetvalue{\circuitikzbasekey/#1}{#2}}
|
|
|
|
%% Temporary Counters
|
|
|
|
\newcount\pgf@circ@count@a
|
|
\newcount\pgf@circ@count@b
|
|
\newcount\pgf@circ@count@c
|
|
%%%%%%%%%%%%
|
|
%% Dimensions
|
|
|
|
% coordinates
|
|
\newdimen\pgf@circ@res@up
|
|
\newdimen\pgf@circ@res@down
|
|
\newdimen\pgf@circ@res@zero
|
|
\newdimen\pgf@circ@res@left
|
|
\newdimen\pgf@circ@res@right
|
|
\newdimen\pgf@circ@res@other
|
|
\newdimen\pgf@circ@res@step
|
|
\newdimen\pgf@circ@res@temp
|
|
% inital thickness
|
|
\newdimen \pgfstartlinewidth
|
|
|
|
% arrow tips, ported over old arrows library (deprecated)
|
|
% see https://tex.stackexchange.com/questions/234084/latex-arrow-tip-with-arrows-meta-library
|
|
% this was the original definition of latex' tips, renamed to avoid clashes
|
|
%
|
|
\pgfarrowsdeclare{latexslim}{latexslim}
|
|
{
|
|
\pgfutil@tempdima=0.28pt%
|
|
\advance\pgfutil@tempdima by.3\pgflinewidth%
|
|
\pgfarrowsleftextend{+-4\pgfutil@tempdima}
|
|
\pgfarrowsrightextend{+6\pgfutil@tempdima}
|
|
}
|
|
{
|
|
\pgfutil@tempdima=0.28pt%
|
|
\advance\pgfutil@tempdima by.3\pgflinewidth%
|
|
\pgfpathmoveto{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
|
|
\pgfpathcurveto
|
|
{\pgfqpoint{3.5\pgfutil@tempdima}{.5\pgfutil@tempdima}}
|
|
{\pgfqpoint{-1\pgfutil@tempdima}{1.5\pgfutil@tempdima}}
|
|
{\pgfqpoint{-4\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
|
|
\pgfpathcurveto
|
|
{\pgfqpoint{-1.5\pgfutil@tempdima}{1\pgfutil@tempdima}}
|
|
{\pgfqpoint{-1.5\pgfutil@tempdima}{-1\pgfutil@tempdima}}
|
|
{\pgfqpoint{-4\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
|
|
\pgfpathcurveto
|
|
{\pgfqpoint{-1\pgfutil@tempdima}{-1.5\pgfutil@tempdima}}
|
|
{\pgfqpoint{3.5\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
|
|
{\pgfqpoint{6\pgfutil@tempdima}{0\pgfutil@tempdima}}
|
|
\pgfpathclose
|
|
\pgfusepathqfill
|
|
}
|
|
|
|
\pgfarrowsdeclarereversed{latexslim reversed}{latexslim reversed}{latexslim}{latexslim}
|
|
|
|
\def\pgf@circ@setifdefinedfill#1#2{%
|
|
% if \ctikzclass is defined and \ctikzclass/fill is defined and is not none:
|
|
% set the fill color and execute \pgfusepath{#1}, else execute \pgfusepath{#2}
|
|
\ifdefined\ctikzclass
|
|
\pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/fill}%
|
|
{% yes, it's defined
|
|
\edef\@@tmp{\ctikzvalof{\ctikzclass/fill}}\edef\@@none{none}%
|
|
\ifx\@@tmp\@@none % but it's none
|
|
\pgfusepath{#2}%
|
|
\else
|
|
\pgfsetfillcolor{\@@tmp}%
|
|
\pgfusepath{#1}%
|
|
\fi
|
|
}{% the class is defined but the fill key not; use #2
|
|
\pgfusepath{#2}%
|
|
}
|
|
\else
|
|
\pgfusepath{#2}%
|
|
\fi
|
|
}
|
|
|
|
%% Macro to fill or draw
|
|
|
|
\def\pgf@circ@draworfill{%
|
|
\ifx\tikz@fillcolor\pgfutil@empty
|
|
\pgf@circ@setifdefinedfill{draw,fill}{draw}
|
|
\else
|
|
\pgfsetfillcolor{\tikz@fillcolor}
|
|
\pgfusepath{draw, fill}
|
|
\fi
|
|
}
|
|
|
|
\def\pgf@circ@draworfillandclip{%
|
|
\ifx\tikz@fillcolor\pgfutil@empty
|
|
\pgf@circ@setifdefinedfill{draw, clip, fill}{draw, clip}
|
|
\pgfusepath{draw, clip}
|
|
\else
|
|
\pgfsetfillcolor{\tikz@fillcolor}
|
|
\pgfusepath{draw, clip, fill}
|
|
\fi
|
|
}
|
|
|
|
\def\pgf@circ@maybefill{%
|
|
\ifx\tikz@fillcolor\pgfutil@empty
|
|
\pgf@circ@setifdefinedfill{fill}{discard}
|
|
\else
|
|
\pgfsetfillcolor{\tikz@fillcolor}
|
|
\pgfusepath{fill}
|
|
\fi
|
|
}
|
|
|
|
%% Macros for setting linewidth
|
|
% #1 is the legacy class (bipoles, tripoles) etc
|
|
% #2 is the reference linewidth
|
|
\def\pgf@circ@setlinewidth#1#2{%
|
|
\ifdefined\ctikzclass
|
|
\pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/thickness}%
|
|
{% yes, it's defined
|
|
\edef\@@tmp{\ctikzvalof{\ctikzclass/thickness}}\edef\@@none{none}%
|
|
\ifx\@@tmp\@@none % but it's none
|
|
\pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}% passthrough legacy class
|
|
\else
|
|
\pgfsetlinewidth{\@@tmp #2}%
|
|
\fi
|
|
}{ % key not defined, do the legacy thing
|
|
\pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
|
|
}% Ok, do nothing
|
|
\else % no class
|
|
\pgfsetlinewidth{\ctikzvalof{#1/thickness}#2}%
|
|
\fi
|
|
}
|
|
% use \pgf@circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
|
|
\ctikzset{none/thickness/.initial=1.0} % do not touch
|
|
|
|
%% font changes compatible with plain/LaTeX/ConTeXt
|
|
%% thanks to Henri Menke https://github.com/circuitikz/circuitikz/issues/285#issuecomment-537224605
|
|
|
|
\ifpgfutil@format@is@latex
|
|
\long\def\pgf@circ@font@tiny{\tiny}
|
|
\long\def\pgf@circ@font@small{\small}
|
|
\long\def\pgf@circ@font@bold{\textbf}
|
|
\long\def\pgf@circ@font@boldmath{\boldmath}
|
|
\long\def\pgf@circ@font@sixbm{\fontsize{6}{7}\selectfont\boldmath}
|
|
\long\def\pgf@circ@font@tenbm{\fontsize{10}{12}\selectfont\boldmath}
|
|
\long\def\pgf@circ@font@twelve{\fontsize{12}{14}\selectfont}
|
|
\else\ifpgfutil@format@is@plain
|
|
\long\def\pgf@circ@font@tiny{\fiverm}
|
|
\long\def\pgf@circ@font@small{\sevenrm}
|
|
\long\def\pgf@circ@font@bold#1{{\bf#1}}
|
|
\long\def\pgf@circ@font@boldmath{\bf} % to be tested
|
|
\long\def\pgf@circ@font@sixbm{\sevenrm\bf} %
|
|
\long\def\pgf@circ@font@tenbm{\tenrm\bf} %
|
|
\long\def\pgf@circ@font@twelve{\twelverm} %
|
|
\else\ifpgfutil@format@is@context
|
|
\long\def\pgf@circ@font@tiny{\tfxx}
|
|
\long\def\pgf@circ@font@small{\tfx}
|
|
\long\def\pgf@circ@font@bold{\bold}
|
|
\long\def\pgf@circ@font@boldmath{\bold} % to be tested
|
|
\long\def\pgf@circ@font@sixbm{\tfx\bold} %
|
|
\long\def\pgf@circ@font@tenbm{\normal\bold}%
|
|
\long\def\pgf@circ@font@twelve{\tfa} %
|
|
\fi\fi\fi
|
|
|
|
|
|
% voltage options
|
|
|
|
\newif\ifpgf@circ@siunitx
|
|
\newif\ifpgf@circuit@compat
|
|
\newif\ifpgf@circ@oldvoltagedirection % default false
|
|
\newif\ifpgf@circ@explicitvdir
|
|
\newif\ifpgf@circ@fixbatteries
|
|
|
|
\ctikzset{voltage dir/.is choice}
|
|
\ctikzset{voltage dir/old/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriesfalse}}
|
|
\ctikzset{voltage dir/noold/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriesfalse}}
|
|
\ctikzset{voltage dir/RP/.code={\pgf@circ@oldvoltagedirectiontrue\pgf@circ@fixbatteriestrue}}
|
|
\ctikzset{voltage dir/EF/.code={\pgf@circ@oldvoltagedirectionfalse\pgf@circ@fixbatteriestrue}}
|
|
\tikzset{voltage dir/.style={circuitikz/voltage dir=#1}}
|
|
|
|
% Option ">" for twoports
|
|
\newif\ifpgf@circuit@inputarrow
|
|
\ctikzset{>/.add code={}{\pgf@circuit@inputarrowtrue}}
|
|
\ctikzset{inputarrow/.is choice}
|
|
\ctikzset{inputarrow/true/.code={\pgf@circuit@inputarrowtrue}}
|
|
\ctikzset{inputarrow/false/.code={\pgf@circuit@inputarrowfalse}}
|
|
|
|
% Option "boxed" for nodes and twoports
|
|
\newif\ifpgf@circuit@boxed
|
|
\pgfkeys{/tikz/boxed/.add code={}{\pgf@circuit@boxedtrue}}
|
|
\ctikzset{boxed/.add code={}{\pgf@circuit@boxedtrue}}
|
|
\pgfkeys{/tikz/box/.add code={}{\pgf@circuit@boxedtrue}}
|
|
\ctikzset{box/.add code={}{\pgf@circuit@boxedtrue}}
|
|
|
|
% Option "dashed" for nodes and twoports
|
|
\newif\ifpgf@circuit@dashed
|
|
\pgfkeys{/tikz/dashed/.add code={}{\pgf@circuit@dashedtrue}}
|
|
\ctikzset{dashed/.add code={}{\pgf@circuit@dashedtrue}}
|
|
|
|
% Option "t=*" for nodes
|
|
\pgfkeys{/tikz/t/.add code={}{\ctikzset{text=#1}}}
|
|
|
|
\ctikzset{current arrow scale/.initial=16}
|
|
|
|
\ctikzset{bipoles/.is family}
|
|
\ctikzset{bipoles/border margin/.initial=1.1}
|
|
\ctikzset{bipoles/thickness/.initial=2}
|
|
\ctikzset{tripoles/thickness/.initial=2}
|
|
\ctikzset{quadpoles/thickness/.initial=2}
|
|
\ctikzset{nodes width/.initial=.04}
|
|
|
|
% Base len for all circuitikz
|
|
\newdimen\pgf@circ@Rlen
|
|
% scaled length for internal use in scalable shapes
|
|
\newdimen\pgf@circ@scaled@Rlen
|
|
\ctikzset{bipoles/length/.code={\pgf@circ@Rlen = #1\pgf@circ@scaled@Rlen=\pgf@circ@Rlen}}
|
|
\pgf@circ@Rlen = 1.4cm
|
|
% by default scale is 1.0
|
|
\pgf@circ@scaled@Rlen=\pgf@circ@Rlen
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% main style definitions
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
% load a style file: search ctikzstyle-NAME.tex in path
|
|
\def\ctikzloadstyle#1{%
|
|
\edef\pgf@temp{#1}%
|
|
% guard against re-loading
|
|
\expandafter\ifx\csname pgf@circ@style@\pgf@temp @loaded\endcsname\relax%
|
|
\expandafter\global\expandafter\let\csname pgf@circ@style@\pgf@temp @loaded\endcsname=\pgfutil@empty
|
|
\pgfutil@InputIfFileExists{ctikzstyle-#1}{}{%
|
|
\tikzerror{I did not find the circuitikz style #1}}%
|
|
\fi
|
|
}
|
|
|
|
% load and enact a style
|
|
\def\ctikzsetstyle#1{%
|
|
\ctikzloadstyle{#1}%
|
|
\tikzset{#1 circuit style}%
|
|
}
|
|
|
|
% global style parameters
|
|
\ctikzset{default/scale/.initial=1.0} % do not touch
|
|
\ctikzset{default/fill/.initial=none} % do not touch
|
|
\ctikzset{default/thickness/.initial=none} % do not touch
|
|
% default is use as the generic default style for bipoles
|
|
|
|
% mostly bipoles:
|
|
|
|
\ctikzset{resistors/scale/.initial=1.0}
|
|
\ctikzset{resistors/fill/.initial=none}
|
|
\ctikzset{resistors/thickness/.initial=none}
|
|
|
|
\ctikzset{capacitors/scale/.initial=1.0}
|
|
\ctikzset{capacitors/fill/.initial=none}
|
|
\ctikzset{capacitors/thickness/.initial=none}
|
|
|
|
\ctikzset{inductors/scale/.initial=1.0}
|
|
\ctikzset{inductors/fill/.initial=none}
|
|
\ctikzset{inductors/thickness/.initial=none}
|
|
|
|
\ctikzset{diodes/scale/.initial=1.0}
|
|
\ctikzset{diodes/fill/.initial=none}
|
|
\ctikzset{diodes/thickness/.initial=none}
|
|
|
|
\ctikzset{batteries/scale/.initial=1.0}
|
|
\ctikzset{batteries/fill/.initial=none}
|
|
\ctikzset{batteries/thickness/.initial=none}
|
|
|
|
\ctikzset{sources/scale/.initial=1.0}
|
|
\ctikzset{sources/fill/.initial=none}
|
|
\ctikzset{sources/thickness/.initial=none}
|
|
|
|
\ctikzset{csources/scale/.initial=1.0}
|
|
\ctikzset{csources/fill/.initial=none}
|
|
\ctikzset{csources/thickness/.initial=none}
|
|
|
|
\ctikzset{instruments/scale/.initial=1.0}
|
|
\ctikzset{instruments/fill/.initial=none}
|
|
\ctikzset{instruments/thickness/.initial=none}
|
|
|
|
\ctikzset{mechanicals/scale/.initial=1.0}
|
|
\ctikzset{mechanicals/fill/.initial=none}
|
|
\ctikzset{mechanicals/thickness/.initial=none}
|
|
|
|
\ctikzset{misc/scale/.initial=1.0}
|
|
\ctikzset{misc/fill/.initial=none}
|
|
\ctikzset{misc/thickness/.initial=none}
|
|
|
|
\ctikzset{blocks/scale/.initial=1.0}
|
|
\ctikzset{blocks/fill/.initial=none}
|
|
\ctikzset{blocks/thickness/.initial=none}
|
|
|
|
% mostly nodes
|
|
|
|
\ctikzset{grounds/scale/.initial=1.0}
|
|
\ctikzset{grounds/fill/.initial=none}
|
|
\ctikzset{grounds/thickness/.initial=none}
|
|
|
|
\ctikzset{power supplies/scale/.initial=1.0}
|
|
\ctikzset{power supplies/fill/.initial=none}
|
|
\ctikzset{power supplies/thickness/.initial=none}
|
|
|
|
\ctikzset{transistors/scale/.initial=1.0}
|
|
\ctikzset{transistors/fill/.initial=none}
|
|
\ctikzset{transistors/thickness/.initial=none}
|
|
|
|
\ctikzset{tubes/scale/.initial=1.0}
|
|
\ctikzset{tubes/fill/.initial=none}
|
|
\ctikzset{tubes/thickness/.initial=none}
|
|
|
|
\ctikzset{RF/scale/.initial=1.0}
|
|
\ctikzset{RF/fill/.initial=none}
|
|
\ctikzset{RF/thickness/.initial=none}
|
|
|
|
\ctikzset{electromechanicals/scale/.initial=1.0}
|
|
\ctikzset{electromechanicals/fill/.initial=none}
|
|
\ctikzset{electromechanicals/thickness/.initial=none}
|
|
|
|
% transformers go with inductors
|
|
\ctikzset{amplifiers/scale/.initial=1.0}
|
|
\ctikzset{amplifiers/fill/.initial=none}
|
|
\ctikzset{amplifiers/thickness/.initial=none}
|
|
|
|
\ctikzset{switches/scale/.initial=1.0}
|
|
\ctikzset{switches/fill/.initial=none}
|
|
\ctikzset{switches/thickness/.initial=none}
|
|
|
|
\ctikzset{logic ports/scale/.initial=1.0}
|
|
\ctikzset{logic ports/fill/.initial=none}
|
|
\ctikzset{logic ports/thickness/.initial=none}
|
|
|
|
\ctikzset{chips/scale/.initial=1.0}
|
|
\ctikzset{chips/fill/.initial=none}
|
|
\ctikzset{chips/thickness/.initial=none}
|
|
|
|
\ctikzset{displays/scale/.initial=1.0}
|
|
\ctikzset{displays/fill/.initial=none}
|
|
\ctikzset{displays/thickness/.initial=none}
|
|
|
|
% grounds and power supplies
|
|
|
|
\ctikzset{monopoles/.is family}
|
|
\ctikzset{monopoles/ground/width/.initial=.25}
|
|
\ctikzset{monopoles/ground/connectionthickness/.initial=1}
|
|
\ctikzset{monopoles/ground/thickness/.initial=2}
|
|
\ctikzset{monopoles/rground/thickness/.initial=2}
|
|
\ctikzset{monopoles/tground/thickness/.initial=3}
|
|
\ctikzset{monopoles/vcc/width/.initial=.2}
|
|
\ctikzset{monopoles/vcc/arrow/.initial=legacy}
|
|
\ctikzset{monopoles/vee/arrow/.initial=legacy}
|
|
\ctikzset{monopoles/match/width/.initial=.4}
|
|
\ctikzset{monopoles/chassis/width/.initial=.25}
|
|
\ctikzset{monopoles/alternative chassis/width/.initial=.25}
|
|
\ctikzset{monopoles/equipotentiality/width/.initial=.25}
|
|
\ctikzset{monopoles/antenna/width/.initial=.25}
|
|
\ctikzset{monopoles/antenna/label/xanchor/.initial=.4}
|
|
\ctikzset{monopoles/antenna/label/yanchor/.initial=.75}
|
|
\ctikzset{monopoles/txantenna/label/xanchor/.initial=.4}
|
|
\ctikzset{monopoles/txantenna/label/yanchor/.initial=.75}
|
|
\ctikzset{monopoles/txantenna/width/.initial=.25}
|
|
\ctikzset{monopoles/rxantenna/label/xanchor/.initial=.4}
|
|
\ctikzset{monopoles/rxantenna/label/yanchor/.initial=.75}
|
|
\ctikzset{monopoles/rxantenna/width/.initial=.25}
|
|
\ctikzset{monopoles/bareantenna/width/.initial=.25}
|
|
\ctikzset{monopoles/bareantenna/label/xanchor/.initial=1}
|
|
\ctikzset{monopoles/bareantenna/label/yanchor/.initial=0.5}
|
|
\ctikzset{monopoles/waves/width/.initial=0.5}
|
|
|
|
% microstrips
|
|
\ctikzset{bipoles/mstline/height/.initial=0.3}
|
|
\ctikzset{bipoles/mstline/width/.initial=1.2}
|
|
\pgfkeys{/tikz/mstlinelen/.add code={}{\ctikzset{bipoles/mstline/width=#1}}}
|
|
\ctikzset{monopoles/msport/width/.initial=.5}
|
|
\ctikzset{monopoles/msrstub/height/.initial=1.0}
|
|
\ctikzset{monopoles/msrstub/width/.initial=0.6}
|
|
|
|
% microphone and loudspeaker
|
|
\ctikzset{bipoles/loudspeaker/height/.initial=.8}
|
|
\ctikzset{bipoles/loudspeaker/depth/.initial=.3}
|
|
\ctikzset{bipoles/loudspeaker/width/.initial=.8}
|
|
\ctikzset{bipoles/mic/height/.initial=1.2}
|
|
\ctikzset{bipoles/mic/depth/.initial=.0}
|
|
\ctikzset{bipoles/mic/width/.initial=.8}
|
|
|
|
% Zig Zag resistors
|
|
\ctikzset{resistors/zigs/.initial=3}
|
|
\ctikzset{resistors/width/.code={%
|
|
\ctikzset{bipoles/resistor/width=#1}%
|
|
\ctikzset{bipoles/vresistor/width=#1}%
|
|
\ctikzset{bipoles/potentiometer/width=#1}%
|
|
\ctikzset{bipoles/resistivesens/width=#1}%
|
|
\ctikzset{bipoles/photoresistor/width=#1}%
|
|
\ctikzset{bipoles/thermistor/width=#1}%
|
|
\ctikzset{bipoles/thermistorntc/width=#1}%
|
|
\ctikzset{bipoles/thermistorptc/width=#1}%
|
|
\ctikzset{bipoles/varistor/width=#1}%
|
|
\ctikzset{bipoles/generic/width=#1}%
|
|
\ctikzset{bipoles/generic potentiometer/width=#1}%
|
|
\ctikzset{bipoles/ageneric/width=#1}%
|
|
\ctikzset{bipoles/tgeneric/width=#1}%
|
|
}}
|
|
\ctikzset{wiper pos/.code={%
|
|
\ctikzset{bipoles/potentiometer/wiper pos=#1}%
|
|
\ctikzset{bipoles/generic potentiometer/wiper pos=#1}%
|
|
}}
|
|
% zigzag resistor
|
|
\ctikzset{bipoles/resistor/height/.initial=.3}
|
|
\ctikzset{bipoles/resistor/width/.initial=.8}
|
|
\ctikzset{bipoles/potentiometer/height/.initial=.8}
|
|
\ctikzset{bipoles/potentiometer/height 2/.initial=.3}
|
|
\ctikzset{bipoles/potentiometer/width/.initial=.8}
|
|
\ctikzset{bipoles/potentiometer/wiper pos/.initial=.5}
|
|
\ctikzset{bipoles/vresistor/height/.initial=.6}
|
|
\ctikzset{bipoles/vresistor/width/.initial=.8}
|
|
\ctikzset{bipoles/resistivesens/height/.initial=.6}
|
|
\ctikzset{bipoles/resistivesens/width/.initial=.8}
|
|
% square resistors
|
|
\ctikzset{bipoles/photoresistor/height/.initial=.6}
|
|
\ctikzset{bipoles/photoresistor/height 2/.initial=.3}
|
|
\ctikzset{bipoles/photoresistor/width/.initial=.8}
|
|
\ctikzset{bipoles/thermistor/main/.initial=.7}
|
|
\ctikzset{bipoles/thermistor/height/.initial=.428}%.3/.7
|
|
\ctikzset{bipoles/thermistorntc/width/.initial=.8}
|
|
\ctikzset{bipoles/thermistorntc/main/.initial=.7}
|
|
\ctikzset{bipoles/thermistorntc/height/.initial=.428}%.3/.7
|
|
\ctikzset{bipoles/thermistorntc/height 2/.initial=.75}%.3/.7
|
|
\ctikzset{bipoles/thermistorptc/width/.initial=.8}
|
|
\ctikzset{bipoles/thermistorptc/main/.initial=.7}
|
|
\ctikzset{bipoles/thermistorptc/height/.initial=.428}%.3/.7
|
|
\ctikzset{bipoles/thermistorptc/height 2/.initial=.75}%.3/.7
|
|
\ctikzset{bipoles/thermistor/width/.initial=.8}
|
|
\ctikzset{bipoles/varistor/main/.initial=.7}
|
|
\ctikzset{bipoles/varistor/height/.initial=.428}%.3/.7
|
|
\ctikzset{bipoles/varistor/width/.initial=.8}
|
|
\ctikzset{bipoles/generic/height/.initial=.30}
|
|
\ctikzset{bipoles/generic/width/.initial=.80}
|
|
\ctikzset{bipoles/generic potentiometer/height/.initial=.80}
|
|
\ctikzset{bipoles/generic potentiometer/height 2/.initial=.30}
|
|
\ctikzset{bipoles/generic potentiometer/width/.initial=.80}
|
|
\ctikzset{bipoles/generic potentiometer/wiper pos/.initial=.5}
|
|
\ctikzset{bipoles/ageneric/height/.initial=.30}
|
|
\ctikzset{bipoles/tgeneric/height/.initial=.70}
|
|
\ctikzset{bipoles/tgeneric/width/.initial=.80}
|
|
\ctikzset{bipoles/ageneric/width/.initial=.80}
|
|
|
|
%% Capacitors
|
|
\ctikzset{bipoles/capacitor/height/.initial=.6}
|
|
\ctikzset{bipoles/capacitor/width/.initial=.2}
|
|
\ctikzset{bipoles/ecapacitor/height/.initial=.5}
|
|
\ctikzset{bipoles/ecapacitor/width/.initial=.2}
|
|
\ctikzset{bipoles/ecapacitor/font/.initial=\pgf@circ@font@sixbm}
|
|
%%% pcapacitor is deprecated
|
|
\ctikzset{bipoles/pcapacitor/height/.initial=.6}
|
|
\ctikzset{bipoles/pcapacitor/width/.initial=.2}
|
|
\ctikzset{bipoles/pcapacitor/bend width/.initial=1.1}
|
|
\ctikzset{bipoles/ccapacitor/height/.initial=.6}
|
|
\ctikzset{bipoles/ccapacitor/width/.initial=.12}
|
|
\ctikzset{bipoles/ccapacitor/bend width/.initial=1.1}
|
|
\ctikzset{bipoles/vcapacitor/height/.initial=.6}
|
|
\ctikzset{bipoles/vcapacitor/width/.initial=.5}
|
|
\ctikzset{bipoles/vcapacitor/capacitor width/.initial=.4}
|
|
\ctikzset{bipoles/piezoelectric/height/.initial=.7}
|
|
\ctikzset{bipoles/piezoelectric/width/.initial=.5}
|
|
|
|
% Inductors
|
|
\ctikzset{inductors/coils/.code={%
|
|
\ctikzset{bipoles/cuteinductor/coils=#1}%
|
|
\ctikzset{bipoles/cutechoke/coils=#1}%
|
|
\ctikzset{bipoles/americaninductor/coils=#1}%
|
|
\ctikzset{bipoles/vcuteinductor/coils=#1}%
|
|
\ctikzset{bipoles/vamericaninductor/coils=#1}%
|
|
}}
|
|
\ctikzset{inductors/width/.code={%
|
|
\ctikzset{bipoles/cuteinductor/width=#1}%
|
|
\ctikzset{bipoles/cutechoke/width=#1}%
|
|
\ctikzset{bipoles/americaninductor/width=#1}%
|
|
\ctikzset{bipoles/vcuteinductor/width=#1}%
|
|
\ctikzset{bipoles/vamericaninductor/width=#1}%
|
|
\ctikzset{bipoles/fullgeneric/width=#1}%
|
|
\ctikzset{bipoles/tfullgeneric/width=#1}%
|
|
}}
|
|
\ctikzset{bipoles/cuteinductor/height/.initial=.3}
|
|
\ctikzset{bipoles/cuteinductor/lower coil height/.initial=.15}
|
|
\ctikzset{bipoles/cuteinductor/width/.initial=.6}
|
|
\ctikzset{bipoles/cuteinductor/coils/.initial=5}
|
|
\ctikzset{bipoles/cuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
|
|
%% Cute choke settings
|
|
\ctikzset{bipoles/cutechoke/height/.initial=.3}
|
|
\ctikzset{bipoles/cutechoke/lower coil height/.initial=.15}
|
|
\ctikzset{bipoles/cutechoke/width/.initial=.6}
|
|
\ctikzset{bipoles/cutechoke/coils/.initial=5}
|
|
\ctikzset{bipoles/cutechoke/coil aspect/.initial=.5}%percentage of choke width, which is covered by lower coil
|
|
\ctikzset{bipoles/cutechoke/cstep/.initial=.3}
|
|
\ctikzset{bipoles/cutechoke/cdist/.initial=1.3}
|
|
\ctikzset{bipoles/cutechoke/cthick/.initial=1}
|
|
\newif\ifpgf@circuit@bipole@twolineschoke
|
|
\pgf@circuit@bipole@twolineschokefalse
|
|
\pgfkeys{/tikz/onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
|
|
\ctikzset{onelinechoke/.add code={}{\pgf@circuit@bipole@twolineschokefalse}}
|
|
\pgfkeys{/tikz/twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
|
|
\ctikzset{twolineschoke/.add code={}{\pgf@circuit@bipole@twolineschoketrue}}
|
|
%
|
|
\ctikzset{bipoles/americaninductor/height/.initial=.3}
|
|
\ctikzset{bipoles/americaninductor/height 2/.initial=.1}
|
|
\ctikzset{bipoles/americaninductor/width/.initial=.8}
|
|
\ctikzset{bipoles/americaninductor/coils/.initial=4}
|
|
\ctikzset{bipoles/americaninductor/coil height/.initial=.15}
|
|
\ctikzset{bipoles/vcuteinductor/height/.initial=.6}
|
|
\ctikzset{bipoles/vcuteinductor/lower coil height/.initial=.3}
|
|
\ctikzset{bipoles/vcuteinductor/width/.initial=.6}
|
|
\ctikzset{bipoles/vcuteinductor/coils/.initial=5}
|
|
\ctikzset{bipoles/vcuteinductor/coil aspect/.initial=.5}%percentage of inductor width, which is covered by lower coil
|
|
\ctikzset{bipoles/vamericaninductor/height/.initial=.6}
|
|
\ctikzset{bipoles/vamericaninductor/height 2/.initial=.2}
|
|
\ctikzset{bipoles/vamericaninductor/width/.initial=.8}
|
|
\ctikzset{bipoles/vamericaninductor/coils/.initial=4}
|
|
\ctikzset{bipoles/vamericaninductor/coil height/.initial=.15}
|
|
\ctikzset{bipoles/tfullgeneric/height/.initial=.70}
|
|
\ctikzset{bipoles/tfullgeneric/width/.initial=.80}
|
|
\ctikzset{bipoles/fullgeneric/height/.initial=.30}
|
|
\ctikzset{bipoles/fullgeneric/width/.initial=.80}
|
|
|
|
% Sources
|
|
|
|
\ctikzset{bipoles/esource/height/.initial=.60}
|
|
\ctikzset{bipoles/esource/width/.initial=.60}
|
|
\ctikzset{bipoles/pvsource/height/.initial=.60}
|
|
\ctikzset{bipoles/pvsource/width/.initial=.60}
|
|
\ctikzset{bipoles/isource/height/.initial=.60}
|
|
\ctikzset{bipoles/isource/width/.initial=.60}
|
|
\ctikzset{bipoles/oosource/height/.initial=.60}
|
|
\ctikzset{bipoles/oosource/width/.initial=.60}
|
|
\ctikzset{bipoles/oosource/circlesize/.initial=.65}%circlesize+circleoffset should be =1
|
|
\ctikzset{bipoles/oosource/circleoffset/.initial=.35}%circlesize+circleoffset should be =1
|
|
\ctikzset{bipoles/dcisource/angle/.initial=80}
|
|
\ctikzset{bipoles/dcisource/height/.initial=.60}
|
|
\ctikzset{bipoles/dcisource/width/.initial=.60}
|
|
\ctikzset{bipoles/dcvsource/height/.initial=.60}
|
|
\ctikzset{bipoles/dcvsource/width/.initial=.60}
|
|
\ctikzset{bipoles/vsourcetri/height/.initial=.60}
|
|
\ctikzset{bipoles/vsourcetri/width/.initial=.60}
|
|
\ctikzset{bipoles/isourceam/height/.initial=.60}
|
|
\ctikzset{bipoles/isourceam/width/.initial=.60}
|
|
\ctikzset{bipoles/vsource/height/.initial=.60}
|
|
\ctikzset{bipoles/vsource/width/.initial=.60}
|
|
\ctikzset{bipoles/vsourceam/height/.initial=.60}
|
|
\ctikzset{bipoles/vsourceam/width/.initial=.60}
|
|
\ctikzset{bipoles/vsourceam/margin/.initial=.7}
|
|
\ctikzset{bipoles/isourcesin/height/.initial=.60}
|
|
\ctikzset{bipoles/isourcesin/width/.initial=.60}
|
|
\ctikzset{bipoles/vsourcesin/height/.initial=.60}
|
|
\ctikzset{bipoles/vsourcesin/width/.initial=.60}
|
|
\ctikzset{bipoles/vsourcesquare/height/.initial=.60}
|
|
\ctikzset{bipoles/vsourcesquare/width/.initial=.60}
|
|
\ctikzset{bipoles/cisource/height/.initial=.7}
|
|
\ctikzset{bipoles/cisource/width/.initial=.7}
|
|
\ctikzset{bipoles/cisourceam/height/.initial=.7}
|
|
\ctikzset{bipoles/cisourceam/width/.initial=.7}
|
|
\ctikzset{bipoles/ecsource/height/.initial=.7}
|
|
\ctikzset{bipoles/ecsource/width/.initial=.7}
|
|
\ctikzset{bipoles/cvsource/height/.initial=.7}
|
|
\ctikzset{bipoles/cvsource/width/.initial=.7}
|
|
\ctikzset{bipoles/cvsourceam/height/.initial=.7}
|
|
\ctikzset{bipoles/cvsourceam/width/.initial=.7}
|
|
\ctikzset{bipoles/cvsourceam/margin/.initial=.7}
|
|
\ctikzset{bipoles/cvsourceam/text scale/.initial=1}
|
|
\ctikzset{bipoles/cisourcesin/width/.initial=.7}
|
|
\ctikzset{bipoles/cvsourcesin/height/.initial=.7}
|
|
\ctikzset{bipoles/cvsourcesin/width/.initial=.7}
|
|
\ctikzset{bipoles/battery/height/.initial=.6}
|
|
\ctikzset{bipoles/battery/width/.initial=.3}
|
|
\ctikzset{bipoles/battery1/height/.initial=.6}
|
|
\ctikzset{bipoles/battery1/width/.initial=.3}
|
|
\ctikzset{bipoles/battery2/height/.initial=.6}
|
|
\ctikzset{bipoles/battery2/width/.initial=.3}
|
|
|
|
% diodes
|
|
|
|
\ctikzset{bipoles/diode/height/.initial=.50}
|
|
\ctikzset{bipoles/diode/width/.initial=.40}
|
|
\ctikzset{bipoles/bidirectionaldiode/height/.initial=1.1}
|
|
\ctikzset{bipoles/bidirectionaldiode/width/.initial=1}
|
|
\ctikzset{bipoles/bidirectionaldiode/diode width left/.initial=.3}
|
|
\ctikzset{bipoles/bidirectionaldiode/diode width right/.initial=.3}
|
|
\ctikzset{bipoles/varcap/height/.initial=.50}
|
|
\ctikzset{bipoles/varcap/width/.initial=.45}
|
|
|
|
% switches
|
|
|
|
\ctikzset{bipoles/spst/height/.initial=.35}
|
|
\ctikzset{bipoles/spst/width/.initial=.35}
|
|
\ctikzset{bipoles/spst/depth/.initial=.2}
|
|
\ctikzset{bipoles/nos/height/.initial=.3}
|
|
\ctikzset{bipoles/nos/width/.initial=.35}
|
|
\ctikzset{bipoles/nos/depth/.initial=.2}
|
|
\ctikzset{bipoles/ncs/height/.initial=.35}
|
|
\ctikzset{bipoles/ncs/width/.initial=.35}
|
|
\ctikzset{bipoles/ncs/depth/.initial=.2}
|
|
|
|
% misc
|
|
|
|
\ctikzset{bipoles/european gas filled surge arrester/height/.initial=.30}
|
|
\ctikzset{bipoles/european gas filled surge arrester/width/.initial=.80}
|
|
\ctikzset{bipoles/european gas filled surge arrester/inside/.initial=.30}
|
|
\ctikzset{bipoles/american gas filled surge arrester/height/.initial=.60}
|
|
\ctikzset{bipoles/american gas filled surge arrester/width/.initial=.60}
|
|
\ctikzset{bipoles/american gas filled surge arrester/inside/.initial=.15}
|
|
\ctikzset{bipoles/american gas filled surge arrester/dot x/.initial=.25}
|
|
\ctikzset{bipoles/american gas filled surge arrester/dot y/.initial=.45}
|
|
\ctikzset{bipoles/american gas filled surge arrester/size/.initial=.1}
|
|
\ctikzset{bipoles/fuse/height/.initial=.20}
|
|
\ctikzset{bipoles/fuse/width/.initial=.50}
|
|
\ctikzset{bipoles/afuse/height/.initial=.20}
|
|
\ctikzset{bipoles/afuse/width/.initial=.50}
|
|
\ctikzset{bipoles/memristor/height/.initial=.30}
|
|
\ctikzset{bipoles/memristor/wave height/.initial=.5}
|
|
\ctikzset{bipoles/memristor/width/.initial=.80}
|
|
\ctikzset{bipoles/open/height/.initial=.3} %necessary for curly voltages
|
|
\ctikzset{bipoles/open/width/.initial=.3} %necessary for curly voltages
|
|
\ctikzset{bipoles/open/voltage/straight label distance/.initial=0}
|
|
\ctikzset{bipoles/open/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/short/height/.initial=0} %dummy height for voltage positioning
|
|
\ctikzset{bipoles/short/width/.initial=0} %dummy width for voltage positioning
|
|
%\ctikzset{bipoles/short/voltage/straight label distance/.initial=.2}
|
|
%\ctikzset{bipoles/short/voltage/distance from node/.initial=.5}
|
|
\ctikzset{bipoles/ammeter/height/.initial=.60}
|
|
\ctikzset{bipoles/ammeter/width/.initial=.60}
|
|
\ctikzset{bipoles/ohmmeter/height/.initial=.60}
|
|
\ctikzset{bipoles/ohmmeter/width/.initial=.60}
|
|
\ctikzset{bipoles/voltmeter/height/.initial=.60}
|
|
\ctikzset{bipoles/voltmeter/width/.initial=.60}
|
|
\ctikzset{bipoles/smeter/height/.initial=.60}
|
|
\ctikzset{bipoles/smeter/width/.initial=.60}
|
|
\ctikzset{bipoles/qmeter/depth/.initial=.40}
|
|
\ctikzset{bipoles/qmeter/height/.initial=.80}
|
|
\ctikzset{bipoles/qmeter/width/.initial=.60}
|
|
\ctikzset{bipoles/iloop/width/.initial=.40}
|
|
\ctikzset{bipoles/iloop/height/.initial=.60}
|
|
\ctikzset{bipoles/oscope/height/.initial=.60}
|
|
\ctikzset{bipoles/oscope/width/.initial=.60}
|
|
\ctikzset{bipoles/buffer/height/.initial=1}
|
|
\ctikzset{bipoles/buffer/width/.initial=1}
|
|
\ctikzset{bipoles/not port/width/.initial=1}
|
|
\ctikzset{bipoles/not port/height/.initial=.8}
|
|
\ctikzset{bipoles/not port/circle width/.initial=.15}
|
|
\ctikzset{bipoles/lamp/height/.initial=.60}
|
|
\ctikzset{bipoles/lamp/width/.initial=.60}
|
|
\ctikzset{bipoles/bulb/height/.initial=.8}
|
|
\ctikzset{bipoles/bulb/width/.initial=.8}
|
|
\ctikzset{bipoles/tline/height/.initial=.3}
|
|
\ctikzset{bipoles/tline/width/.initial=.8}
|
|
\ctikzset{bipoles/squid/height/.initial=.60}
|
|
\ctikzset{bipoles/squid/width/.initial=.60}
|
|
\ctikzset{bipoles/barrier/height/.initial=.60}
|
|
\ctikzset{bipoles/barrier/width/.initial=.60}
|
|
\ctikzset{bipoles/thermocouple/height/.initial=.250}
|
|
\ctikzset{bipoles/thermocouple/height 2/.initial=.60}
|
|
\ctikzset{bipoles/thermocouple/width/.initial=.140}
|
|
\ctikzset{bipoles/pushbutton/height/.initial=.5}
|
|
\ctikzset{bipoles/pushbutton/height 2/.initial=.2}
|
|
\ctikzset{bipoles/pushbutton/width/.initial=.50}
|
|
|
|
\ctikzset{bipoles/twoport/width/.initial=.7}
|
|
\ctikzset{bipoles/twoport/height/.initial=.7}
|
|
\ctikzset{bipoles/twoport/text/.initial=}
|
|
\ctikzset{bipoles/vco/width/.initial=.7}
|
|
\ctikzset{bipoles/bandpass/width/.initial=.7}
|
|
\ctikzset{bipoles/bandstop/width/.initial=.7}
|
|
\ctikzset{bipoles/highpass/width/.initial=.7}
|
|
\ctikzset{bipoles/lowpass/width/.initial=.7}
|
|
\ctikzset{bipoles/adc/width/.initial=.7}
|
|
\ctikzset{bipoles/dac/width/.initial=.7}
|
|
\ctikzset{bipoles/dsp/width/.initial=.7}
|
|
\ctikzset{bipoles/fft/width/.initial=.7}
|
|
\ctikzset{bipoles/amp/width/.initial=.7}
|
|
\ctikzset{bipoles/vamp/width/.initial=.7}
|
|
\ctikzset{bipoles/piattenuator/width/.initial=.7}
|
|
\ctikzset{bipoles/vpiattenuator/width/.initial=.7}
|
|
\ctikzset{bipoles/tattenuator/width/.initial=.7}
|
|
\ctikzset{bipoles/vtattenuator/width/.initial=.7}
|
|
\ctikzset{bipoles/phaseshifter/width/.initial=.7}
|
|
\ctikzset{bipoles/vphaseshifter/width/.initial=.7}
|
|
\ctikzset{bipoles/detector/width/.initial=.7}
|
|
|
|
% crossing wires
|
|
\ctikzset{bipoles/crossing/size/.initial=.2}
|
|
|
|
% Transistors starts here
|
|
|
|
\newif\ifpgf@circuit@trans@depletiontype
|
|
\pgf@circuit@trans@depletiontypefalse
|
|
|
|
\newif\ifpgf@circuit@mos@arrows
|
|
\ctikzset{tripoles/mos style/.is choice}
|
|
\ctikzset{tripoles/mos style/no arrows/.code={\pgf@circuit@mos@arrowsfalse}}
|
|
\ctikzset{tripoles/mos style/arrows/.code={\pgf@circuit@mos@arrowstrue}}
|
|
\pgfkeys{/tikz/arrowmos/.add code={}{\pgf@circuit@mos@arrowstrue}}
|
|
\pgfkeys{/tikz/noarrowmos/.add code={}{\pgf@circuit@mos@arrowsfalse}}
|
|
|
|
% Fixed label positions
|
|
\newif\ifpgf@circuit@transisors@fixlabels
|
|
\pgf@circuit@transisors@fixlabelstrue
|
|
\pgfkeys{/tikz/center transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
|
|
\ctikzset{fix transistors text/.add code={}{\pgf@circuit@transisors@fixlabelstrue}}
|
|
\pgfkeys{/tikz/legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
|
|
\ctikzset{legacy transistors text/.add code={}{\pgf@circuit@transisors@fixlabelsfalse}}
|
|
|
|
% Option solderdot for fet
|
|
\newif\ifpgf@circuit@fet@solderdot
|
|
\pgfkeys{/tikz/solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
|
|
\ctikzset{solderdot/.add code={}{\pgf@circuit@fet@solderdottrue}}
|
|
\pgfkeys{/tikz/nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
|
|
\ctikzset{nosolderdot/.add code={}{\pgf@circuit@fet@solderdotfalse}}
|
|
|
|
% Option bodydiode for fet
|
|
\newif\ifpgf@circuit@fet@bodydiode
|
|
\pgfkeys{/tikz/bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
|
|
\ctikzset{bodydiode/.add code={}{\pgf@circuit@fet@bodydiodetrue}}
|
|
\pgfkeys{/tikz/nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
|
|
\ctikzset{nobodydiode/.add code={}{\pgf@circuit@fet@bodydiodefalse}}
|
|
|
|
% Option draw fet without gate connection
|
|
\newif\ifpgf@circuit@bpt@drawgate
|
|
\pgf@circuit@bpt@drawgatetrue
|
|
\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
|
|
\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
|
|
\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
|
|
\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawgatefalse}}
|
|
|
|
% Option draw bpt without base connection
|
|
\newif\ifpgf@circuit@bpt@drawbase
|
|
\pgf@circuit@bpt@drawbasetrue
|
|
\pgfkeys{/tikz/nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
|
|
\ctikzset{nobase/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
|
|
\pgfkeys{/tikz/nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
|
|
\ctikzset{nogate/.add code={}{\pgf@circuit@bpt@drawbasefalse}}
|
|
|
|
% Option draw bpt with optical input
|
|
\newif\ifpgf@circuit@bpt@drawphoto
|
|
\pgf@circuit@bpt@drawphotofalse
|
|
\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
|
|
\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
|
|
\pgfkeys{/tikz/photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
|
|
\ctikzset{photo/.add code={}{\pgf@circuit@bpt@drawphototrue}}
|
|
|
|
% Option draw fet without bulk connection -- Added by Burak Kelleci
|
|
\newif\ifpgf@circuit@bpt@drawbulk
|
|
\pgfkeys{/tikz/bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
|
|
\ctikzset{bulk/.add code={}{\pgf@circuit@bpt@drawbulktrue}}
|
|
\pgfkeys{/tikz/nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
|
|
\ctikzset{nobulk/.add code={}{\pgf@circuit@bpt@drawbulkfalse}}
|
|
|
|
% Option draw pmos with empty circle
|
|
\newif\ifpgf@circuit@pmos@emptycircle
|
|
\pgf@circuit@pmos@emptycirclefalse
|
|
\ctikzset{tripoles/pmos style/.is choice}
|
|
\pgfkeys{/tikz/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
|
|
\ctikzset{tripoles/pmos style/emptycircle/.add code={}{\pgf@circuit@pmos@emptycircletrue}}
|
|
% Option draw pmos with no circle
|
|
\newif\ifpgf@circuit@pmos@nocircle
|
|
\pgf@circuit@pmos@nocirclefalse
|
|
\pgfkeys{/tikz/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
|
|
\ctikzset{tripoles/pmos style/nocircle/.add code={}{\pgf@circuit@pmos@nocircletrue}}
|
|
% back to normal
|
|
\pgfkeys{/tikz/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
|
|
\ctikzset{tripoles/pmos style/fullcircle/.add code={}{\pgf@circuit@pmos@emptycirclefalse\pgf@circuit@pmos@nocirclefalse}}
|
|
% arrows at the end, the correct way
|
|
\newif\ifpgf@circuit@trans@arrowatend
|
|
\pgf@circuit@trans@arrowatendfalse
|
|
\ctikzset{transistors/arrow pos/.is choice}
|
|
\ctikzset{transistors/arrow pos/legacy/.code={\pgf@circuit@trans@arrowatendfalse}}
|
|
\ctikzset{transistors/arrow pos/end/.code={\pgf@circuit@trans@arrowatendtrue}}
|
|
|
|
\newif\ifpgf@circuit@trans@ntype
|
|
\pgf@circuit@trans@ntypetrue %default true
|
|
%\newif\ifpgf@circuit@trans@ptype
|
|
%\ctikzset{tripoles/nmos/.add code={\pgf@circuit@trans@ntypetrue}}
|
|
\ctikzset{tripoles/nmos/width/.initial=.7}
|
|
\ctikzset{tripoles/nmos/gate height/.initial=.35}
|
|
\ctikzset{tripoles/nmos/base height/.initial=.5}
|
|
\ctikzset{tripoles/nmos/conn height/.initial=0}
|
|
\ctikzset{tripoles/nmos/height/.initial=1.1}
|
|
\ctikzset{tripoles/nmos/base width/.initial=.5}
|
|
\ctikzset{tripoles/nmos/gate width/.initial=.62}
|
|
\ctikzset{tripoles/nmos/arrow pos/.initial=.6}
|
|
\ctikzset{tripoles/nmos/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/nmos/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/nmos/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/nmos/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/pmos/width/.initial=.7}
|
|
\ctikzset{tripoles/pmos/gate height/.initial=.35}
|
|
\ctikzset{tripoles/pmos/base height/.initial=.5}
|
|
\ctikzset{tripoles/pmos/conn height/.initial=0}
|
|
\ctikzset{tripoles/pmos/height/.initial=1.1}
|
|
\ctikzset{tripoles/pmos/base width/.initial=.5}
|
|
\ctikzset{tripoles/pmos/gate width/.initial=.62}
|
|
\ctikzset{tripoles/pmos/arrow pos/.initial=.4}
|
|
\ctikzset{tripoles/pmos/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pmos/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pmos/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pmos/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/hemt/width/.initial=.7}
|
|
\ctikzset{tripoles/hemt/gate height/.initial=.35}
|
|
\ctikzset{tripoles/hemt/base height/.initial=.5}
|
|
\ctikzset{tripoles/hemt/conn height/.initial=0}
|
|
\ctikzset{tripoles/hemt/height/.initial=1.1}
|
|
\ctikzset{tripoles/hemt/base width/.initial=.5}
|
|
\ctikzset{tripoles/hemt/gate width/.initial=.62}
|
|
\ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/hemt/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/nfet/width/.initial=.7}
|
|
\ctikzset{tripoles/nfet/gate height/.initial=.35}
|
|
\ctikzset{tripoles/nfet/base height/.initial=.5}
|
|
\ctikzset{tripoles/nfet/conn height/.initial=0}
|
|
\ctikzset{tripoles/nfet/height/.initial=1.1}
|
|
\ctikzset{tripoles/nfet/base width/.initial=.5}
|
|
\ctikzset{tripoles/nfet/gate width/.initial=.62}
|
|
\ctikzset{tripoles/nfet/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/nfet/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/nfet/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/nfet/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/pfet/width/.initial=.7}
|
|
\ctikzset{tripoles/pfet/gate height/.initial=.35}
|
|
\ctikzset{tripoles/pfet/base height/.initial=.5}
|
|
\ctikzset{tripoles/pfet/conn height/.initial=0}
|
|
\ctikzset{tripoles/pfet/height/.initial=1.1}
|
|
\ctikzset{tripoles/pfet/base width/.initial=.5}
|
|
\ctikzset{tripoles/pfet/gate width/.initial=.62}
|
|
\ctikzset{tripoles/pfet/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pfet/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pfet/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pfet/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/nigfete/width/.initial=.7}
|
|
\ctikzset{tripoles/nigfete/gate height/.initial=.35}
|
|
\ctikzset{tripoles/nigfete/base height/.initial=.5}
|
|
\ctikzset{tripoles/nigfete/conn height/.initial=.35}
|
|
\ctikzset{tripoles/nigfete/height/.initial=1.1}
|
|
\ctikzset{tripoles/nigfete/base width/.initial=.5}
|
|
\ctikzset{tripoles/nigfete/gate width/.initial=.62}
|
|
\ctikzset{tripoles/nigfete/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/nigfete/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/nigfete/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/nigfete/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/nigfetd/width/.initial=.7}
|
|
\ctikzset{tripoles/nigfetd/gate height/.initial=.35}
|
|
\ctikzset{tripoles/nigfetd/base height/.initial=.5}
|
|
\ctikzset{tripoles/nigfetd/conn height/.initial=.35}
|
|
\ctikzset{tripoles/nigfetd/height/.initial=1.1}
|
|
\ctikzset{tripoles/nigfetd/base width/.initial=.5}
|
|
\ctikzset{tripoles/nigfetd/gate width/.initial=.62}
|
|
\ctikzset{tripoles/nigfetd/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/nigfetd/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/nigfetd/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/nigfetd/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/nigfetebulk/width/.initial=.7}
|
|
\ctikzset{tripoles/nigfetebulk/gate height/.initial=.35}
|
|
\ctikzset{tripoles/nigfetebulk/base height/.initial=.5}
|
|
\ctikzset{tripoles/nigfetebulk/conn height/.initial=.35}
|
|
\ctikzset{tripoles/nigfetebulk/height/.initial=1.1}
|
|
\ctikzset{tripoles/nigfetebulk/base width/.initial=.5}
|
|
\ctikzset{tripoles/nigfetebulk/gate width/.initial=.62}
|
|
\ctikzset{tripoles/nigfetebulk/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/nigfetebulk/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/nigfetebulk/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/nigfetebulk/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/pigfete/width/.initial=.7}
|
|
\ctikzset{tripoles/pigfete/gate height/.initial=.35}
|
|
\ctikzset{tripoles/pigfete/base height/.initial=.5}
|
|
\ctikzset{tripoles/pigfete/conn height/.initial=.35}
|
|
\ctikzset{tripoles/pigfete/height/.initial=1.1}
|
|
\ctikzset{tripoles/pigfete/base width/.initial=.5}
|
|
\ctikzset{tripoles/pigfete/gate width/.initial=.62}
|
|
\ctikzset{tripoles/pigfete/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pigfete/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pigfete/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pigfete/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/pigfetd/width/.initial=.7}
|
|
\ctikzset{tripoles/pigfetd/gate height/.initial=.35}
|
|
\ctikzset{tripoles/pigfetd/base height/.initial=.5}
|
|
\ctikzset{tripoles/pigfetd/conn height/.initial=.35}
|
|
\ctikzset{tripoles/pigfetd/height/.initial=1.1}
|
|
\ctikzset{tripoles/pigfetd/base width/.initial=.5}
|
|
\ctikzset{tripoles/pigfetd/gate width/.initial=.62}
|
|
\ctikzset{tripoles/pigfetd/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pigfetd/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pigfetd/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pigfetd/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/pigfetebulk/width/.initial=.7}
|
|
\ctikzset{tripoles/pigfetebulk/gate height/.initial=.35}
|
|
\ctikzset{tripoles/pigfetebulk/conn height/.initial=.35}
|
|
\ctikzset{tripoles/pigfetebulk/base height/.initial=.5}
|
|
\ctikzset{tripoles/pigfetebulk/height/.initial=1.1}
|
|
\ctikzset{tripoles/pigfetebulk/base width/.initial=.5}
|
|
\ctikzset{tripoles/pigfetebulk/gate width/.initial=.62}
|
|
\ctikzset{tripoles/pigfetebulk/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pigfetebulk/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pigfetebulk/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pigfetebulk/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/npn/width/.initial=.6}
|
|
\ctikzset{tripoles/npn/base height/.initial=.45}
|
|
\ctikzset{tripoles/npn/base height 2/.initial=.15}
|
|
\ctikzset{tripoles/npn/base height/.initial=.4}
|
|
\ctikzset{tripoles/npn/conn height/.initial=0}
|
|
\ctikzset{tripoles/npn/height/.initial=1.1}
|
|
\ctikzset{tripoles/npn/base width/.initial=.5}
|
|
\ctikzset{tripoles/npn/arrow pos/.initial=.5}
|
|
\ctikzset{tripoles/npn/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/npn/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/npn/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/npn/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/pnp/width/.initial=.6}
|
|
\ctikzset{tripoles/pnp/base height/.initial=.45}
|
|
\ctikzset{tripoles/pnp/base height 2/.initial=.15}
|
|
\ctikzset{tripoles/pnp/base height/.initial=.4}
|
|
\ctikzset{tripoles/pnp/conn height/.initial=0}
|
|
\ctikzset{tripoles/pnp/height/.initial=1.1}
|
|
\ctikzset{tripoles/pnp/base width/.initial=.5}
|
|
\ctikzset{tripoles/pnp/arrow pos/.initial=.5}
|
|
\ctikzset{tripoles/pnp/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pnp/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pnp/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pnp/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/pigbt/width/.initial=.6}
|
|
\ctikzset{tripoles/pigbt/gate height/.initial=.45}
|
|
\ctikzset{tripoles/pigbt/gate height 2/.initial=.15}
|
|
\ctikzset{tripoles/pigbt/base height/.initial=.4}
|
|
\ctikzset{tripoles/pigbt/conn height/.initial=0}
|
|
\ctikzset{tripoles/pigbt/height/.initial=1.1}
|
|
\ctikzset{tripoles/pigbt/gate width/.initial=.62}
|
|
\ctikzset{tripoles/pigbt/base width/.initial=.5}
|
|
\ctikzset{tripoles/pigbt/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pigbt/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pigbt/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pigbt/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/nigbt/width/.initial=.6}
|
|
\ctikzset{tripoles/nigbt/gate height/.initial=.45}
|
|
\ctikzset{tripoles/nigbt/gate height 2/.initial=.15}
|
|
\ctikzset{tripoles/nigbt/base height/.initial=.4}
|
|
\ctikzset{tripoles/nigbt/conn height/.initial=0}
|
|
\ctikzset{tripoles/nigbt/height/.initial=1.1}
|
|
\ctikzset{tripoles/nigbt/gate width/.initial=.62}
|
|
\ctikzset{tripoles/nigbt/base width/.initial=.5}
|
|
\ctikzset{tripoles/nigbt/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/nigbt/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/nigbt/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/nigbt/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/Lpigbt/width/.initial=.6}
|
|
\ctikzset{tripoles/Lpigbt/gate height/.initial=.45}
|
|
\ctikzset{tripoles/Lpigbt/gate height 2/.initial=.15}
|
|
\ctikzset{tripoles/Lpigbt/base height/.initial=.4}
|
|
\ctikzset{tripoles/Lpigbt/conn height/.initial=.4}
|
|
\ctikzset{tripoles/Lpigbt/height/.initial=1.1}
|
|
\ctikzset{tripoles/Lpigbt/gate width/.initial=.62}
|
|
\ctikzset{tripoles/Lpigbt/base width/.initial=.5}
|
|
\ctikzset{tripoles/Lpigbt/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/Lpigbt/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/Lpigbt/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/Lpigbt/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/Lnigbt/width/.initial=.6}
|
|
\ctikzset{tripoles/Lnigbt/gate height/.initial=.45}
|
|
\ctikzset{tripoles/Lnigbt/gate height 2/.initial=.15}
|
|
\ctikzset{tripoles/Lnigbt/base height/.initial=.4}
|
|
\ctikzset{tripoles/Lnigbt/conn height/.initial=.4}
|
|
\ctikzset{tripoles/Lnigbt/height/.initial=1.1}
|
|
\ctikzset{tripoles/Lnigbt/gate width/.initial=.62}
|
|
\ctikzset{tripoles/Lnigbt/base width/.initial=.5}
|
|
\ctikzset{tripoles/Lnigbt/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/Lnigbt/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/Lnigbt/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/Lnigbt/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/njfet/width/.initial=.7}
|
|
\ctikzset{tripoles/njfet/gate height/.initial=.5}
|
|
\ctikzset{tripoles/njfet/gate height 2/.initial=.35}
|
|
\ctikzset{tripoles/njfet/gate width/.initial=.5}
|
|
\ctikzset{tripoles/njfet/conn height/.initial=.35}
|
|
\ctikzset{tripoles/njfet/height/.initial=1.1}
|
|
\ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/njfet/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/njfet/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/njfet/curr direction/.initial=1}
|
|
|
|
\ctikzset{tripoles/pjfet/width/.initial=.7}
|
|
\ctikzset{tripoles/pjfet/gate height/.initial=.5}
|
|
\ctikzset{tripoles/pjfet/gate height 2/.initial=.35}
|
|
\ctikzset{tripoles/pjfet/gate width/.initial=.5}
|
|
\ctikzset{tripoles/pjfet/conn height/.initial=.35}
|
|
\ctikzset{tripoles/pjfet/height/.initial=1.1}
|
|
\ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/pjfet/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/pjfet/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/pjfet/curr direction/.initial=-1}
|
|
|
|
\ctikzset{tripoles/isfet/width/.initial=1}
|
|
\ctikzset{tripoles/isfet/gate height/.initial=.35}
|
|
\ctikzset{tripoles/isfet/base height/.initial=.5}
|
|
\ctikzset{tripoles/isfet/height/.initial=1.1}
|
|
\ctikzset{tripoles/isfet/base width/.initial=.3}
|
|
\ctikzset{tripoles/isfet/gate width/.initial=.5}
|
|
\ctikzset{tripoles/isfet/conn height/.initial=0}
|
|
\ctikzset{tripoles/isfet/wave width/.initial=.16}
|
|
\ctikzset{tripoles/isfet/wave amp/.initial=.06}
|
|
\ctikzset{tripoles/isfet/waves y sep/.initial=.22}
|
|
\ctikzset{tripoles/isfet/waves x sep/.initial=.8}
|
|
\ctikzset{tripoles/isfet/bodydiode scale/.initial=.3}
|
|
\ctikzset{tripoles/isfet/bodydiode distance/.initial=.3}
|
|
\ctikzset{tripoles/isfet/bodydiode conn/.initial=.6}
|
|
\ctikzset{tripoles/isfet/curr direction/.initial=1}
|
|
%
|
|
% multi-emitter and multi-collector BJTs by Romano Giannetti
|
|
%
|
|
\ctikzset{tripoles/bjt/emitters/.initial=1}
|
|
\ctikzset{tripoles/bjt/collectors/.initial=1}
|
|
\pgfkeys{/tikz/emitters/.add code={}{\ctikzset{tripoles/bjt/emitters=#1}}}
|
|
\pgfkeys{/tikz/collectors/.add code={}{\ctikzset{tripoles/bjt/collectors=#1}}}
|
|
\ctikzset{tripoles/bjt/pins width/.initial=0.3}
|
|
\pgfkeys{/tikz/bjt pins width/.add code={}{\ctikzset{tripoles/bjt/pins width=#1}}}
|
|
\ctikzset{tripoles/bjt/multi height/.initial=.5}
|
|
\pgfkeys{/tikz/bjt multi height/.add code={}{\ctikzset{tripoles/bjt/multi height/.initial=#1}}}
|
|
%
|
|
\ctikzset{tripoles/bjt/width/.initial=.3}
|
|
\ctikzset{tripoles/bjt/base height 2/.initial=.4}
|
|
\ctikzset{tripoles/bjt/base height/.initial=1.1}
|
|
\ctikzset{tripoles/bjt/height/.initial=.4}
|
|
\ctikzset{tripoles/bjt/base width/.initial=1}
|
|
\ctikzset{tripoles/bjt/arrow pos/.initial=.5}
|
|
% do NOT touch these two!
|
|
\ctikzset{tripoles/bjt/npn/curr direction/.initial=1}
|
|
\ctikzset{tripoles/bjt/pnp/curr direction/.initial=-1}
|
|
|
|
%% transistors stop here
|
|
|
|
%% Logic ports
|
|
|
|
\newif\ifpgf@circuit@europeanlogicport
|
|
\ctikzset{logic ports/.is choice}
|
|
\ctikzset{logic ports/european/.code= {\pgf@circuit@europeanlogicporttrue
|
|
\tikzset{and port/.style={shape=european and port}}%
|
|
\tikzset{or port/.style={shape=european or port}}%
|
|
\tikzset{xor port/.style={shape=european xor port}}%
|
|
\tikzset{buffer port/.style={shape=european buffer port}}%
|
|
\tikzset{not port/.style={shape=european not port}}%
|
|
\tikzset{nand port/.style={shape=european nand port}}%
|
|
\tikzset{nor port/.style={shape=european nor port}}%
|
|
\tikzset{xnor port/.style={shape=european xnor port}}%
|
|
}}
|
|
\ctikzset{logic ports/american/.code= {\pgf@circuit@europeanlogicportfalse
|
|
\tikzset{and port/.style={shape=american and port}}%
|
|
\tikzset{or port/.style={shape=american or port}}%
|
|
\tikzset{xor port/.style={shape=american xor port}}%
|
|
\tikzset{buffer port/.style={shape=american buffer port}}%
|
|
\tikzset{not port/.style={shape=american not port}}%
|
|
\tikzset{nand port/.style={shape=american nand port}}%
|
|
\tikzset{nor port/.style={shape=american nor port}}%
|
|
\tikzset{xnor port/.style={shape=american xnor port}}%
|
|
}}
|
|
|
|
\ctikzset{logic ports origin/.is choice}
|
|
\ctikzset{logic ports origin/legacy/.code={
|
|
\ctikzset{tripoles/american and port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/american nand port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/american nor port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/american or port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/american xor port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/american xnor port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european and port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european nand port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european or port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european nor port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european xor port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european xnor port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european buffer port/origin/.initial=0.8}%
|
|
\ctikzset{tripoles/european not port/origin/.initial=0.8}%
|
|
}%
|
|
}
|
|
\ctikzset{logic ports origin/center/.code={%
|
|
\ctikzset{tripoles/american and port/origin/.initial=0}%
|
|
\ctikzset{tripoles/american nand port/origin/.initial=0}%
|
|
\ctikzset{tripoles/american nor port/origin/.initial=0}%
|
|
\ctikzset{tripoles/american or port/origin/.initial=0}%
|
|
\ctikzset{tripoles/american xor port/origin/.initial=0}%
|
|
\ctikzset{tripoles/american xnor port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european and port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european nand port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european or port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european nor port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european xor port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european xnor port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european buffer port/origin/.initial=0}%
|
|
\ctikzset{tripoles/european not port/origin/.initial=0}%
|
|
}%
|
|
}
|
|
|
|
|
|
\ctikzset{tripoles/american and port/width/.initial=1.1}
|
|
\ctikzset{tripoles/american and port/height/.initial=.8}
|
|
\ctikzset{tripoles/american and port/port width/.initial=.7}
|
|
\ctikzset{tripoles/american and port/input height/.initial=.5}
|
|
\ctikzset{tripoles/american nand port/width/.initial=1.1}
|
|
\ctikzset{tripoles/american nand port/height/.initial=.8}
|
|
\ctikzset{tripoles/american nand port/port width/.initial=.7}
|
|
\ctikzset{tripoles/american nand port/circle width/.initial=.15}
|
|
\ctikzset{tripoles/american nand port/input height/.initial=.5}
|
|
\ctikzset{tripoles/american or port/width/.initial=1.1}
|
|
\ctikzset{tripoles/american or port/height/.initial=.8}
|
|
\ctikzset{tripoles/american or port/port width/.initial=.7}
|
|
\ctikzset{tripoles/american or port/input height/.initial=.5}
|
|
\ctikzset{tripoles/american or port/input skip/.initial=.25}
|
|
\ctikzset{tripoles/american or port/aaa/.initial=.6}
|
|
\ctikzset{tripoles/american or port/bbb/.initial=.4}
|
|
\ctikzset{tripoles/american or port/ccc/.initial=.5}
|
|
\ctikzset{tripoles/american or port/ddd/.initial=.0}
|
|
\ctikzset{tripoles/american nor port/width/.initial=1.1}
|
|
\ctikzset{tripoles/american nor port/height/.initial=.8}
|
|
\ctikzset{tripoles/american nor port/port width/.initial=.7}
|
|
\ctikzset{tripoles/american nor port/input height/.initial=.5}
|
|
\ctikzset{tripoles/american nor port/input skip/.initial=.25}
|
|
\ctikzset{tripoles/american nor port/circle width/.initial=.15}
|
|
\ctikzset{tripoles/american nor port/aaa/.initial=.6}
|
|
\ctikzset{tripoles/american nor port/bbb/.initial=.4}
|
|
\ctikzset{tripoles/american nor port/ccc/.initial=.5}
|
|
\ctikzset{tripoles/american nor port/ddd/.initial=.0}
|
|
\ctikzset{tripoles/american xor port/width/.initial=1.1}
|
|
\ctikzset{tripoles/american xor port/height/.initial=.8}
|
|
\ctikzset{tripoles/american xor port/port width/.initial=.7}
|
|
\ctikzset{tripoles/american xor port/input height/.initial=.5}
|
|
\ctikzset{tripoles/american xor port/input skip/.initial=.15}
|
|
\ctikzset{tripoles/american xor port/distance/.initial=.1}
|
|
\ctikzset{tripoles/american xnor port/width/.initial=1.1}
|
|
\ctikzset{tripoles/american xnor port/height/.initial=.8}
|
|
\ctikzset{tripoles/american xnor port/port width/.initial=.7}
|
|
\ctikzset{tripoles/american xnor port/input height/.initial=.5}
|
|
\ctikzset{tripoles/american xnor port/input skip/.initial=.15}
|
|
\ctikzset{tripoles/american xnor port/distance/.initial=.1}
|
|
\ctikzset{tripoles/american xnor port/circle width/.initial=.15}
|
|
\ctikzset{tripoles/american and port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/american and port/inputs/.initial=2}
|
|
% variable number of inputs
|
|
\ctikzset{tripoles/american nand port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/american nand port/inputs/.initial=2}
|
|
\ctikzset{tripoles/american nor port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/american nor port/inputs/.initial=2}
|
|
\ctikzset{tripoles/american nor port/angle/.initial=70}
|
|
\ctikzset{tripoles/american nor port/inner/.initial=0.3}
|
|
\ctikzset{tripoles/american or port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/american or port/inputs/.initial=2}
|
|
\ctikzset{tripoles/american or port/angle/.initial=70}
|
|
\ctikzset{tripoles/american or port/inner/.initial=0.3}
|
|
\ctikzset{tripoles/american xor port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/american xor port/inputs/.initial=2}
|
|
\ctikzset{tripoles/american xor port/angle/.initial=70}
|
|
\ctikzset{tripoles/american xor port/inner/.initial=0.3}
|
|
\ctikzset{tripoles/american xnor port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/american xnor port/inputs/.initial=2}
|
|
\ctikzset{tripoles/american xnor port/angle/.initial=70}
|
|
\ctikzset{tripoles/american xnor port/inner/.initial=0.3}
|
|
|
|
\ctikzset{tripoles/european and port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european and port/height/.initial=.65}
|
|
\ctikzset{tripoles/european and port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european and port/input height/.initial=.6}
|
|
\ctikzset{tripoles/european or port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european or port/height/.initial=.65}
|
|
\ctikzset{tripoles/european or port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european or port/input height/.initial=.6}
|
|
\ctikzset{tripoles/european xor port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european xor port/height/.initial=.65}
|
|
\ctikzset{tripoles/european xor port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european xor port/input height/.initial=.6}
|
|
\ctikzset{tripoles/european nand port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european nand port/not height/.initial=.3}
|
|
\ctikzset{tripoles/european nand port/not width/.initial=.8}
|
|
\ctikzset{tripoles/european nand port/height/.initial=.65}
|
|
\ctikzset{tripoles/european nand port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european nand port/input height/.initial=.6}
|
|
\ctikzset{tripoles/european buffer port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european buffer port/not height/.initial=.3}
|
|
\ctikzset{tripoles/european buffer port/not width/.initial=.8}
|
|
\ctikzset{tripoles/european buffer port/height/.initial=.65}
|
|
\ctikzset{tripoles/european buffer port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european buffer port/input height/.initial=0}
|
|
\ctikzset{tripoles/european not port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european not port/not height/.initial=.3}
|
|
\ctikzset{tripoles/european not port/not width/.initial=.8}
|
|
\ctikzset{tripoles/european not port/height/.initial=.65}
|
|
\ctikzset{tripoles/european not port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european not port/input height/.initial=0}
|
|
\ctikzset{tripoles/european xnor port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european xnor port/not height/.initial=.3}
|
|
\ctikzset{tripoles/european xnor port/not width/.initial=.8}
|
|
\ctikzset{tripoles/european xnor port/height/.initial=.65}
|
|
\ctikzset{tripoles/european xnor port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european xnor port/input height/.initial=.6}
|
|
\ctikzset{tripoles/european nor port/width/.initial=1.4}
|
|
\ctikzset{tripoles/european nor port/not height/.initial=.3}
|
|
\ctikzset{tripoles/european nor port/not width/.initial=.8}
|
|
\ctikzset{tripoles/european nor port/height/.initial=.65}
|
|
\ctikzset{tripoles/european nor port/reserved/.initial=.6}
|
|
\ctikzset{tripoles/european nor port/input height/.initial=.6}
|
|
% variable number of inputs
|
|
\ctikzset{tripoles/european and port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european and port/inputs/.initial=2}
|
|
\ctikzset{tripoles/european nand port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european nand port/inputs/.initial=2}
|
|
\ctikzset{tripoles/european or port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european or port/inputs/.initial=2}
|
|
\ctikzset{tripoles/european nor port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european nor port/inputs/.initial=2}
|
|
\ctikzset{tripoles/european xor port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european xor port/inputs/.initial=2}
|
|
\ctikzset{tripoles/european xnor port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european xnor port/inputs/.initial=2}
|
|
\ctikzset{tripoles/european buffer port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european buffer port/inputs/.initial=1}%
|
|
\ctikzset{tripoles/european not port/origin/.initial=0.8}
|
|
\ctikzset{tripoles/european not port/inputs/.initial=1}%
|
|
%%% parameters that are not used anymore after multi-input
|
|
%%% gates --- left for compatibility of source code.
|
|
\ctikzset{tripoles/american xor port/aaa/.initial=.6}
|
|
\ctikzset{tripoles/american xor port/bbb/.initial=.4}
|
|
\ctikzset{tripoles/american xor port/ccc/.initial=.5}
|
|
\ctikzset{tripoles/american xor port/ddd/.initial=.0}
|
|
\ctikzset{tripoles/american xnor port/aaa/.initial=.6}
|
|
\ctikzset{tripoles/american xnor port/bbb/.initial=.4}
|
|
\ctikzset{tripoles/american xnor port/ccc/.initial=.5}
|
|
\ctikzset{tripoles/american xnor port/ddd/.initial=.0}
|
|
% switches for logic gates
|
|
%
|
|
\pgfkeys{/tikz/number inputs/.initial=0}
|
|
\pgfkeys{/tikz/number inputs/.default=0}
|
|
%
|
|
% switches for op amps
|
|
% changing input polarity
|
|
%
|
|
\newif\ifpgf@circuit@oa@iplusup\pgf@circuit@oa@iplusupfalse
|
|
\pgfkeys{/tikz/noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
|
|
\ctikzset{noinv input up/.add code={}{\pgf@circuit@oa@iplusuptrue}}
|
|
\pgfkeys{/tikz/noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
|
|
\ctikzset{noinv input down/.add code={}{\pgf@circuit@oa@iplusupfalse}}
|
|
%
|
|
% changing output polarity (for fully diff objects)
|
|
%
|
|
\newif\ifpgf@circuit@oa@oplusup\pgf@circuit@oa@oplusuptrue
|
|
\pgfkeys{/tikz/noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
|
|
\ctikzset{noinv output up/.add code={}{\pgf@circuit@oa@oplusuptrue}}
|
|
\pgfkeys{/tikz/noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
|
|
\ctikzset{noinv output down/.add code={}{\pgf@circuit@oa@oplusupfalse}}
|
|
|
|
% Operational amplifier
|
|
\ctikzset{tripoles/op amp/width/.initial=1.7} % Total width
|
|
\ctikzset{tripoles/op amp/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/op amp/height/.initial=1.4} % Total height
|
|
\ctikzset{tripoles/op amp/input height/.initial=.5} % Input port vertical separation
|
|
\ctikzset{tripoles/op amp/up pos/.initial=.45} % Top and bottom anchor position
|
|
\ctikzset{tripoles/op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
|
|
% Fully differential operational amplifier
|
|
\ctikzset{tripoles/fd op amp/width/.initial=1.7} % Total width
|
|
\ctikzset{tripoles/fd op amp/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/fd op amp/height/.initial=1.4} % Total height
|
|
\ctikzset{tripoles/fd op amp/input height/.initial=.5} % Input port vertical separation
|
|
\ctikzset{tripoles/fd op amp/output height/.initial=.5} % Output port vertical separation
|
|
\ctikzset{tripoles/fd op amp/up pos/.initial=.45} % Top and bottom anchor position
|
|
\ctikzset{tripoles/fd op amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
|
|
\ctikzset{tripoles/en amp/width/.initial=1.7}
|
|
\ctikzset{tripoles/en amp/port width/.initial=.7}
|
|
\ctikzset{tripoles/en amp/height/.initial=1.6}
|
|
\ctikzset{tripoles/en amp/input height/.initial=.3}
|
|
\ctikzset{tripoles/en amp/up pos/.initial=.45}
|
|
\ctikzset{tripoles/en amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
\ctikzset{tripoles/en amp/font2/.initial=\pgf@circ@font@twelve} % Absolute font size needed!
|
|
\ctikzset{tripoles/en amp/text/.initial={$\mathstrut{\triangleright}\,{\infty}$}}
|
|
\tikzset{
|
|
en amp text/.code = {%
|
|
\ctikzsetvalof{tripoles/en amp/text}{#1}%
|
|
},
|
|
en amp text A/.code = {%
|
|
\ctikzsetvalof{tripoles/en amp/text}{$\mathstrut{\triangleright}\,\mathrm{A}$}%
|
|
},
|
|
}
|
|
|
|
% Transconductance amplifier
|
|
\ctikzset{tripoles/gm amp/width/.initial=1.7} % Total width
|
|
\ctikzset{tripoles/gm amp/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/gm amp/height/.initial=1.4} % Left side of the trapezoid
|
|
\ctikzset{tripoles/gm amp/height 2/.initial=0.5} % Right side of the trapezoid
|
|
\ctikzset{tripoles/gm amp/input height/.initial=.5} % Input port vertical separation
|
|
\ctikzset{tripoles/gm amp/up pos/.initial=.45} % Top and bottom anchor position
|
|
\ctikzset{tripoles/gm amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
|
|
% Instrumentation amplifier
|
|
\ctikzset{tripoles/inst amp/width/.initial=1.7} % Total width
|
|
\ctikzset{tripoles/inst amp/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/inst amp/height/.initial=1.4} % Left side of the trapezoid
|
|
\ctikzset{tripoles/inst amp/height 2/.initial=0.6} % Right side of the trapezoid
|
|
\ctikzset{tripoles/inst amp/input height/.initial=.5} % Input ports vertical separation
|
|
\ctikzset{tripoles/inst amp/up pos/.initial=.4} % Top and bottom anchor position
|
|
\ctikzset{tripoles/inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
|
|
\ctikzset{tripoles/inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
|
|
% Instrumentation amplifier with differential output
|
|
\ctikzset{tripoles/fd inst amp/width/.initial=1.7} % Total width
|
|
\ctikzset{tripoles/fd inst amp/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/fd inst amp/height/.initial=1.4} % Left side of the trapezoid
|
|
\ctikzset{tripoles/fd inst amp/height 2/.initial=0.6} % Right side of the trapezoid
|
|
\ctikzset{tripoles/fd inst amp/input height/.initial=.5} % Input ports vertical separation
|
|
\ctikzset{tripoles/fd inst amp/output height/.initial=.5} % Output ports vertical separation
|
|
\ctikzset{tripoles/fd inst amp/up pos/.initial=.4} % Top and bottom anchor position
|
|
\ctikzset{tripoles/fd inst amp/refv pos/.initial=.7} % Top and bottom voltage reference position
|
|
\ctikzset{tripoles/fd inst amp/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
|
|
% Instrumentation amplifier with gain resistor terminals
|
|
\ctikzset{tripoles/inst amp ra/width/.initial=2.4} % Total width
|
|
\ctikzset{tripoles/inst amp ra/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/inst amp ra/height/.initial=2.9} % Left side of the trapezoid
|
|
\ctikzset{tripoles/inst amp ra/height 2/.initial=0.4} % Right side of the trapezoid
|
|
\ctikzset{tripoles/inst amp ra/input height/.initial=.7} % Input ports vertical separation
|
|
\ctikzset{tripoles/inst amp ra/up pos/.initial=.4} % Top and bottom anchor position
|
|
\ctikzset{tripoles/inst amp ra/refv pos/.initial=.7} % Top and bottom voltage reference position
|
|
\ctikzset{tripoles/inst amp ra/ra pos/.initial=.6} % Gain resistor terminals vertical separation
|
|
\ctikzset{tripoles/inst amp ra/font/.initial=\pgf@circ@font@tenbm} % Absolute font size needed!
|
|
|
|
% Plain amplifier
|
|
\ctikzset{tripoles/plain amp/width/.initial=1.7} % Total width
|
|
\ctikzset{tripoles/plain amp/port width/.initial=.7} % Terminals length
|
|
\ctikzset{tripoles/plain amp/height/.initial=1.4} % Total height
|
|
\ctikzset{tripoles/plain amp/input height/.initial=.5} % Input ports vertical separation
|
|
\ctikzset{tripoles/plain amp/up pos/.initial=.45} % Top and bottom anchor position
|
|
|
|
\ctikzset{tripoles/thyristor/height/.initial=1.10}
|
|
\ctikzset{tripoles/thyristor/height 2/.initial=.5}
|
|
\ctikzset{tripoles/thyristor/width/.initial=1.0}
|
|
\ctikzset{tripoles/thyristor/diode height/.initial=.5}
|
|
\ctikzset{tripoles/thyristor/diode width left/.initial=.4}
|
|
\ctikzset{tripoles/thyristor/diode width right/.initial=.3}
|
|
|
|
\ctikzset{tripoles/triac/height/.initial=1.1}
|
|
\ctikzset{tripoles/triac/width/.initial=1}
|
|
\ctikzset{tripoles/triac/diode width left/.initial=.3}
|
|
\ctikzset{tripoles/triac/diode width right/.initial=.3}
|
|
|
|
%% Cute switches
|
|
\ctikzset{bipoles/cuteswitch/shape/.initial={ocirc}}
|
|
\ctikzset{bipoles/cuteswitch/height/.initial=.6}
|
|
\ctikzset{bipoles/cuteswitch/height 2/.initial=.2}
|
|
\ctikzset{bipoles/cuteswitch/width/.initial=.50}
|
|
\ctikzset{bipoles/cuteswitch/thickness/.initial=1}
|
|
|
|
\ctikzset{tripoles/spdt/width/.initial=.85}
|
|
\ctikzset{tripoles/spdt/height/.initial=.45}
|
|
\ctikzset{tripoles/spdt/margin/.initial=.45}
|
|
|
|
\ctikzset{tripoles/toggleswitch/height/.initial=.8}
|
|
\ctikzset{tripoles/toggleswitch/height 2/.initial=.0}
|
|
\ctikzset{tripoles/toggleswitch/width/.initial=.80}
|
|
|
|
\ctikzset{tripoles/mixer/width/.initial=0.7}
|
|
\ctikzset{tripoles/adder/width/.initial=0.7}
|
|
\ctikzset{tripoles/circulator/width/.initial=.7}
|
|
\ctikzset{tripoles/oscillator/width/.initial=.7}
|
|
|
|
|
|
\ctikzset{tripoles/wilkinson/height/.initial=1.3}
|
|
\ctikzset{tripoles/wilkinson/width/.initial=1.3}
|
|
|
|
\ctikzset{quadpoles/transformer/inner/.initial=0.4}
|
|
\ctikzset{quadpoles/transformer/width/.initial=1.5}
|
|
\ctikzset{quadpoles/transformer/width1/.initial=.4}
|
|
\ctikzset{quadpoles/transformer/height/.initial=1.5}
|
|
\ctikzset{quadpoles/transformer/height1/.initial=.8}
|
|
\ctikzset{quadpoles/transformer core/inner/.initial=0.4}
|
|
\ctikzset{quadpoles/transformer core/width/.initial=1.5}
|
|
\ctikzset{quadpoles/transformer core/height/.initial=1.5}
|
|
\ctikzset{quadpoles/transformer core/core height/.initial=.5}
|
|
\ctikzset{quadpoles/transformer core/core width/.initial=.05}
|
|
\ctikzset{quadpoles/gyrator/inner/.initial=0.4}
|
|
\ctikzset{quadpoles/gyrator/width/.initial=1.5}
|
|
\ctikzset{quadpoles/gyrator/height/.initial=1.5}
|
|
\ctikzset{quadpoles/fourport/width/.initial=1.3}
|
|
\ctikzset{quadpoles/fourport/height/.initial=1.3}
|
|
\ctikzset{quadpoles/coupler/width/.initial=1.3}
|
|
\ctikzset{quadpoles/coupler/height/.initial=1.3}
|
|
\ctikzset{quadpoles/coupler2/width/.initial=1.3}
|
|
\ctikzset{quadpoles/coupler2/height/.initial=1.3}
|
|
|
|
\ctikzset{/tikz/circuitikz/tripoles/magnetron/width/.initial=1}
|
|
|
|
\ctikzset{quadpoles style/.is choice}
|
|
\ctikzset{quadpoles style/inward/.code={% default value
|
|
\ctikzset{quadpoles/transformer/inner=0.4}%
|
|
\ctikzset{quadpoles/transformer/width=1.5}%
|
|
\ctikzset{quadpoles/transformer core/inner=0.4}%
|
|
\ctikzset{quadpoles/transformer core/width=1.5}%
|
|
\ctikzset{quadpoles/gyrator/inner=0.4}%
|
|
\ctikzset{quadpoles/gyrator/width=1.5}%
|
|
}%
|
|
}
|
|
\ctikzset{quadpoles style/inline/.code={% now horizontal baffle
|
|
\ctikzset{quadpoles/transformer/inner=1}%
|
|
\ctikzset{quadpoles/transformer/width=0.6}%
|
|
\ctikzset{quadpoles/transformer core/inner=1}%
|
|
\ctikzset{quadpoles/transformer core/width=0.6}%
|
|
\ctikzset{quadpoles/gyrator/inner=1} % FIXME
|
|
\ctikzset{quadpoles/gyrator/width=0.6}%
|
|
}%
|
|
}
|
|
|
|
%
|
|
% multipoles
|
|
%
|
|
\ctikzset{multipoles/thickness/.initial=2}
|
|
\ctikzset{multipoles/font/.initial=\pgf@circ@font@tiny}
|
|
% DIP (dual in line package) chips
|
|
\ctikzset{multipoles/dipchip/width/.initial=1.2}
|
|
\ctikzset{multipoles/dipchip/num pins/.initial=8}
|
|
\ctikzset{multipoles/dipchip/pin spacing/.initial=0.4}
|
|
\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/dipchip/num pins=#1}}}
|
|
% QFP (quad flat package) chips
|
|
\ctikzset{multipoles/qfpchip/num pins/.initial=8}
|
|
\ctikzset{multipoles/qfpchip/pin spacing/.initial=0.4}
|
|
\pgfkeys{/tikz/num pins/.add code={}{\ctikzset{multipoles/qfpchip/num pins=#1}}}
|
|
% chip numbers
|
|
\newif\ifpgf@circuit@chip@shownumbers\pgf@circuit@chip@shownumberstrue
|
|
\pgfkeys{/tikz/show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
|
|
\ctikzset{show numbers/.add code={}{\pgf@circuit@chip@shownumberstrue}}
|
|
\pgfkeys{/tikz/hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
|
|
\ctikzset{hide numbers/.add code={}{\pgf@circuit@chip@shownumbersfalse}}
|
|
\newif\ifpgf@circuit@chip@straightnumbers\pgf@circuit@chip@straightnumberstrue
|
|
\pgfkeys{/tikz/straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
|
|
\ctikzset{straight numbers/.add code={}{\pgf@circuit@chip@straightnumberstrue}}
|
|
\pgfkeys{/tikz/rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
|
|
\ctikzset{rotated numbers/.add code={}{\pgf@circuit@chip@straightnumbersfalse}}
|
|
% external chip pins
|
|
\ctikzset{multipoles/external pins thickness/.initial=1}
|
|
\ctikzset{multipoles/external pins width/.initial=0.2}
|
|
\ctikzset{multipoles/external pad fraction/.initial=0}
|
|
\pgfkeys{/tikz/external pins width/.add code={}{\ctikzset{multipoles/external pins width=#1}}}
|
|
\pgfkeys{/tikz/external pad fraction/.add code={}{\ctikzset{multipoles/external pad fraction=#1}}}
|
|
% topmarks
|
|
\newif\ifpgf@circuit@chip@topmark\pgf@circuit@chip@topmarktrue
|
|
\pgfkeys{/tikz/topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
|
|
\ctikzset{topmark/.add code={}{\pgf@circuit@chip@topmarktrue}}
|
|
\pgfkeys{/tikz/no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
|
|
\ctikzset{no topmark/.add code={}{\pgf@circuit@chip@topmarkfalse}}
|
|
|
|
% rotary switch by Romano
|
|
\ctikzset{multipoles/rotary/thickness/.initial=1}
|
|
\ctikzset{multipoles/rotary/shape/.initial=ocirc}
|
|
\ctikzset{multipoles/rotary/channels/.initial=5}
|
|
\ctikzset{multipoles/rotary/angle/.initial=60}
|
|
\ctikzset{multipoles/rotary/wiper/.initial=20}
|
|
\ctikzset{multipoles/rotary/arrow/.is choice}
|
|
\newif\ifpgf@circ@rotaryarrow\pgf@circ@rotaryarrowfalse
|
|
\newif\ifpgf@circ@rotaryarrow@cw\pgf@circ@rotaryarrow@cwfalse
|
|
\newif\ifpgf@circ@rotaryarrow@ccw\pgf@circ@rotaryarrow@ccwfalse
|
|
\ctikzset{multipoles/rotary/arrow/none/.code={\pgf@circ@rotaryarrowfalse\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwfalse}}
|
|
\ctikzset{multipoles/rotary/arrow/both/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwtrue}}
|
|
\ctikzset{multipoles/rotary/arrow/cw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwtrue\pgf@circ@rotaryarrow@ccwfalse}}
|
|
\ctikzset{multipoles/rotary/arrow/ccw/.code={\pgf@circ@rotaryarrowtrue\pgf@circ@rotaryarrow@cwfalse\pgf@circ@rotaryarrow@ccwtrue}}
|
|
|
|
\tikzset{%
|
|
rotary switch/.style args={#1in#2wiper#3}{%
|
|
shape=rotaryswitch,
|
|
/tikz/circuitikz/multipoles/rotary/channels=#1,
|
|
/tikz/circuitikz/multipoles/rotary/angle=#2,
|
|
/tikz/circuitikz/multipoles/rotary/wiper=#3,
|
|
},
|
|
rotary switch -/.style args={#1in#2wiper#3}{
|
|
rotary switch=#1 in #2 wiper #3,
|
|
/tikz/circuitikz/multipoles/rotary/arrow=none,
|
|
},
|
|
rotary switch <-/.style args={#1in#2wiper#3}{
|
|
rotary switch=#1 in #2 wiper #3,
|
|
/tikz/circuitikz/multipoles/rotary/arrow=ccw,
|
|
},
|
|
rotary switch ->/.style args={#1in#2wiper#3}{
|
|
rotary switch=#1 in #2 wiper #3,
|
|
/tikz/circuitikz/multipoles/rotary/arrow=cw,
|
|
},
|
|
rotary switch <->/.style args={#1in#2wiper#3}{
|
|
rotary switch=#1 in #2 wiper #3,
|
|
/tikz/circuitikz/multipoles/rotary/arrow=both,
|
|
},
|
|
% Notice that these should be the same as the initial values of the keys
|
|
rotary switch/.default={5 in 60 wiper 20},
|
|
rotary switch -/.default={5 in 60 wiper 20},
|
|
rotary switch <-/.default={5 in 60 wiper 20},
|
|
rotary switch ->/.default={5 in 60 wiper 20},
|
|
rotary switch <->/.default={5 in 60 wiper 20},
|
|
}
|
|
|
|
% %Mechanical section
|
|
\ctikzset{/tikz/circuitikz/tripoles/elmech/height/.initial=.8}
|
|
\ctikzset{/tikz/circuitikz/tripoles/elmech/width/.initial=.6}
|
|
\ctikzset{bipoles/spring/height/.initial=.5}
|
|
\ctikzset{bipoles/spring/width/.initial=.5}
|
|
\ctikzset{bipoles/mass/height/.initial=.55}
|
|
\ctikzset{bipoles/mass/box height/.initial=.4}
|
|
\ctikzset{bipoles/mass/width/.initial=.5}
|
|
|
|
\ctikzset{bipoles/damper/height/.initial=.35}
|
|
\ctikzset{bipoles/damper/length/.initial=.3}
|
|
\ctikzset{bipoles/damper/width/.initial=.4}
|
|
|
|
|
|
\ctikzset{bipole/.is family}
|
|
\ctikzset{bipole/kind/.initial=}
|
|
\ctikzset{bipole/name/.initial=}
|
|
\newif\ifpgf@circuit@bipole@isvoltage
|
|
\ctikzset{bipole/is voltage/.is if=pgf@circuit@bipole@isvoltage}
|
|
\newif\ifpgf@circuit@bipole@voltageoutsideofsymbol
|
|
\ctikzset{bipole/is voltageoutsideofsymbol/.is if=pgf@circuit@bipole@voltageoutsideofsymbol}
|
|
\newif\ifpgf@circuit@bipole@strokedsymbol
|
|
\ctikzset{bipole/is strokedsymbol/.is if=pgf@circuit@bipole@strokedsymbol}
|
|
\newif\ifpgf@circuit@bipole@iscurrent
|
|
\ctikzset{bipole/is current/.is if=pgf@circuit@bipole@iscurrent}
|
|
|
|
\ctikzset{bipole/voltage/.is family}
|
|
\newif\ifpgf@circuit@bipole@voltage@backward
|
|
\ctikzset{bipole/voltage/direction/.is choice}
|
|
\ctikzset{bipole/voltage/direction/forward/.code={\pgf@circuit@bipole@voltage@backwardfalse}}
|
|
\ctikzset{bipole/voltage/direction/backward/.code={\pgf@circuit@bipole@voltage@backwardtrue}}
|
|
\newif\ifpgf@circuit@bipole@voltage@below
|
|
\ctikzset{bipole/voltage/position/.is choice}
|
|
\ctikzset{bipole/voltage/position/above/.code={\pgf@circuit@bipole@voltage@belowfalse}}
|
|
\ctikzset{bipole/voltage/position/below/.code={\pgf@circuit@bipole@voltage@belowtrue}}
|
|
|
|
\ctikzset{bipole/voltage/label/unit/.initial=}
|
|
\ctikzset{bipole/voltage/label/name/.initial=}
|
|
|
|
\ctikzset{bipole/current/.is family}
|
|
\newif\ifpgf@circuit@bipole@current@backward
|
|
\ctikzset{bipole/current/direction/.is choice}
|
|
\ctikzset{bipole/current/direction/forward/.code={\pgf@circuit@bipole@current@backwardfalse}}
|
|
\ctikzset{bipole/current/direction/backward/.code={\pgf@circuit@bipole@current@backwardtrue}}
|
|
\newif\ifpgf@circuit@bipole@current@before
|
|
\ctikzset{bipole/current/x position/.is choice}
|
|
\ctikzset{bipole/current/x position/after/.code={\pgf@circuit@bipole@current@beforefalse}}
|
|
\ctikzset{bipole/current/x position/before/.code={\pgf@circuit@bipole@current@beforetrue}}
|
|
\newif\ifpgf@circuit@bipole@current@below
|
|
\ctikzset{bipole/current/y position/.is choice}
|
|
\ctikzset{bipole/current/y position/above/.code={\pgf@circuit@bipole@current@belowfalse}}
|
|
\ctikzset{bipole/current/y position/below/.code={\pgf@circuit@bipole@current@belowtrue}}
|
|
\ctikzset{bipole/current/label/unit/.initial=}
|
|
\ctikzset{bipole/current/label/name/.initial=}
|
|
|
|
\ctikzset{bipole/flow/.is family}
|
|
\newif\ifpgf@circuit@bipole@flow@backward
|
|
\ctikzset{bipole/flow/direction/.is choice}
|
|
\ctikzset{bipole/flow/direction/forward/.code={\pgf@circuit@bipole@flow@backwardfalse}}
|
|
\ctikzset{bipole/flow/direction/backward/.code={\pgf@circuit@bipole@flow@backwardtrue}}
|
|
\newif\ifpgf@circuit@bipole@flow@before
|
|
\ctikzset{bipole/flow/x position/.is choice}
|
|
\ctikzset{bipole/flow/x position/after/.code={\pgf@circuit@bipole@flow@beforefalse}}
|
|
\ctikzset{bipole/flow/x position/before/.code={\pgf@circuit@bipole@flow@beforetrue}}
|
|
\newif\ifpgf@circuit@bipole@flow@below
|
|
\ctikzset{bipole/flow/y position/.is choice}
|
|
\ctikzset{bipole/flow/y position/above/.code={\pgf@circuit@bipole@flow@belowfalse}}
|
|
\ctikzset{bipole/flow/y position/below/.code={\pgf@circuit@bipole@flow@belowtrue}}
|
|
\ctikzset{bipole/flow/label/unit/.initial=}
|
|
\ctikzset{bipole/flow/label/name/.initial=}
|
|
\ctikzset{flow/distance/.initial = .5}
|
|
\ctikzset{flow/offset/.initial = .2}%distance between flow-arrow and conductor
|
|
|
|
\ctikzset{bipole/label/.is family}
|
|
\ctikzset{bipole/label/position/.initial=90}
|
|
\ctikzset{bipole/label/unit/.initial=}
|
|
\ctikzset{bipole/label/name/.initial=}
|
|
\ctikzset{bipole/annotation/.is family}
|
|
\ctikzset{bipole/annotation/position/.initial=-90}
|
|
\ctikzset{bipole/annotation/unit/.initial=}
|
|
\ctikzset{bipole/annotation/name/.initial=}
|
|
|
|
\newif\ifpgf@circuit@europeanresistor
|
|
\ctikzset{resistor/.is choice}
|
|
\ctikzset{resistor/american/.code = \pgf@circuit@europeanresistorfalse }
|
|
\ctikzset{resistor/european/.code = \pgf@circuit@europeanresistortrue }
|
|
|
|
\ctikzset{inductor/.is choice}
|
|
\ctikzset{inductor/cute/.code={\ctikzsetvalof{inductor}{cute}}}
|
|
\ctikzset{inductor/european/.code={\ctikzsetvalof{inductor}{european}}}
|
|
\ctikzset{inductor/american/.code={\ctikzsetvalof{inductor}{american}}}
|
|
|
|
\newif\ifpgf@circuit@strokediode
|
|
\newif\ifpgf@circuit@fulldiode
|
|
\pgf@circuit@strokediodefalse
|
|
\pgf@circuit@fulldiodefalse
|
|
|
|
\ctikzset{diode/.is choice}
|
|
\ctikzset{diode/empty/.code = \pgf@circuit@fulldiodefalse\pgf@circuit@strokediodefalse}%default
|
|
\ctikzset{diode/full/.code = \pgf@circuit@fulldiodetrue }
|
|
\ctikzset{diode/stroke/.code = \pgf@circuit@strokediodetrue}
|
|
|
|
\tikzset{full diodes/.style = { \circuitikzbasekey/diode = full}}
|
|
\tikzset{empty diodes/.style = { \circuitikzbasekey/diode = empty}}
|
|
\tikzset{stroke diodes/.style = { \circuitikzbasekey/diode = stroke}}
|
|
|
|
\ctikzset{thickness/.initial=2}
|
|
\ctikzset{color/.initial=black}
|
|
\pgfkeys{/tikz/color/.add code={}{\ctikzset{color={#1}}}}
|
|
|
|
\newif\ifpgf@circ@siunitx
|
|
\newif\ifpgf@circ@siunitx@res
|
|
|
|
\ctikzset{straight/.is choice}
|
|
\ctikzset{straightvoltage value/.initial=true}
|
|
\ctikzset{straight/true/.code = {\pgf@circuit@bipole@voltage@straighttrue}}
|
|
\ctikzset{straight/false/.code = {\pgf@circuit@bipole@voltage@straightfalse}}
|
|
\ctikzset{straightvoltage/.style = {/tikz/circuitikz/straight=true}}
|
|
\newif\ifpgf@circuit@bipole@voltage@straight
|
|
\ctikzset{bipole/straight/.is if=pgf@circuit@bipole@voltage@straight}
|
|
|
|
|
|
\ctikzset{voltage/.is family}
|
|
\ctikzset{voltage/distance from node/.initial=.5} %\pgf@circ@Rlen units
|
|
\ctikzset{voltage/distance from line/.initial=.08} % pos, tra 0 e 1
|
|
\ctikzset{voltage/bump a/.initial=1.2}
|
|
\ctikzset{voltage/bump b/.initial=1.5}
|
|
\ctikzset{voltage/shift/.initial=0.0} % shift form the cable of voltage symbols
|
|
\ctikzset{voltage shift/.style={voltage/shift=#1}}
|
|
\tikzset{voltage shift/.style={\circuitikzbasekey/voltage/shift=#1}}
|
|
\ctikzset{voltage/european label distance/.initial=1.4}
|
|
\ctikzset{voltage/american label distance/.initial=1.1}
|
|
% shaping the +/- sign, see pgfcircvoltage.tex
|
|
\ctikzset{voltage/american font/.initial={}}
|
|
\ctikzset{voltage/american plus/.initial={$+$}}
|
|
\ctikzset{voltage/american minus/.initial={$-$}}
|
|
|
|
% special cases
|
|
\ctikzset{bipoles/generic/voltage/distance from node/.initial=.4}
|
|
\ctikzset{bipoles/generic/voltage/bump b/.initial=2}
|
|
\ctikzset{bipoles/generic/voltage/european label distance/.initial=1.8}
|
|
%\ctikzset{bipoles/thermocouple/voltage/distance from node/.initial=.3}
|
|
\ctikzset{bipoles/thermocouple/voltage/bump b/.initial=2.2}
|
|
\ctikzset{bipoles/thermocouple/voltage/european label distance/.initial=1.5}
|
|
\ctikzset{bipoles/ageneric/voltage/distance from node/.initial=.4}
|
|
\ctikzset{bipoles/ageneric/voltage/bump b/.initial=2}
|
|
\ctikzset{bipoles/ageneric/voltage/european label distance/.initial=1.8}
|
|
\ctikzset{bipoles/fullgeneric/voltage/distance from node/.initial=.4}
|
|
\ctikzset{bipoles/fullgeneric/voltage/bump b/.initial=2}
|
|
\ctikzset{bipoles/fullgeneric/voltage/european label distance/.initial=1.8}
|
|
\ctikzset{bipoles/memristor/voltage/distance from node/.initial=.4}
|
|
\ctikzset{bipoles/memristor/voltage/bump b/.initial=2}
|
|
\ctikzset{bipoles/memristor/voltage/european label distance/.initial=1.8}
|
|
%\ctikzset{bipoles/tline/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/tline/voltage/bump b/.initial=2.4}
|
|
\ctikzset{bipoles/tline/voltage/european label distance/.initial=2.1}
|
|
%\ctikzset{bipoles/varistor/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/varistor/voltage/bump b/.initial=2.4}
|
|
\ctikzset{bipoles/varistor/voltage/european label distance/.initial=2}
|
|
%\ctikzset{bipoles/photoresistor/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/photoresistor/voltage/bump b/.initial=2}
|
|
\ctikzset{bipoles/photoresistor/voltage/european label distance/.initial=1.8}
|
|
%\ctikzset{bipoles/thermistor/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/thermistor/voltage/bump b/.initial=2.4}
|
|
\ctikzset{bipoles/thermistor/voltage/european label distance/.initial=2}
|
|
%\ctikzset{bipoles/thermistorntc/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/thermistorntc/voltage/bump b/.initial=1.6}
|
|
%\ctikzset{bipoles/thermistorptc/voltage/distance from node/.initial=.2}
|
|
\ctikzset{bipoles/thermistorptc/voltage/bump b/.initial=1.6}
|
|
|
|
\ctikzset{current/.is family}
|
|
\ctikzset{current/distance/.initial = .5}
|
|
|
|
|
|
\tikzset{american currents/.style = {\circuitikzbasekey/current = american}}
|
|
\tikzset{european currents/.style = {\circuitikzbasekey/current = european}}
|
|
\tikzset{american voltages/.style = {\circuitikzbasekey/voltage = american}}
|
|
\tikzset{european voltages/.style = {\circuitikzbasekey/voltage = european}}
|
|
\tikzset{american resistors/.style = {\circuitikzbasekey/resistor = american}}
|
|
\tikzset{european resistors/.style = {\circuitikzbasekey/resistor = european}}
|
|
|
|
\newif\ifpgf@circuit@europeangfsurgearrester
|
|
\ctikzset{gas filled surge arrester choice/.is choice}
|
|
\ctikzset{gas filled surge arrester choice/european/.code= {\pgf@circuit@europeangfsurgearrestertrue}}
|
|
\ctikzset{gas filled surge arrester choice/american/.code= {\pgf@circuit@europeangfsurgearresterfalse}}
|
|
|
|
\tikzset{american gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=american}}
|
|
\tikzset{european gas filled surge arrester set/.style = {\circuitikzbasekey/gas filled surge arrester choice=european}}
|
|
\tikzset{american inductors/.style = {\circuitikzbasekey/inductor = american}}
|
|
\tikzset{european inductors/.style = {\circuitikzbasekey/inductor = european}}
|
|
\tikzset{cute inductors/.style = {\circuitikzbasekey/inductor = cute}}
|
|
\tikzset{american ports/.style = {\circuitikzbasekey/logic ports = american}}
|
|
\tikzset{european ports/.style = {\circuitikzbasekey/logic ports = european}}
|
|
\tikzset{european/.style = {european currents, european voltages, european resistors, european inductors, european ports, european gas filled surge arrester set}}
|
|
\tikzset{american/.style = {american currents, american voltages, american resistors, american inductors, american ports, american gas filled surge arrester set}}
|
|
\tikzset{cute/.style = {european currents, european voltages, american resistors, cute inductors, american ports}}
|
|
|
|
% I should try to make the tree clearer (this voltage conflicts with the options above)
|
|
|
|
\newif\ifpgf@circuit@europeanvoltage
|
|
\ctikzset{voltage/.is choice}
|
|
\ctikzset{voltage/american/.code = {\pgf@circuit@europeanvoltagefalse}}
|
|
\ctikzset{voltage/european/.code = {\pgf@circuit@europeanvoltagetrue}}
|
|
|
|
\newif\ifpgf@circuit@europeancurrent
|
|
\ctikzset{current/.is choice}
|
|
\ctikzset{current/american/.code = \pgf@circuit@europeancurrentfalse}
|
|
\ctikzset{current/european/.code = \pgf@circuit@europeancurrenttrue}
|
|
|
|
% noise sources
|
|
\ctikzset{bipoles/noise sources/fillcolor/.initial=gray!50}
|
|
|
|
\ctikzset{label/align/.is choice}
|
|
\ctikzset{label/align/straight/.code={\ctikzsetvalof{label/align}{straight}}}
|
|
\ctikzset{label/align/rotate/.code={\ctikzsetvalof{label/align}{rotate}}}
|
|
\ctikzset{label/align/smart/.code={\ctikzsetvalof{label/align}{smart}}}
|
|
|
|
% seven segment displays by RGtti
|
|
|
|
\newif\ifpgf@circ@sevenseg@dot
|
|
\newif\ifpgf@circ@sevenseg@box
|
|
\def\pgf@circ@sevenseg@dotstate{empty}
|
|
\ctikzset{seven seg/.is family}
|
|
\ctikzset{seven seg/dot/.is choice}
|
|
% none means no dot, not space for it. Empty means no dot, but space
|
|
\ctikzset{seven seg/dot/none/.code={\pgf@circ@sevenseg@dotfalse}}
|
|
\ctikzset{seven seg/dot/empty/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{empty}}}
|
|
\ctikzset{seven seg/dot/off/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{off}}}
|
|
\ctikzset{seven seg/dot/on/.code={\pgf@circ@sevenseg@dottrue\def\pgf@circ@sevenseg@dotstate{on}}}
|
|
%
|
|
\ctikzset{seven seg/width/.initial=0.4}% relative to \pgf@circ@Rlen
|
|
\ctikzset{seven seg/thickness/.initial=4pt}% segment thickness
|
|
\ctikzset{seven seg/segment sep/.initial=0.2pt}% gap between segments
|
|
\ctikzset{seven seg/box sep/.initial=1pt}% external box gap
|
|
\ctikzset{seven seg/color on/.initial=red}% color for segment "on"
|
|
\ctikzset{seven seg/color off/.initial=gray!20!white} % ...and "off"
|
|
\ctikzset{seven seg/box/.is choice}
|
|
\ctikzset{seven seg/box/off/.code={\pgf@circ@sevenseg@boxfalse}}
|
|
\ctikzset{seven seg/box/on/.code={\pgf@circ@sevenseg@boxtrue}}
|
|
|
|
\ctikzset{seven seg/bits/.initial=0000000}
|
|
|
|
\ctikzset{seven seg/value/.code={%
|
|
\edef\@@tmp{#1}%
|
|
\edef\@@n{0} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111110}\fi
|
|
\edef\@@n{1} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110000}\fi
|
|
\edef\@@n{2} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1101101}\fi
|
|
\edef\@@n{3} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111001}\fi
|
|
\edef\@@n{4} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0110011}\fi
|
|
\edef\@@n{5} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011011}\fi
|
|
\edef\@@n{6} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1011111}\fi
|
|
\edef\@@n{7} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110000}\fi
|
|
\edef\@@n{8} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111111}\fi
|
|
\edef\@@n{9} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1111011}\fi
|
|
\edef\@@n{10}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
|
|
\edef\@@n{11}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
|
|
\edef\@@n{12}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
|
|
\edef\@@n{13}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
|
|
\edef\@@n{14}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
|
|
\edef\@@n{15}\ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
|
|
\edef\@@n{A} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
|
|
\edef\@@n{B} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
|
|
\edef\@@n{C} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
|
|
\edef\@@n{D} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
|
|
\edef\@@n{E} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
|
|
\edef\@@n{F} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
|
|
\edef\@@n{a} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1110111}\fi
|
|
\edef\@@n{b} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0011111}\fi
|
|
\edef\@@n{c} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001110}\fi
|
|
\edef\@@n{d} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0111101}\fi
|
|
\edef\@@n{e} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1001111}\fi
|
|
\edef\@@n{f} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=1000111}\fi
|
|
\edef\@@n{-} \ifx\@@tmp\@@n\relax\ctikzset{seven seg/bits=0000001}\fi
|
|
}}
|
|
|
|
\tikzset{%
|
|
seven segment val/.style args={#1dot#2box#3}{%
|
|
shape=bare7seg,
|
|
/tikz/circuitikz/seven seg/value=#1,
|
|
/tikz/circuitikz/seven seg/dot=#2,
|
|
/tikz/circuitikz/seven seg/box=#3,
|
|
},
|
|
seven segment bits/.style args={#1dot#2box#3}{%
|
|
shape=bare7seg,
|
|
/tikz/circuitikz/seven seg/bits=#1,
|
|
/tikz/circuitikz/seven seg/dot=#2,
|
|
/tikz/circuitikz/seven seg/box=#3,
|
|
},
|
|
}
|
|
|
|
|
|
%%%%%%%%%% new
|
|
\pgfkeys{\circuitikzbasekey/.search also={/tikz}}
|
|
|
|
% Electronic tubes: diodetube, triode, tetrode and pentode
|
|
\ctikzset{tubes/width/.initial=1} % relative width
|
|
\ctikzset{tubes/height/.initial=1.4} % relative height
|
|
\ctikzset{tubes/tube radius/.initial=0.40} % radius of tube circle
|
|
\ctikzset{tubes/anode distance/.initial=0.40} % distance from center
|
|
\ctikzset{tubes/anode width/.initial=0.40} % width of an anode/plate
|
|
\ctikzset{tubes/grid protrusion/.initial=0.25} % distance from center
|
|
\ctikzset{tubes/grid dashes/.initial=5} % number of grid dashes
|
|
\ctikzset{tubes/grid separation/.initial=0.2} % separation between grids
|
|
\ctikzset{tubes/grid shift/.initial=0.0} % y shift grids from center
|
|
\ctikzset{tubes/cathode distance/.initial=0.40} % distance from grid
|
|
\ctikzset{tubes/cathode width/.initial=0.40} % width of an cathode
|
|
\ctikzset{tubes/cathode corners/.initial=0.06} % corners of the cathode wire
|
|
\ctikzset{tubes/cathode right extend/.initial=0.075} % extension at the right side
|
|
\ctikzset{tubes/filament distance/.initial=0.1} % distance from cathode
|
|
\ctikzset{tubes/filament angle/.initial=15} % Angle from centerpoint
|
|
|
|
\newif\ifpgf@circuit@tubes@filament\pgf@circuit@tubes@filamentfalse
|
|
\pgfkeys{/tikz/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
|
|
\ctikzset{tubes/filament/.add code={}{\pgf@circuit@tubes@filamenttrue}}
|
|
\newif\ifpgf@circuit@tubes@nocathode\pgf@circuit@tubes@nocathodefalse
|
|
\pgfkeys{/tikz/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
|
|
\ctikzset{tubes/nocathode/.add code={}{\pgf@circuit@tubes@nocathodetrue}}
|
|
\newif\ifpgf@circuit@tubes@fullcathode\pgf@circuit@tubes@fullcathodefalse
|
|
\pgfkeys{/tikz/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
|
|
\ctikzset{tubes/fullcathode/.add code={}{\pgf@circuit@tubes@fullcathodetrue}}
|
|
|
|
%%%---------- close: tex/pgfcirc.defines
|
|
%%%%%%%%%%% Springe nach tex/pgfcircutils
|
|
%%%---------- open: tex/pgfcircutils.tex
|
|
% Copyright 2007-2009 by Massimo Redaelli
|
|
%
|
|
% This file may be distributed and/or modified
|
|
%
|
|
% 1. under the LaTeX Project Public License and/or
|
|
% 2. under the GNU Public License.
|
|
%
|
|
% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
|
|
|
|
%\def\pgf@circ@handleSI#1{%
|
|
% \pgf@circ@siunitx@resfalse
|
|
%
|
|
% \edef\len{\stringlength[e]{#1}}
|
|
%\testmatchingchar[e]{#1}{\len}{>}%
|
|
%\ifmatchingchar%
|
|
% \ifnum\findchars{#1}{<}=0
|
|
% \def\pgf@circ@handleSI@val{\substring{#1}{1}{\findchars{#1}{<}-1}}
|
|
%\def\pgf@circ@handleSI@unit{\substring{#1}{\findchars{#1}{<}-1}+1}{\stringlength{#1}}
|
|
%\pgf@circ@siunitx@restrue
|
|
% \else
|
|
% \fi
|
|
%\else
|
|
%\fi
|
|
%}
|
|
|
|
\def\pgf@circ@handleSI#1{
|
|
\noexpandarg
|
|
\def\pgf@temp{}
|
|
\StrBetween{#1}{<}{>}[\pgf@circ@handleSI@unit]
|
|
\StrLen{\pgf@circ@handleSI@unit}[\pgf@circ@handleSI@unit@len]
|
|
|
|
\ifnum\pgf@circ@handleSI@unit@len=0
|
|
\pgf@circ@siunitx@resfalse
|
|
\else
|
|
\IfEndWith{#1}{>}{
|
|
\pgf@circ@siunitx@restrue
|
|
\noexpandarg
|
|
\StrBefore{#1}{<}[\pgf@circ@handleSI@val]
|
|
%\typeout{si |#1|}
|
|
}{
|
|
\pgf@circ@siunitx@resfalse
|
|
%\typeout{no si |#1|}
|
|
}
|
|
\fi
|
|
}
|
|
|
|
\def\pgf@circ@ifkeyempty#1{
|
|
\pgfextra{
|
|
\ctikzset{#1/.get=\pgf@circ@temp}
|
|
\edef\pgf@temp{}
|
|
}
|
|
\ifx\pgf@circ@temp\pgf@temp
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% Math routines
|
|
|
|
\def\pgf@circ@stripdecimals#1.#2\pgf@nil{#1}
|
|
|
|
%%%%%%%
|
|
%% flipping text
|
|
|
|
\def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
|
|
\def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
|
|
\def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
|
|
|
|
%%%---------- close: tex/pgfcircutils
|
|
|
|
%%%%%%%%%%% Springe nach tex/pgfcircshapes
|
|
%%%---------- open: tex/pgfcircshapes.tex
|
|
% Copyright 2007-2009 by Massimo Redaelli
|
|
%
|
|
% This file may be distributed and/or modified
|
|
%
|
|
% 1. under the LaTeX Project Public License and/or
|
|
% 2. under the GNU Public License.
|
|
%
|
|
% See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% Other shapes
|
|
|
|
%% Nothing
|
|
|
|
\pgfdeclareshape{emptyshape}{
|
|
\savedanchor{\northeast}{%
|
|
\pgf@x=.5\wd\pgfnodeparttextbox%
|
|
\pgf@y=.5\ht\pgfnodeparttextbox%
|
|
}
|
|
\anchor{north}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{east}{\northeast\pgf@y=0cm\relax}
|
|
\anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
|
|
\anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
|
|
\anchor{north east}{\northeast}
|
|
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
|
|
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
|
|
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
|
|
\anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
}
|
|
|
|
%% Full terminal
|
|
|
|
\pgfdeclareshape{circ}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\savedanchor\northwest{%
|
|
\pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
\anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{w}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{n}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
\anchorborder{
|
|
\pgf@circ@res@left=\pgf@x
|
|
\pgf@circ@res@up=\pgf@y
|
|
\pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
|
|
}{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
|
|
}
|
|
\behindforegroundpath{
|
|
|
|
\pgfscope
|
|
\pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfsetfillopacity{1.0}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
|
|
}
|
|
}
|
|
|
|
%% Empty terminal
|
|
|
|
\pgfdeclareshape{ocirc}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\savedanchor\northwest{%
|
|
\pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
\anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{w}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{n}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
\anchorborder{
|
|
\pgf@circ@res@left=\pgf@x
|
|
\pgf@circ@res@up=\pgf@y
|
|
\pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
|
|
}{\pgfpoint{\ctikzvalof{nodes width}*\pgf@circ@Rlen}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
|
|
}
|
|
|
|
\behindforegroundpath{
|
|
|
|
\pgfscope
|
|
\pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\ifx\tikz@fillcolor\pgfutil@empty
|
|
% set the default fill color to white
|
|
\pgfsetfillcolor{white}
|
|
% ...but override it if the class is defined!
|
|
% note that this element has no class, but will inherit it when used
|
|
% into another component
|
|
\pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
|
|
\else
|
|
\pgfsetfillcolor{\tikz@fillcolor}
|
|
\fi
|
|
\pgfsetfillopacity{1.0}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
|
|
}
|
|
}
|
|
|
|
%% Diamond terminal
|
|
|
|
\pgfdeclareshape{diamondpole}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\savedanchor\northwest{%
|
|
\pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
\anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{w}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{n}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
\anchorborder{
|
|
% \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
|
|
\pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
|
|
\pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
|
|
\pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
|
|
\pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
|
|
\pgfextracty{\pgf@circ@res@up}{\northwest}
|
|
% \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
|
|
% \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
|
|
\pgfpointintersectionoflines
|
|
{\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
{\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
|
|
% \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
|
|
\pgf@x=\@@switchx\pgf@x
|
|
\pgf@y=\@@switchy\pgf@y
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgftransformrotate{45}
|
|
\pgfpathrectanglecorners
|
|
{\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
|
|
{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfsetfillopacity{1.0}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% Diamond terminal, unfilled
|
|
|
|
\pgfdeclareshape{odiamondpole}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\savedanchor\northwest{%
|
|
\pgfmathsetlength{\pgf@y}{sqrt(2)*\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
\anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{w}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{n}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
\anchorborder{
|
|
% \typeout{IN\space X:\the\pgf@x\space Y:\the\pgf@y}
|
|
\pgfmathsetmacro{\@@switchx}{ifthenelse(\pgf@x>0,1,-1)}
|
|
\pgfmathsetmacro{\@@switchy}{ifthenelse(\pgf@y>0,1,-1)}
|
|
\pgfmathsetlength{\pgf@xa}{abs(\pgf@x)}
|
|
\pgfmathsetlength{\pgf@ya}{abs(\pgf@y)}
|
|
\pgfextracty{\pgf@circ@res@up}{\northwest}
|
|
% \typeout{MID\space X:\the\pgf@xa\space Y:\the\pgf@ya\space L:\the\pgf@circ@res@up}
|
|
% \typeout{MID\space SX:\@@switchx\space SY:\@@switchy}
|
|
\pgfpointintersectionoflines
|
|
{\pgfpointorigin}{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
{\pgfqpoint{0pt}{\pgf@circ@res@up}}{\pgfqpoint{\pgf@circ@res@up}{0pt}}
|
|
% \typeout{CROSS \space X:\the\pgf@x\space Y:\the\pgf@y}
|
|
\pgf@x=\@@switchx\pgf@x
|
|
\pgf@y=\@@switchy\pgf@y
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgftransformrotate{45}
|
|
\pgfpathrectanglecorners
|
|
{\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
|
|
{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\ifx\tikz@fillcolor\pgfutil@empty
|
|
% set the default fill color to white
|
|
\pgfsetfillcolor{white}
|
|
% ...but override it if the class is defined!
|
|
% note that this element has no class, but will inherit it when used
|
|
% into another component
|
|
\pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
|
|
\else
|
|
\pgfsetfillcolor{\tikz@fillcolor}
|
|
\fi
|
|
\pgfsetfillopacity{1.0}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% square terminal, filled
|
|
|
|
\pgfdeclareshape{squarepole}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\savedanchor\northwest{%
|
|
\pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
\anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{w}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{n}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
\anchorborder{
|
|
\pgf@xa=\pgf@x
|
|
\pgf@ya=\pgf@y
|
|
\pgfextracty{\pgf@circ@res@up}{\northwest}
|
|
\pgfpointborderrectangle
|
|
{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
{\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgfpathrectanglecorners
|
|
{\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
|
|
{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfsetfillopacity{1.0}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
%% square terminal, unfilled
|
|
|
|
\pgfdeclareshape{osquarepole}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\savedanchor\northwest{%
|
|
\pgfmathsetlength{\pgf@y}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
\anchor{center}{ \pgf@y=0pt \pgf@x=0pt }
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{e}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{w}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{s}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{n}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
\anchorborder{
|
|
\pgf@xa=\pgf@x
|
|
\pgf@ya=\pgf@y
|
|
\pgfextracty{\pgf@circ@res@up}{\northwest}
|
|
\pgfpointborderrectangle
|
|
{\pgfqpoint{\pgf@xa}{\pgf@ya}}
|
|
{\pgfqpoint{\pgf@circ@res@up}{\pgfqpoint{\pgf@circ@res@up}}}
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgfmathsetlength{\pgf@circ@res@temp}{\ctikzvalof{nodes width}*\pgf@circ@Rlen}
|
|
\pgfpathrectanglecorners
|
|
{\pgfpoint{-\pgf@circ@res@temp}{-\pgf@circ@res@temp}}
|
|
{\pgfpoint{\pgf@circ@res@temp}{\pgf@circ@res@temp}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\ifx\tikz@fillcolor\pgfutil@empty
|
|
% set the default fill color to white
|
|
\pgfsetfillcolor{white}
|
|
% ...but override it if the class is defined!
|
|
% note that this element has no class, but will inherit it when used
|
|
% into another component
|
|
\pgf@circ@setifdefinedfill{draw, fill}{draw, fill}
|
|
\else
|
|
\pgfsetfillcolor{\tikz@fillcolor}
|
|
\fi
|
|
\pgfsetfillopacity{1.0}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
% BNC connector
|
|
|
|
\pgfdeclareshape{bnc}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
% BNC size is 2.5 times the size of the internal "ocirc"
|
|
\savedanchor\northwest{%
|
|
\pgf@y=\ctikzvalof{nodes width}\pgf@circ@Rlen
|
|
\pgf@y=2.5\pgf@y
|
|
\pgf@x=-\pgf@y
|
|
}
|
|
% center is on the opening
|
|
\anchor{center}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{zero}{ \pgfpointorigin }
|
|
\anchor{hot}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{shield}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
% geo-anchors
|
|
\anchor{east}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{right}{ \northwest \pgf@y=0pt \pgf@x=-\pgf@x }
|
|
\anchor{west}{ \northwest \pgf@y=0pt }
|
|
\anchor{left}{ \northwest \pgf@y=0pt }
|
|
\anchor{south}{ \northwest \pgf@x=0pt \pgf@y=-\pgf@y }
|
|
\anchor{north}{ \northwest \pgf@x=0pt }
|
|
\anchor{south west}{ \northwest \pgf@y=-\pgf@y }
|
|
\anchor{north east}{ \northwest \pgf@x=-\pgf@x }
|
|
\anchor{north west}{ \northwest }
|
|
\anchor{south east}{ \northwest \pgf@x=-\pgf@x \pgf@y=-\pgf@y }
|
|
% put the node text above and centered
|
|
\anchor{text}{\pgfextracty{\pgf@circ@res@up}{\northwest}
|
|
\pgfpoint{-.5\wd\pgfnodeparttextbox}{
|
|
\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox+\pgf@circ@res@up\relax
|
|
}
|
|
}
|
|
\anchorborder{
|
|
\pgf@circ@res@left=\pgf@x
|
|
\pgf@circ@res@up=\pgf@y
|
|
\pgfpointborderellipse{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}
|
|
}{\pgfpoint{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}{2.5*\ctikzvalof{nodes width}*\pgf@circ@Rlen}}
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfextracty{\pgf@circ@res@other}{\northwest}
|
|
\pgf@circ@res@step=\ctikzvalof{nodes width}\pgf@circ@Rlen
|
|
\pgfscope
|
|
\pgfstartlinewidth=\pgflinewidth
|
|
\pgf@circ@setlinewidth{bipoles}{\pgflinewidth}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
% external circle
|
|
\pgfscope
|
|
% clipping path: first a rectangle bigger then the shape
|
|
% to avoid problems with the line thickness
|
|
\pgfpathrectanglecorners{\pgfpoint{-2\pgf@circ@res@other}{-2\pgf@circ@res@other}}
|
|
{\pgfpoint{2\pgf@circ@res@other}{2\pgf@circ@res@other}}
|
|
% next the opening to the right
|
|
\pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{-\pgf@circ@res@step}}
|
|
{\pgfpoint{2\pgf@circ@res@other}{\pgf@circ@res@step}}
|
|
% do the difference and clip before drawing
|
|
\pgfseteorule
|
|
\pgfusepath{clip}
|
|
\pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@other}
|
|
\pgfusepath{draw}
|
|
\endpgfscope
|
|
% internal circle
|
|
\pgfpathcircle{\pgfpointorigin}{\pgf@circ@res@step}
|
|
\pgf@circ@draworfill
|
|
% and the contact line to the right
|
|
\pgfsetlinewidth{\pgfstartlinewidth}
|
|
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@step}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{\pgf@circ@res@other}{0pt}}
|
|
\pgfusepath{draw}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% Fill for correct rectangular joins
|
|
|
|
\pgfdeclareshape{rectjoinfill}{
|
|
\savedanchor{\northeast}{%
|
|
\pgf@x=.5\pgflinewidth%
|
|
\pgf@y=.5\pgflinewidth%
|
|
}
|
|
\anchor{north}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{east}{\northeast\pgf@y=0cm\relax}
|
|
\anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
|
|
\anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
|
|
\anchor{north east}{\northeast}
|
|
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
|
|
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
|
|
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\anchorborder{
|
|
\pgf@circ@res@left=\pgf@x
|
|
\pgf@circ@res@up=\pgf@y
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgfpathrectanglecorners
|
|
{\pgfpoint{0}{.5\pgflinewidth}}
|
|
{\pgfpoint{0}{-.5\pgflinewidth}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfusepath{draw,fill}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% transistor arrow
|
|
|
|
\def\pgf@circ@find@linescale{
|
|
% find the scale inverse of the scale factor: line width do not scale
|
|
% with scale=..., transform shape so we have to counteract it.
|
|
\iftikz@fullytransformed % this is true if `transform shape` is active
|
|
% from @Circumscribe https://tex.stackexchange.com/a/474035/38080
|
|
% Note that this trick is not working inside a `spy` environment...
|
|
\pgfgettransformentries{\scaleA}{\scaleB}{\scaleC}{\scaleD}{\whatevs}{\whatevs}%
|
|
\pgfmathsetmacro{\@@factor}{1.0/sqrt(abs(\scaleA*\scaleD-\scaleB*\scaleC))}%
|
|
\else
|
|
\pgfmathsetmacro{\@@factor}{1.0}
|
|
\fi
|
|
}
|
|
|
|
\pgfdeclareshape{trarrow}{%
|
|
% this arrow is only filled but grows with the linewidth, more or less
|
|
% like currarrow do
|
|
\savedanchor{\northeast}{%
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\pgf@circ@find@linescale
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgfpoint{0.7*\pgf@circ@res@step +0.5*\@@factor*\pgflinewidth}
|
|
{0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
|
|
}
|
|
% The arrow size should be more or less the same of a currarrow, which is
|
|
% both filled and stroke, for backward output compatibility (more or less)
|
|
%
|
|
% angle \beta W is \pgf@circ@Rlen/\ctikzvalof{current arrow scale}
|
|
% |-\__ currarrow as the tip at (W,0)
|
|
% | | and the upper tail at (-0.7*W, 0.8*W)
|
|
% | \__ it then "overshoot" do to the linew width L
|
|
% | \__ xangle \alpha
|
|
% ---0------->
|
|
%
|
|
% \beta = atan(0.7/0.8) \alpha=atan(0.8/1.7)
|
|
% tip overshoot is (L/2)/sin(\alpha) = 1.743*L only in x direction
|
|
% tail overshoot is -(L/2) in x, and (L/2)/sin(\beta) = 0.7539*L in y
|
|
%
|
|
\savedanchor{\northwest}{%
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@circ@find@linescale
|
|
\pgfpoint{-0.7*\pgf@circ@res@step -0.5*\@@factor*\pgflinewidth}
|
|
{0.8*\pgf@circ@res@step+0.7593*\@@factor*\pgflinewidth}
|
|
}
|
|
\savedanchor{\tip}{%
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@circ@find@linescale
|
|
\pgfpoint{\pgf@circ@res@step + 1.743*\@@factor*\pgflinewidth}{0pt}
|
|
}
|
|
\anchor{north}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{east}{\northeast\pgf@y=0cm\relax}
|
|
\anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
|
|
\anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
|
|
\anchor{north east}{\northeast}
|
|
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
|
|
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
|
|
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\anchor{tip}{
|
|
\tip
|
|
}
|
|
\anchor{btip}{% this anchor is behind the tip of half a linewidth
|
|
\tip
|
|
\pgf@circ@find@linescale
|
|
\pgf@circ@res@temp=\@@factor\pgflinewidth
|
|
\advance\pgf@x by -.5\pgf@circ@res@temp
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\northwest
|
|
\pgf@circ@res@up=\pgf@y
|
|
\pgf@circ@res@left=\pgf@x
|
|
\tip
|
|
\pgf@circ@res@step = \pgf@x
|
|
%
|
|
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
|
|
\pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{-\pgf@circ@res@up}}
|
|
\pgfpathclose
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfusepath{fill} % just fill
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% Current arrow
|
|
|
|
\pgfdeclareshape{currarrow}{
|
|
\savedanchor{\northeast}{%
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@x=.5\pgf@circ@res@step
|
|
\pgf@y=\pgf@x%
|
|
}
|
|
\anchor{north}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{east}{\northeast\pgf@y=0cm\relax}
|
|
\anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
|
|
\anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
|
|
\anchor{north east}{\northeast}
|
|
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
|
|
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
|
|
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\anchor{tip}{
|
|
\pgfpointorigin
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@x =\pgf@circ@res@step
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
|
|
\pgfpathmoveto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
|
|
\pgfpathlineto{\pgfpoint{1\pgf@circ@res@step}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
|
|
\pgfpathlineto{\pgfpoint{-.7\pgf@circ@res@step}{0pt}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfusepath{draw,fill}
|
|
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% Flow arrow
|
|
|
|
\pgfdeclareshape{flowarrow}{
|
|
\savedanchor{\northeast}{%
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@y=.5\pgf@circ@res@step
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by 4
|
|
\pgf@x=\pgf@circ@res@step%
|
|
}
|
|
\anchor{north}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{east}{\northeast\pgf@y=0cm\relax}
|
|
\anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
|
|
\anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
|
|
\anchor{north east}{\northeast}
|
|
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
|
|
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
|
|
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
|
|
\anchor{text}{% text centered above
|
|
\pgfpointorigin
|
|
\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox+.5\ht\pgfnodeparttextbox}
|
|
}
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\anchor{tip}{
|
|
\pgfpointorigin
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@x =\pgf@circ@res@step
|
|
}
|
|
\behindforegroundpath{
|
|
\pgfscope
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by 4
|
|
\pgfpathmoveto{\pgfpoint{-\pgf@circ@res@step}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{\pgf@circ@res@step}{0pt}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfusepath{draw}
|
|
\pgftransformshift{\pgfpoint{\pgf@circ@res@step}{0pt}}
|
|
\pgfnode{currarrow}{tip}{}{}{\pgfusepath{fill}}
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
%% Input arrow
|
|
|
|
\pgfdeclareshape{inputarrow}{
|
|
\savedanchor{\northeast}{% this is really not northeast, really -northwest
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by \ctikzvalof{current arrow scale}
|
|
\pgf@y=.5\pgf@circ@res@step
|
|
\pgf@x=1.7\pgf@circ@res@step
|
|
}
|
|
\anchor{north}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{east}{\northeast\pgf@y=0cm\relax\pgf@x=0cm\relax}
|
|
\anchor{south}{\northeast\pgf@y=-\pgf@y \pgf@x=0cm\relax}
|
|
\anchor{west}{\northeast\pgf@y=0cm\pgf@x=-\pgf@x}
|
|
\anchor{north east}{\northeast\pgf@x=0cm\relax}
|
|
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
|
|
\anchor{south east}{\northeast\pgf@y=-\pgf@y\pgf@x=0cm\relax}
|
|
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
|
|
\savedanchor{\tip}{
|
|
\pgfpointorigin
|
|
}
|
|
\anchor{center}{
|
|
\tip
|
|
}
|
|
\anchor{tip}{
|
|
\tip
|
|
}
|
|
\behindforegroundpath{
|
|
|
|
\pgfscope
|
|
\pgf@circ@res@step = \pgf@circ@Rlen
|
|
\divide \pgf@circ@res@step by 16
|
|
|
|
\pgfpathmoveto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{-.8\pgf@circ@res@step}}
|
|
\pgfpathlineto{\pgfpoint{0pt}{0pt}}
|
|
\pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{.8\pgf@circ@res@step}}
|
|
\pgfpathlineto{\pgfpoint{-1.7\pgf@circ@res@step}{0pt}}
|
|
\pgfsetcolor{\ctikzvalof{color}}
|
|
\pgfusepath{fill}
|
|
|
|
\endpgfscope
|
|
}
|
|
}
|
|
|
|
|
|
%% box
|
|
|
|
\pgfdeclareshape{box}{
|
|
\anchor{center}{
|
|
\pgfpointorigin
|
|
}
|
|
\behindforegroundpath{
|
|
|
|
\pgfscope
|
|
\pgf@circ@res@step = \ctikzvalof{bipoles/twoport/width}\pgf@circ@Rlen
|
|
\pgf@circ@res@step = 0.5\pgf@circ@res@step
|
|
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
|
|
\pgfpathrectanglecorners{\pgfpoint{-\pgf@circ@res@step}{\pgf@circ@res@step}}{\pgfpoint{\pgf@circ@res@step}{-\pgf@circ@res@step}}
|
|
\pgf@circ@draworfill
|