diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf | bin | 17743 -> 17743 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md | 7 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/circuitikz/changelog.tex | 15 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf | bin | 1128438 -> 1133938 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex | 21 | ||||
-rw-r--r-- | Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex | 132 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex | 257 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty | 4 |
10 files changed, 431 insertions, 11 deletions
diff --git a/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf b/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf Binary files differindex 047b3dd3788..f26913dd19f 100644 --- a/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf +++ b/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf diff --git a/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md b/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md index bb390e3dfb7..ce72f206aec 100644 --- a/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md +++ b/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md @@ -1,6 +1,13 @@ <!--- CircuiTikz - Changelog ---> The major changes among the different circuitikz versions are listed here. See <https://github.com/circuitikz/circuitikz/commits> for a full list of changes. +* Version 1.3.2 (2021-03-14) + + - Added the simplified (2-waves) highpass and lowpass blocks + - Added graphene FETs (suggested by Cees Keyer) + - Added left/right anchors to transistors + - Fixed a bug in flip-flops (https://tex.stackexchange.com/q/587213/38080) + * Version 1.3.1 (2021-02-20) - Fixed a bug in "fuse" and "afuse" fill diff --git a/Master/texmf-dist/doc/latex/circuitikz/changelog.tex b/Master/texmf-dist/doc/latex/circuitikz/changelog.tex index cbf38e1cf8a..5b4be6d089f 100644 --- a/Master/texmf-dist/doc/latex/circuitikz/changelog.tex +++ b/Master/texmf-dist/doc/latex/circuitikz/changelog.tex @@ -5,6 +5,21 @@ full list of changes. \begin{itemize} \item + Version 1.3.2 (2021-03-14) + + \begin{itemize} + \tightlist + \item + Added the simplified (2-waves) highpass and lowpass blocks + \item + Added graphene FETs (suggested by Cees Keyer) + \item + Added left/right anchors to transistors + \item + Fixed a bug in flip-flops + (https://tex.stackexchange.com/q/587213/38080) + \end{itemize} +\item Version 1.3.1 (2021-02-20) \begin{itemize} diff --git a/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf b/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf Binary files differindex 00a4f917635..d0a6ea3ea33 100644 --- a/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf +++ b/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf diff --git a/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex b/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex index f69ca43b060..1f3d694044b 100644 --- a/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex +++ b/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex @@ -2595,6 +2595,8 @@ It also has a \texttt{zero} anchor if you need to rotate it about its real cente \circuitdescbip*{highpass}{highpass}{} \circuitdescbip*{lowpass}{lowpass}{} \circuitdescbip*{allpass}{allpass}{} + \circuitdescbip*{highpass2}{simplified highpass (with only 2 waves)}{} + \circuitdescbip*{lowpass2}{simplified lowpass (with only 2 waves)}{} \circuitdescbip*{adc}{A/D converter}{} \circuitdescbip*{dac}{D/A converter}{} \circuitdescbip*{dsp}{DSP}{} @@ -2867,6 +2869,13 @@ Basically they are the same as the normal \texttt{npn} and \texttt{pnp}, and the \circuitdesc{isfet}{isfet}{Q} \end{groupdesc} +\textsc{Graphene fet} have been added in version \texttt{1.3.2}\footnote{added by Romano Giannetti after a suggestion by Cees Keyer.}. They look better if you set \texttt{transistors/arrow pos=end} and \texttt{transistor/thickness=3} or higher for them, so they are plotted with this option here. +\begin{groupdesc} + \ctikzset{transistors/thickness=3, transistors/arrow pos=end} + \circuitdesc*{ngfet}{N-type graphene FET}{Q}(outer hex up/45/0.3, outer hex down/-45/0.3, right/0/0.4) + \circuitdesc*{pgfet}{pgfet}{Q}(inner hex up/135/0.3, inner hex down/-135/0.3) +\end{groupdesc} + \subsubsection{Transistor texts (labels)}\label{sec:transistors-labels} In versions before \texttt{0.9.7}, transistors text (the node text) was positioned near the collector terminal; since version \texttt{0.9.7} the default has been changed to a more natural position near the center of the device, similar to the multi-teminal transistors. You can revert to the old behavior locally with the key \texttt{legacy transistors text}, or globally by setting the package option \texttt{legacytransistorstext}. @@ -2918,7 +2927,7 @@ You can go back to the no-arrows mos with \texttt{noarrowmos} locally or with \texttt{\textbackslash ctikzset\{tripoles/mos style/no arrows\}}. -\paragraph{Circles.} Since \texttt{1.2.6}, you can add a circle\footnote{Suggested by Matthias Jung \href{https://github.com/circuitikz/circuitikz/issues/442}{on GitHub}} to most of the transistor shapes --- with the exception of multi-terminal ones (\texttt{bjtnpn} and \texttt{bjtpnp}, where it would be awkward anyway). The circle is intended in some case as the component's housing, and used to distinguish discrete components from integrated ones. +\paragraph{Circles.} Since \texttt{1.2.6}, you can add a circle\footnote{Suggested by Matthias Jung \href{https://github.com/circuitikz/circuitikz/issues/442}{on GitHub}} to most of the transistor shapes --- with the exception of multi-terminal (\texttt{bjtnpn} and \texttt{bjtpnp}, where it would be awkward anyway) and graphene FETs. The circle is intended in some case as the component's housing, and used to distinguish discrete components from integrated ones. To add the circle to a single transistor, you use the \texttt{tr circle} keys in the node; if you want all of your transistors with a circle, you can set the property \texttt{tr circle} with a \verb|\ctikzset| command (it will respect normal grouping, of course); in that case, you can use \texttt{tr circle=false} to locally disable them. @@ -3218,7 +3227,15 @@ For \textsc{npn}, \textsc{pnp}, \textsc{nigbt} and \textsc{pigbt} transistors, t ;\end{circuitikz} \end{LTXexample} -Finally, all transistors, except the multi-terminal \texttt{bjtnpn} and \texttt{bjtpnp}, (since \texttt{0.9.6}) have internal nodes on the terminal corners, called \texttt{inner up} and \texttt{inner down}; you do not normally need them, but they are here for special applications: + +Notice that the geographical anchors of transistors are \emph{not} affected by either the bodydiode and the circle options; the label text is also outside of them. This is to permit to align the components independently from that features. On the other hand, that can sometimes create problems because that element are outside the bounding box automatically calculated by \TikZ{}. + +The exception is the \texttt{right} anchor which, when a circle is present, indicates the edge of the circle itself (since \texttt{v1.3.2}) + +{\geolrcoord{npn} \geolrcoord{npn, bodydiode} \geolrcoord{npn, bodydiode, tr circle}} + + +All transistors, except the multi-terminal \texttt{bjtnpn} and \texttt{bjtpnp}, (since \texttt{0.9.6}) have internal nodes on the terminal corners, called \texttt{inner up} and \texttt{inner down}; you do not normally need them, but they are here for special applications: \begin{LTXexample}[varwidth=true] \begin{circuitikz} diff --git a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex index 76090560e1d..fcc31889fee 100644 --- a/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex +++ b/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex @@ -10,8 +10,8 @@ % % See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details. -\def\pgfcircversion{1.3.1} -\def\pgfcircversiondate{2021/02/20} +\def\pgfcircversion{1.3.2} +\def\pgfcircversiondate{2021/03/14} \writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion} \usemodule[tikz] diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex index 3454f6dd344..82b156c46d3 100644 --- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex +++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex @@ -1406,7 +1406,7 @@ \ifx\@@tmp\@@x\else\edef\@@or{1}\fi \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}} \ifnum\@@tmp>0\edef\@@or{1}\fi - \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}} + \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}} \ifnum\@@tmp>0\edef\@@or{1}\fi % \typeout{TEST\space\@@tmp\space\@@x} \ifnum\@@or>0 diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex index e00b33ad591..7b267095403 100644 --- a/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex +++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcircquadpoles.tex @@ -417,7 +417,9 @@ \ctikzset{bipoles/bandpass/width/.initial=.7} \ctikzset{bipoles/bandstop/width/.initial=.7} \ctikzset{bipoles/highpass/width/.initial=.7} +\ctikzset{bipoles/highpass2/width/.initial=.7} \ctikzset{bipoles/lowpass/width/.initial=.7} +\ctikzset{bipoles/lowpass2/width/.initial=.7} \ctikzset{bipoles/allpass/width/.initial=.7} \ctikzset{bipoles/adc/width/.initial=.7} \ctikzset{bipoles/dac/width/.initial=.7} @@ -870,6 +872,70 @@ \pgfusepath{draw} } +%% highpass2 filter ---simplyfied with just two waves +\pgfcircdeclarebipolescaled{blocks} +{} +{\ctikzvalof{bipoles/highpass2/width}} +{highpass2} +{\ctikzvalof{bipoles/highpass2/width}} +{\ctikzvalof{bipoles/highpass2/width}} +{ + \pgf@circ@res@step = \ctikzvalof{bipoles/highpass2/width}\pgf@circ@scaled@Rlen + \divide \pgf@circ@res@step by 2 + + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} + \pgf@circ@res@other = \pgf@circ@res@left + \advance\pgf@circ@res@other by \pgf@circ@res@step + + \ifpgf@circuit@dashed + \pgfsetdash{{0.1cm}{0.1cm}}{0cm} + \fi + + % draw outer box + \pgf@circ@twoportbox + + \ifpgf@circuit@inputarrow + { + \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth + \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} + \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} + } + \fi + + % rotate inner symbol + \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} + \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 + \pgftransformrotate{270} + \fi\fi + \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible + \pgftransformrotate{180} + \fi\fi + \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 + \pgftransformrotate{90} + \fi\fi + + % draw inner symbol + \pgfsetdash{}{0pt} % always draw solid line for inner symbol + \pgfsetarrows{-} %never draw arrows + \pgfsetlinewidth{\pgfstartlinewidth} + \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfusepath{draw} + + \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfusepath{draw} + \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{-0.5\pgf@circ@res@step}} + \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@step}{-0.1\pgf@circ@res@step}} + \pgfusepath{draw} +} + %% lowpass filter \pgfcircdeclarebipolescaled{blocks} {} @@ -944,6 +1010,70 @@ \pgfusepath{draw} } +%% lowpass2 filter: simplyfied with just two waves +\pgfcircdeclarebipolescaled{blocks} +{} +{\ctikzvalof{bipoles/lowpass2/width}} +{lowpass2} +{\ctikzvalof{bipoles/lowpass2/width}} +{\ctikzvalof{bipoles/lowpass2/width}} +{ + \pgf@circ@res@step = \ctikzvalof{bipoles/lowpass2/width}\pgf@circ@scaled@Rlen + \divide \pgf@circ@res@step by 2 + + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@zero}} + \pgf@circ@res@other = \pgf@circ@res@left + \advance\pgf@circ@res@other by \pgf@circ@res@step + + \ifpgf@circuit@dashed + \pgfsetdash{{0.1cm}{0.1cm}}{0cm} + \fi + + % draw outer box + \pgf@circ@twoportbox + + \ifpgf@circuit@inputarrow + { + \advance \pgf@circ@res@left by -.5\ctikzvalof{bipoles/thickness}\pgfstartlinewidth + \pgftransformshift{\pgfpoint{\pgf@circ@res@left}{0pt}} + \pgfnode{inputarrow}{tip}{}{pgf@inputarrow}{\pgfusepath{fill}} + } + \fi + + % rotate inner symbol + \def\pgfcircmathresult{\expandafter\pgf@circ@stripdecimals\pgf@circ@direction\pgf@nil} + \ifnum \pgfcircmathresult > 45 \ifnum \pgfcircmathresult < 135 + \pgftransformrotate{270} + \fi\fi + \ifnum \pgfcircmathresult > 134 \ifnum \pgfcircmathresult < 225 % 134 degree, because >= 135 is not possible + \pgftransformrotate{180} + \fi\fi + \ifnum \pgfcircmathresult > 224 \ifnum \pgfcircmathresult < 315 + \pgftransformrotate{90} + \fi\fi + + % draw inner symbol + \pgfsetdash{}{0pt} % always draw solid line for inner symbol + \pgfsetarrows{-} %never draw arrows + \pgfsetlinewidth{\pgfstartlinewidth} + \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{0.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfusepath{draw} + \pgfpathmoveto{\pgfpoint{-0.3\pgf@circ@res@step}{0.1\pgf@circ@res@step}} + \pgfpathlineto{\pgfpoint{0.3\pgf@circ@res@step}{0.5\pgf@circ@res@step}} + \pgfusepath{draw} + + \pgfpathmoveto{\pgfpoint{-0.5\pgf@circ@res@step}{-0.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathsine{\pgfpoint{.25\pgf@circ@res@step}{-.25\pgf@circ@res@step}} + \pgfpathcosine{\pgfpoint{.25\pgf@circ@res@step}{.25\pgf@circ@res@step}} + \pgfusepath{draw} +} + %% allpass filter \pgfcircdeclarebipolescaled{blocks} {} @@ -2121,7 +2251,9 @@ \pgfcirc@activate@bipole@simple{l}{bandpass} \pgfcirc@activate@bipole@simple{l}{bandstop} \pgfcirc@activate@bipole@simple{l}{highpass} +\pgfcirc@activate@bipole@simple{l}{highpass2} \pgfcirc@activate@bipole@simple{l}{lowpass} +\pgfcirc@activate@bipole@simple{l}{lowpass2} \pgfcirc@activate@bipole@simple{l}{allpass} \pgfcirc@activate@bipole@simple{l}{adc} \pgfcirc@activate@bipole@simple{l}{dac} diff --git a/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex b/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex index f6ebcf61a34..1fa81e73262 100644 --- a/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex +++ b/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex @@ -3255,6 +3255,38 @@ \ctikzset{tripoles/isfet/bodydiode conn/.initial=.6} \ctikzset{tripoles/isfet/curr direction/.initial=1} % +% graphene FET +% +\ctikzset{tripoles/pgfet/width/.initial=.6} +\ctikzset{tripoles/pgfet/gate height/.initial=.5} +\ctikzset{tripoles/pgfet/gate height 2/.initial=0.25} % must be "gate height"/2 +\ctikzset{tripoles/pgfet/base height/.initial=.5} % must be "gate height" +\ctikzset{tripoles/pgfet/outer base height/.initial=.25} % must be "gate height 2" +\ctikzset{tripoles/pgfet/outer base thickness/.initial=1} +\ctikzset{tripoles/pgfet/conn height/.initial=0} +\ctikzset{tripoles/pgfet/height/.initial=1.1} +\ctikzset{tripoles/pgfet/gate width/.initial=.5} +\ctikzset{tripoles/pgfet/base width/.initial=0.36084} % must be "gate height"*cos(60)/(2*width) +\ctikzset{tripoles/pgfet/bodydiode scale/.initial=.3} +\ctikzset{tripoles/pgfet/bodydiode distance/.initial=.6} +\ctikzset{tripoles/pgfet/bodydiode conn/.initial=.6} +\ctikzset{tripoles/pgfet/curr direction/.initial=-1} + +\ctikzset{tripoles/ngfet/width/.initial=.6} +\ctikzset{tripoles/ngfet/gate height/.initial=.5} +\ctikzset{tripoles/ngfet/gate height 2/.initial=0.25} % must be "gate height"/2 +\ctikzset{tripoles/ngfet/base height/.initial=.5} % must be "gate height" +\ctikzset{tripoles/ngfet/outer base height/.initial=.25} % must be "gate height 2" +\ctikzset{tripoles/ngfet/outer base thickness/.initial=1} +\ctikzset{tripoles/ngfet/conn height/.initial=0} +\ctikzset{tripoles/ngfet/height/.initial=1.1} +\ctikzset{tripoles/ngfet/gate width/.initial=.5} +\ctikzset{tripoles/ngfet/base width/.initial=0.36084} % must be "gate height"*cos(60)/(2*width) +\ctikzset{tripoles/ngfet/bodydiode scale/.initial=.3} +\ctikzset{tripoles/ngfet/bodydiode distance/.initial=.6} +\ctikzset{tripoles/ngfet/bodydiode conn/.initial=.6} +\ctikzset{tripoles/ngfet/curr direction/.initial=1} +% % multi-emitter and multi-collector BJTs by Romano Giannetti % \ctikzset{tripoles/bjt/emitters/.initial=1} @@ -3349,7 +3381,7 @@ \pgf@x=0pt\relax \fi } - \savedmacro{\scaecircleradius}{ + \savedmacro{\scalecircleradius}{ \edef\scalecircleradius{\ctikzvalof{transistor circle/scale circle radius}} } \saveddimen{\circleradius}{ @@ -3400,9 +3432,39 @@ \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen} \pgf@x=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen } - \savedanchor\right{%center right -- added by Burak Kelleci % this is really 0,0 - \pgf@y=0pt - \pgf@x=0pt + \savedanchor\right{ + \pgf@x=0pt\pgf@y=0pt + \ifpgf@circ@trcircle + % repeat the \circleradius computation (GRRRR) + \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen} + % repeat the extrabodydiodelen (grrr) + \ifpgf@circuit@fet@bodydiode + % try to put the text to the right of the flyback diode + \pgfmathsetlength{\pgf@circ@res@other}{( + \ctikzvalof{tripoles/#1/bodydiode distance}* + \ctikzvalof{tripoles/#1/width} + + \ctikzvalof{tripoles/#1/bodydiode scale}* + \ctikzvalof{bipoles/diode/height}/2 + )*\pgf@circ@scaled@Rlen} + \else + \pgf@circ@res@other=0pt\relax + \fi + % left + \pgf@xa=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen + \pgf@xa=\circlebase\pgf@xa % this is the base point of the circle + % northeast + \pgf@yb=\ctikzvalof{tripoles/#1/height}\pgf@circ@scaled@Rlen % y of the left point of circle + \pgf@yb=.5\pgf@yb + \pgf@xb=\pgf@circ@res@other % this is the x of the right points of the circle + % + \pgf@yb=\ctikzvalof{tripoles/#1/bodydiode conn}\pgf@yb %this is #3 of the circle + % find the radius of the circle + \pgfmathsetlength{\pgf@circ@res@other}{((\pgf@xb)-(\pgf@xa)+(\pgf@yb)*(\pgf@yb)/((\pgf@xb)-(\pgf@xa)))/2*\scalecircleradius} + % repeat the circleleft computation + \pgf@xa=-\ctikzvalof{tripoles/#1/width}\pgf@circ@scaled@Rlen + \pgf@xb=\circlebase\pgf@xa + \pgfmathsetlength{\pgf@x}{\pgf@xb+2*\pgf@circ@res@other} + \fi } \anchor{text}{ \northeast @@ -3442,10 +3504,16 @@ \anchor{west}{ \left } + \anchor{left}{ + \left + } \anchor{east}{ \northeast \pgf@y=0pt } + \anchor{right}{ + \right + } \anchor{south}{ \northeast \pgf@circ@res@step=\pgf@y @@ -4302,6 +4370,187 @@ \declareigbt{Lnigbt} \declareigbt{Lpigbt} +% Graphene FET, See https://github.com/circuitikz/circuitikz/issues/496 +\long\def\declaregfet#1{ + \pgfcircdeclaretransistor{#1}{ + \anchor{inner up}{ + \northeast + \pgf@y=\ctikzvalof{tripoles/#1/gate height}\pgf@y + } + \anchor{inner down}{ + \northeast + \pgf@y=-\ctikzvalof{tripoles/#1/gate height}\pgf@y + } + \anchor{outer hex up}{ + \left + \pgf@xa=\ctikzvalof{tripoles/#1/base width}\pgf@x + \northeast + \pgf@y=\ctikzvalof{tripoles/#1/gate height 2}\pgf@y + \pgf@x=-\pgf@xa + } + \anchor{outer hex down}{ + \left + \pgf@xa=\ctikzvalof{tripoles/#1/base width}\pgf@x + \northeast + \pgf@y=\ctikzvalof{tripoles/#1/gate height 2}\pgf@y + \pgf@y=-\pgf@y + \pgf@x=-\pgf@xa + } + \anchor{inner hex up}{ + \left + \pgf@xa=\ctikzvalof{tripoles/#1/base width}\pgf@x + \northeast + \pgf@y=\ctikzvalof{tripoles/#1/gate height 2}\pgf@y + \pgf@x=\pgf@xa + } + \anchor{inner hex down}{ + \left + \pgf@xa=\ctikzvalof{tripoles/#1/base width}\pgf@x + \northeast + \pgf@y=\ctikzvalof{tripoles/#1/gate height 2}\pgf@y + \pgf@y=-\pgf@y + \pgf@x=\pgf@xa + } + \anchor{right}{ + \northeast\pgf@y=0pt\relax + \pgfmathsetlength{\pgf@xa}{\ctikzvalof{tripoles/#1/base width}* + \ctikzvalof{tripoles/#1/width}*\pgf@circ@scaled@Rlen} + \advance \pgf@x by \pgf@xa + } + \anchor{text}{% need a different text: no circle, shift to the right + \northeast + \pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen} + \ifpgf@circuit@transisors@fixlabels + \ifpgf@circuit@fet@bodydiode + \advance \pgf@x by \extrabodydiodelen + \else + \pgfmathsetlength{\pgf@xa}{\ctikzvalof{tripoles/#1/base width}* + \ctikzvalof{tripoles/#1/width}*\pgf@circ@scaled@Rlen} + \advance \pgf@x by \pgf@xa + \fi + % no circle for gfets + % add a bit of space to avoid central (substrate) terminal if drawn + \advance\pgf@x by 0.05\pgf@circ@scaled@Rlen\relax + \pgf@y=\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax + \else + \pgf@y=.7\pgf@y + \pgf@x= \pgf@circ@scaled@Rlen + \pgf@x=0.1\pgf@x + \fi + } + } + { + % no circle for gfets (clearly!) + %draw upper connection to hexagon + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@right} + {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}} + \pgfpathmoveto{\pgfpoint{\pgf@circ@res@right} + {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5*\pgflinewidth}} + \pgfusepath{draw} + % draw (fillable) hexagon + \pgfscope + \pgfpathmoveto{\pgfpoint + {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@right} + {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}} + \pgfpathlineto{\pgfpoint + {-\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}} + \pgfpathlineto{\pgfpoint + {-\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@right} + {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}} + \pgfpathlineto{\pgfpoint + {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left} + {-\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}} + \pgfpathclose + \pgf@circ@draworfill + \endpgfscope + %draw thicker gate lines + \pgfscope + \pgfscope + \pgfpathmoveto{\pgfpoint + {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}} + \pgfpathlineto{\pgfpoint + {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/outer base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}} + % set the normal thickness + \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} + \edef\@@extrat{\ctikzvalof{tripoles/#1/outer base thickness}} + \pgfsetlinewidth{\@@extrat\pgflinewidth} + \pgfusepath{draw} + \endpgfscope + \pgfpathmoveto{\pgfpoint + {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@up+\pgfverticaltransformationadjustment*.5\pgflinewidth}} + \pgfpathlineto{\pgfpoint + {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/base height}\pgf@circ@res@down-\pgfverticaltransformationadjustment*.5\pgflinewidth}} + \pgf@circ@setlinewidth{tripoles}{\pgflinewidth} + \pgfusepath{draw} + \endpgfscope + %draw arrow depending on type of transistor + \pgfscope + \pgfslopedattimetrue + \pgfallowupsidedownattimetrue + \pgfresetnontranslationattimefalse + \ifpgf@circuit@trans@arrowatend + \ifpgf@circuit@trans@ntype + \edef\@@anchor{btip}\edef\@@pos{1.0} + \else + \edef\@@anchor{tip}\edef\@@pos{1.0} + \fi + \else + \edef\@@anchor{center}\edef\@@pos{0.5} + \fi + \ifpgf@circuit@trans@ntype + \pgftransformlineattime{\@@pos}{% + \pgfpoint% + {\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}% + {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@down}% + }{% + \pgfpoint{\pgf@circ@res@right}% + {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@down}% + } + \else + \pgftransformlineattime{\@@pos}{% + \pgfpoint{\pgf@circ@res@right}% + {\ctikzvalof{tripoles/#1/gate height}\pgf@circ@res@up}% + }{% + \pgfpoint{\ctikzvalof{tripoles/#1/base width}\pgf@circ@res@left}% + {\ctikzvalof{tripoles/#1/gate height 2}\pgf@circ@res@up}% + } + \fi + \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}} + \endpgfscope + %draw gate + \ifpgf@circuit@trans@ntype + \pgfpathmoveto{\pgfpoint + {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}% + {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@down}} + \else + \pgfpathmoveto{\pgfpoint + {\ctikzvalof{tripoles/#1/gate width}\pgf@circ@res@left} + {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}} + \pgfpathlineto{\pgfpoint{\pgf@circ@res@left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}% + {\ctikzvalof{tripoles/#1/conn height}\pgf@circ@res@up}} + \fi + \pgfusepath{draw} + } +} + +\declaregfet{pgfet} +\declaregfet{ngfet} + +% Plain MOSes + \pgfcircdeclaretransistor{nmos}{ \anchor{inner up}{ \northeast diff --git a/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty b/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty index a5ec75f3aff..83ac0f569df 100644 --- a/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty +++ b/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty @@ -12,8 +12,8 @@ \NeedsTeXFormat{LaTeX2e} -\def\pgfcircversion{1.3.1} -\def\pgfcircversiondate{2021/02/20} +\def\pgfcircversion{1.3.2} +\def\pgfcircversiondate{2021/03/14} \ProvidesPackage{circuitikz}% [\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion] |