texlive[58923] Master/texmf-dist: circuitikz (20apr21)

commits+karl at tug.org commits+karl at tug.org
Tue Apr 20 22:09:13 CEST 2021


Revision: 58923
          http://tug.org/svn/texlive?view=revision&revision=58923
Author:   karl
Date:     2021-04-20 22:09:13 +0200 (Tue, 20 Apr 2021)
Log Message:
-----------
circuitikz (20apr21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
    trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex
    trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf
    trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex
    trunk/Master/texmf-dist/doc/latex/circuitikz/ctikzmanutils.sty
    trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
    trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty

Modified: trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md	2021-04-20 20:09:13 UTC (rev 58923)
@@ -1,6 +1,20 @@
 <!--- 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.4 (2021-04-20)
+
+    New things, like configurable modifier thickness, ferroelectric devices, and several transistor tweaks. Importantly, a bug that hindered compatibility with the internal Ti*k*Z `circuits` library (introduced in 1.3.3) has been fixed.
+
+    - Added separate configuration for the line thickness of resistors, capacitors, and inductors modifiers
+    - Added ferroelectric capacitors and ferroelectric gate MOS/FETs (suggested by Mayeul Cantan, https://github.com/circuitikz/circuitikz/issues/515)
+    - Added an option to fill the gate gap in MOSes, FETs and IGBTs with a color
+    - Added a "centergap" anchor for transistors
+    - Added the option "nogate" to the `hemt` symbol
+    - Fixed a bug in thermistors not respecting their class line thickness
+    - Fixes in the manual (copy and paste of snippets without numbers, correct old usage of `siunitx`, factor out repetitions in the preamble; thanks to Ulrike Fischer:
+    https://tex.stackexchange.com/a/57160/38080)
+    - Fixed a bug introduced in 1.3.3 that would reduce compatibility with the `circuits` internal library; reported by JetherReis (https://github.com/circuitikz/circuitikz/issues/519)
+
 * Version 1.3.3 (2021-04-04)
 
     Several usability additions in this version, and one small fix that could
@@ -7,6 +21,8 @@
     change the look of your circuit (without affecting correctness). Some of the
     arrow shapes are now configurable.
 
+    Do not use this version, there is a bug with the new "label distance" key.
+
     - Added options to fine-tune the position of labels and annotations
     - Added options to change arrow tips on variable resistors, inductors and
       capacitors as well as in potentiometers

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -5,6 +5,42 @@
 
 \begin{itemize}
 \item
+  Version 1.3.4 (2021-04-20)
+
+  New things, like configurable modifier thickness, ferroelectric
+  devices, and several transistor tweaks. Importantly, a bug that
+  hindered compatibility with the internal Ti\emph{k}Z \texttt{circuits}
+  library (introduced in 1.3.3) has been fixed.
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Added separate configuration for the line thickness of resistors,
+    capacitors, and inductors modifiers
+  \item
+    Added ferroelectric capacitors and ferroelectric gate MOS/FETs
+    (suggested by Mayeul Cantan,
+    https://github.com/circuitikz/circuitikz/issues/515)
+  \item
+    Added an option to fill the gate gap in MOSes, FETs and IGBTs with a
+    color
+  \item
+    Added a ``centergap'' anchor for transistors
+  \item
+    Added the option ``nogate'' to the \texttt{hemt} symbol
+  \item
+    Fixed a bug in thermistors not respecting their class line thickness
+  \item
+    Fixes in the manual (copy and paste of snippets without numbers,
+    correct old usage of \texttt{siunitx}, factor out repetitions in the
+    preamble; thanks to Ulrike Fischer:
+    https://tex.stackexchange.com/a/57160/38080)
+  \item
+    Fixed a bug introduced in 1.3.3 that would reduce compatibility with
+    the \texttt{circuits} internal library; reported by JetherReis
+    (https://github.com/circuitikz/circuitikz/issues/519)
+  \end{itemize}
+\item
   Version 1.3.3 (2021-04-04)
 
   Several usability additions in this version, and one small fix that
@@ -11,6 +47,9 @@
   could change the look of your circuit (without affecting correctness).
   Some of the arrow shapes are now configurable.
 
+  Do not use this version, there is a bug with the new ``label
+  distance'' key.
+
   \begin{itemize}
   \tightlist
   \item

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -19,10 +19,6 @@
 %
 
 \documentclass[a4paper, titlepage]{article}
-\usepackage{a4wide}	% smaller borders
-\usepackage{titling}
-\usepackage{titlesec}
-\newcommand{\sectionbreak}{\clearpage}
 
 \def\modern{
 	\usepackage{fontspec}
@@ -39,7 +35,7 @@
 \usepackage[siunitx, RPvoltages]{circuitikz}
 % Let this be the same as the chosen voltage direction for coherence
 \def\chosenvoltoption{RPvoltages}
-
+%
 \usepackage{ifxetex,ifluatex}
 \ifxetex
 	\modern
@@ -56,76 +52,15 @@
 \def\tightlist{} % needed for latest pandoc-versions(pandoc used for including changelog)
 \usepackage{microtype}
 
-\sisetup{load=derived} % loading \siemens
-\usepackage{showexpl}
+% Local utilities packages
+\usepackage{ctikzmanutils}
 %
-% The following trick is used to silence showexpl a bit, so that the
-% logs are readable...
-%
-\makeatletter
-\let\SX at Info=\relax % silence showexpl a bit...
-\makeatother
-%
-\lstset{
-    pos=l,
-    width=-99pt,
-    overhang=0pt,
-    hsep=\columnsep,
-    vsep=\bigskipamount,
-    rframe=single,
-    numbers=left,
-    numberstyle=\tiny,
-    numbersep=.3em,
-    xleftmargin=1em,
-    columns=flexible,
-    language=[LaTeX]TEX,breaklines=true,
-    basicstyle=\normalsize\ttfamily,tabsize=3
-}
 
-\usepackage{booktabs}
-\renewcommand{\arraystretch}{1.2}
-
-\usepackage{framed, xtab}
-\usepackage{hyperref}
-\hypersetup{
-    bookmarks=false,         % show bookmarks bar?
-    pdftitle={CircuiTikZ \pgfcircversion\ - manual}, % title
-    pdfauthor={Massimo Redaelli, Stefan Lindner, Stefan Erhardt, Romano Giannetti}, % authors
-    pdfsubject={CircuiTikZ manual},   % subject of the document
-    pdfkeywords={},   % list of keywords
-    colorlinks=true,  % false: boxed links; true: colored links
-    linkcolor=blue,   % color of internal links
-    citecolor=blue,   % color of links to bibliography
-    filecolor=blue,   % color of file links
-    urlcolor=blue     % color of external links
-}
 \usepackage{imakeidx}
-\usepackage{textcomp}
 \makeindex[title=Index of the components, intoc=true]
 
-% Local utilities packages
-\usepackage{ctikzmanutils}
-
-\newcommand{\email}[1]{\href{mailto:#1}{#1}}
-\long\def\comment#1{}
-
-% There are a lot of boxes in the document; let's try to give TeX
-% a bit of leverage... do not use parindent (which looks strange between examples)
-% and add stretch between paragraph, to avoid a lot of sections and subsections
-% starting at the end of the page.
-\parindent=0pt
-\parskip=4pt plus 6pt minus 2pt
-
 \begin{document}
-\setcounter{secnumdepth}{4}
-\setcounter{tocdepth}{4}
 
-\def\TikZ{Ti\emph{k}Z}
-\def\Circuitikz{Circui\TikZ}
-\def\ConTeXt{Con\TeX t}
-\lstset{frameround=fttt}
-\lstloadlanguages{TeX}
-
 \title{\Circuitikz \\{\large version \pgfcircversion{} (\pgfcircversiondate)}}
 \author{Massimo A. Redaelli (\email{m.redaelli at gmail.com})\\
     Stefan Lindner (\email{stefan.lindner at fau.de})\\
@@ -506,7 +441,7 @@
 
 Finally, we would like to add voltages indication for carrying out the current formulas; as the default position of the voltage signs seems a bit cramped to me, I am adding the \texttt{voltage shift} parameter to make a bit more space for it\dots
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american, voltage shift=0.5]
     \draw (0,0)
     to[isource, l=$I_0$, v=$V_0$] (0,3)
@@ -520,7 +455,7 @@
 
 \emph{Et voilá!}. Remember that this is still \LaTeX, which means that you have done a description of your circuit, which is, in a lot of way, independent of the visualization of it. If you ever have to adapt the circuit to, say, a journal that force European style and flows instead of currents, you just change a couple of things and you have what seems a completely different diagram:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[european, voltage shift=0.5]
     \draw (0,0)
     to[isourceC, l=$I_0$, v=$V_0$] (0,3)
@@ -534,7 +469,7 @@
 
 And finally, this is still \TikZ, so that you can freely mix other graphics element to the circuit.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american, voltage shift=0.5]
     \draw (0,0)
     to[isource, l=$I_0$, v=$V_0$] (0,3)
@@ -644,7 +579,7 @@
 
 After that, let's add the input part. I will use a named node here, to refer to it to add the input source. Notice how the ground node is positioned: the coordinate \texttt{(in |- GND)} is the point with the horizontal coordinate of \texttt{(in)}  and the vertical one of \texttt{(GND)}, lining it up with the ground of the capacitor $C_1$ (you can think it as ``the point on the vertical of \texttt{in} and the horizontal of \texttt{GND}'').
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american, scale=0.7, transform shape]
 \draw (0,0) node[nmos,](Q1){\killdepth{Q1}};
 \draw (Q1.S) to[R, l2^=$R_S$ and \SI{5}{k\ohm}]
@@ -883,7 +818,7 @@
 
 Now we can add the ``and'' gates. For example, we can add the gates to the right like this:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,0) node[sr-ff](FF){} (FF.bup)
     node[above]{SR-FF};
@@ -897,7 +832,7 @@
 You can notice a pair of things here: first of all, the use of the \texttt{anchor=out} in the port, to tell \TikZ{} that we want the node moved so that the \texttt{out} anchor is the reference one. The second one is that we have repeated the absolute shift (the \texttt{++(-1, 0)}) twice. This is a bad practice; it is much better to have the ``free'' parameters of a schematic just stated once, so that we can change them in just one point.
 
 You can of course use a macro, like \verb|\newcommand{\andshift}{(-1,0)}| but it is much more elegant to do something like this:
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,0) node[sr-ff](FF){} (FF.bup)
     node[above]{SR-FF};
@@ -912,7 +847,7 @@
 
 Now we can add the not port. Since version~\texttt{1.1.3} you can use a path-style not port, so you can just say: this:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[scale=0.8, transform shape]
 \draw (0,0) node[sr-ff](FF){} (FF.bup)
     node[above]{SR-FF} (FF.pin 1) -- ++(-1,0)
@@ -1138,7 +1073,7 @@
 In the last (green) example, you can see a workaround using local path and the key \texttt{current point is local} that will work for older (and do not create problem in newer) versions.
 
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily, pos=t]
+\begin{LTXexample}[varwidth=true, pos=t]
 Plotted using Ti\emph{k}Z version \pgfversion{} and CircuiTi\emph{k}Z version \pgfcircversion{}.
 
 \begin{tikzpicture}
@@ -1196,7 +1131,7 @@
         to[short, o-*] (1,0)
         to[R=20<\ohm>, *-*] (1,2)
         to[R=10<\ohm>, v=$v_x$] (3,2) -- (4,2)
-        to[cI=$\frac{\siemens}{5} v_x$, *-*] (4,0) -- (3,0)
+        to[cI=$\frac{\si{\siemens}}{5} v_x$, *-*] (4,0) -- (3,0)
         to[R=5<\ohm>, *-*] (3,2)
   (3,0) -- (1,0)
   (1,2) to[short, -o] (0,2) node[anchor=east]{A}
@@ -1299,7 +1234,7 @@
 
 Mirroring and flipping of node components is obtained by using the \TikZ\ keys \texttt{xscale} and \texttt{yscale}. Notice that this parameters affect also text labels, so they need to be un-scaled by hand.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[scale=0.7, transform shape]
     \draw (0,3) node[op amp]{OA1};
     \draw (3,3) node[op amp, xscale=-1]{OA2};
@@ -1315,7 +1250,7 @@
 \texttt{xscale=-1, yscale=-1}).
 In other formats they are undefined; contributions to fill the gap are welcome.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[scale=0.7, transform shape]
     \draw (0,3) node[op amp]{OA1};
     \draw (3,3) node[op amp, xscale=-1]{\ctikzflipx{OA2}};
@@ -1525,11 +1460,11 @@
 
 Basically, to write the style \texttt{example}, you edit a file named \texttt{ctikzstyle-romano.tex} with will define and enact Ti\emph{k}Z style with name \texttt{example circuit style}; basically it has to be something along this:
 
-\lstinputlisting[frame=single, framesep=10pt, basicstyle=\small\ttfamily]{ctikzstyle-example.tex}
+\lstinputlisting[frame=single, framesep=10pt]{ctikzstyle-example.tex}
 
 This kind of style will \emph{add} to the existing style.  If you want to have a style that \emph{substitute} the current style, you should do like this:
 
-\begin{lstlisting}[frame=single, framesep=10pt, basicstyle=\small\ttfamily]
+\begin{lstlisting}[frame=single, framesep=10pt]
 \ctikzloadstyle{legacy}% start from a know state
 \tikzset{romano circuit style/.style={%
 legacy circuit style, % load the legacy style
@@ -1616,7 +1551,7 @@
 
 If you want that the arrows behave like the legacy symbols (which are shapes), \emph{only in the arrow definitions}, you can use the special length parameter \verb|\scaledwidth|\footnote{Thanks to @Schrödinger's cat on \href{https://tex.stackexchange.com/a/506249/38080}{\TeX{} stackexchange site}} in the arrow definition, which correspond to the width of the legacy \texttt{vcc} or \texttt{vee}. Compare the effects on the following circuit.
 
-\begin{LTXexample}[pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[pos=t]
 \ctikzset{%
     monopoles/vcc/arrow={Triangle[width=0.8*\scaledwidth, length=\scaledwidth]},
     monopoles/vee/arrow={Triangle[width=6pt, length=8pt]},
@@ -1686,7 +1621,7 @@
 Since version \texttt{0.9.5}, you can control the position of the wiper in potentiometers using the key \texttt{wiper pos}, which is a number in the range $[0,1]$. The default middle position is \texttt{wiper pos=0.5}.
 
 
-\begin{LTXexample}[varwidth, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth]
 \begin{circuitikz}[american]
     \ctikzset{resistors/width=1.5, resistors/zigs=9}
     \draw (0,0) to[pR, name=A] ++(0,-4);
@@ -1734,12 +1669,26 @@
 \end{circuitikz}
 \end{LTXexample}
 
+\paragraph{Thickness.}\label{sec:resistor-thickness} The line thickness of the resistive components is governed by the class thickness; you can change it assigning a value to the key \texttt{resistors/thickness} (default \texttt{none}, that means \texttt{bipoles/thickness} is used, and that defaults to \texttt{2.0}; the value is relative to the base line thickness).
+
+We can call \emph{modifiers} the elements that are added to the basic shape to express some characteristics of the component; for example the arrows for the variable resistors or the bar for the sensors. Normally the thickness of this elements is the same as the one chosen for the component\footnote{Due to a bug in versions before 1.3.4, that didn't happen for thermistors}. You can change their thickness with the class key \texttt{modifier thickness} which is relative to the main component thickness.
+
+\begin{LTXexample}[varwidth]
+\begin{circuitikz}[american]
+    \draw (0,2) to[vR] ++(2,0) to[sR] ++(2,0);
+    \ctikzset{resistors/thickness=4}
+    \draw (0,1) to[vR] ++(2,0) to[sR] ++(2,0);
+    \ctikzset{resistors/modifier thickness=0.5}
+    \draw (0,0) to[vR] ++(2,0) to[sR] ++(2,0);
+\end{circuitikz}
+\end{LTXexample}
+
 \paragraph{Arrows.\label{sec:tunablearrows}} You can change the arrow tips used in tunable resistors (\texttt{vR}, \texttt{tgeneric}) with the key \texttt{tunable end arrow}  and in potentiometers with the key \texttt{wiper end arrow} (by default the key is the word ``\texttt{default}'' to obtain the default arrow, which is \texttt{latexslim} for both).
 Also you can change the start arrow with the corresponding \texttt{tunable start arrow} or \texttt{wiper start arrow} (the default value ``\texttt{default}'' is equivalent to \texttt{\{\}} for both, which means no arrow).
 
 You can change that globally or locally, as ever. The tip specification is the one you can find in the \TikZ{} manual (``Arrow Tip Specifications'').
 
-\begin{LTXexample}[varwidth, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth]
     \begin{circuitikz}[american]
         % globally all the potentiometrs
         \ctikzset{wiper end arrow={Kite[open]}}
@@ -1763,8 +1712,23 @@
     \circuitdescbip[vcapacitor]{variable capacitor}{Variable capacitor}{vC}
     \circuitdescbip[capacitivesens]{capacitive sensor}{Capacitive sensor}{sC}(label/0/0.3)
     \circuitdescbip*{piezoelectric}{Piezoelectric Element}{PZ}
+    \circuitdescbip*[ferrocap]{feC}{Ferroelectric capacitor\footnotemark}{ferrocap}(kink left/180/0.2, kink right/0/0.2, curve left/160/0.3, curve right/-20/0.2, center/45/0.3)
+    \footnotetext{suggested by \href{https://github.com/circuitikz/circuitikz/issues/515}{Mayeul Cantan}}
 \end{groupdesc}
 
+Ferroelectric capacitors are fillable because that could be used to show the state of the hysteresis of the component.
+
+\begin{LTXexample}[varwidth]
+\begin{tikzpicture}[]
+    \ctikzset{capacitors/.cd,
+    thickness=4, modifier thickness=0.5}
+    \draw (0,0) to[feC, l=$C_1$, v=v1] ++(3,0)
+        to[feC, l=$C_2$, fill=green, name=C2] ++(0,-2);
+    \node [font=\tiny, above right, inner sep=1pt]
+        at(C2.kink left) {$S_1$};
+\end{tikzpicture}
+\end{LTXexample}
+
 There is also the (deprecated\footnote{Thanks to \href{https://tex.stackexchange.com/questions/509594/polar-capacitor-orientation-in-circuitikz-seems-wrong}{Anshul Singhv for noticing}.} --- its polarity is not coherent with the rest of the components) \texttt{polar capacitor}:
 
 \begin{groupdesc}
@@ -1777,7 +1741,7 @@
 
 \subsubsection{Capacitors customizations}
 
-You can change the scale of the capacitors by setting the key \texttt{capacitors/scale}  to something different from the default \texttt{1.0}.
+You can change the scale of the capacitors by setting the key \texttt{capacitors/scale}  to something different from the default \texttt{1.0}. For thickness, you can use the same keys (applied to the \texttt{capacitors} class) as for resistors in~\ref{sec:resistor-thickness}.
 
 Variable capacitors arrow tips follow the settings  of resistors, see section~\ref{sec:tunablearrows}.
 
@@ -1816,7 +1780,7 @@
 
 \subsubsection{Inductors customizations}\label{sec:tweak-l}
 
-You can change the scale of the inductors by setting the key \texttt{inductors/scale}  to something different from the default \texttt{1.0}.
+You can change the scale of the inductors by setting the key \texttt{inductors/scale}  to something different from the default \texttt{1.0}. For thickness, you can use the same keys (applied to the \texttt{inductors} class) as for resistors in~\ref{sec:resistor-thickness}.
 
 Variable inductors arrow tips follow the settings  of resistors, see section~\ref{sec:tunablearrows}.
 
@@ -1858,7 +1822,7 @@
 \paragraph{Taps.}
 Inductors have an additional anchor, called \texttt{midtap}, that connects to the center of the coil ``wire''. Notice that this anchor could be on one side or the other of the component, depending on the number of loops of the element; if you need a fixed position, you can use the geographical anchors.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[
     loops/.style={circuitikz/inductors/coils=#1}]
 \ctikzset{cute inductors}
@@ -1875,7 +1839,7 @@
 \paragraph{Core anchors.}\label{sec:inductors-core-anchors}
 Inductors have additional anchors to add core lines (for historical reasons, there is a \texttt{cute choke} component also, but to use inductors in the chosen style you better use these anchors). The anchors are called \texttt{core west} and \texttt{core east} and they are positioned at a distance that you can tweak with the \texttt{\textbackslash ctikzset} key \texttt{bipoles/inductors/core distance} (default \texttt{2pt}).
 
-\begin{LTXexample}[varwidth, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth]
     \begin{circuitikz}[]
         \ctikzset{american}
         \draw (0,3) to[L=$L$, name=myL] ++(2,0);
@@ -2166,7 +2130,7 @@
 
 You can do the same with the \texttt{american controlled voltage sources}, substituting \texttt{cvsourceam} to \texttt{vsourceam} (notice the initial ``\texttt{c}'').
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american]
    \ctikzset{bipoles/vsourceam/inner plus={\tiny $+$}}
    \ctikzset{bipoles/vsourceam/inner minus={\tiny $-$}}
@@ -2221,7 +2185,7 @@
 However, if you prefer that the \texttt{oscope}, \texttt{rmeter}, \texttt{smeter}  and \texttt{rmeterwa} instruments rotate the text or the diagram,
 you can use the key or style \texttt{rotated instruments} (the default style is \texttt{straight instruments}).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
     \begin{circuitikz}[scale=0.8, transform shape]
     \ctikzset{rotated instruments} % new default
     \draw (0,0) to[oscope] ++(0:3);
@@ -2723,7 +2687,7 @@
 
 The couplers have:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz} \draw (0,1.5) %bounding box
   (0,0) node[coupler] (c) {\SI{10}{dB}}
   (c.left down) to[short,-o] ++(-0.5,0)
@@ -2860,7 +2824,7 @@
     \circuitdesc{npn,photo}{photo npn}{}( nobase/0/0.4 )
     \circuitdesc{pnp,photo}{photo pnp}{}
     \circuitdesc{nigbt}{nigbt}{Q}
-    \circuitdesc{pigbt}{pigbt}{}
+    \circuitdesc{pigbt}{pigbt}{}(centergap/0/0.5)
     \circuitdesc{Lnigbt}{Lnigbt}{Q}
     \circuitdesc{Lpigbt}{Lpigbt}{}
     \circuitdesc{Lpigbt, bodydiode}{Lpigbt}{Q}(body C in/-60/0.2, body E in/60/0.2,body C out/0/0.3, body E out/-0/0.3)
@@ -2881,10 +2845,11 @@
 
 \begin{groupdesc}
     \circuitdesc{nmos}{nmos}{Q}( G/180/0.2,D/0/0.2,S/0/0.2 )
-    \circuitdesc{pmos}{pmos}{}
+    \circuitdesc{pmos}{pmos}{}(centergap/0/0.5)
     \circuitdesc{nmosd}{nmos depletion}{Q}( G/180/0.2,D/0/0.2,S/0/0.2 )
     \circuitdesc{pmosd}{pmos depletion}{}
     \circuitdesc{hemt}{hemt}{}
+    \circuitdesc{hemt, nobase}{hemt without base terminal}{Q}( G/180/0.2,D/0/0.2,S/0/0.2, nogate/-120/0.2)
 \end{groupdesc}
 
 \textsc{nfet}s and \textsc{pfet}s have been incorporated based on code provided by Clemens Helfmeier and Theodor Borsche. Use the package options \texttt{fetsolderdot}/\texttt{nofetsolderdot} to enable/disable solderdot at some fet-transistors. Additionally, the solderdot option can be enabled/disabled for single transistors with the option \texttt{solderdot} and \texttt{nosolderdot}, respectively.
@@ -2893,12 +2858,12 @@
     \circuitdesc{nfet}{nfet}{Q}
     \circuitdesc{nfetd}{nfet depletion}{Q}
     \circuitdesc{nigfete}{nigfete}{Q}
-    \circuitdesc{nigfete,solderdot}{nigfete}{}
+    \circuitdesc{nigfete,solderdot}{nigfete}{}(centergap/0/0.5)
     \circuitdesc{nigfetebulk}{nigfetebulk}{}
-    \circuitdesc{nigfetd}{nigfetd}{}
+    \circuitdesc{nigfetd}{nigfetd}{}(centergap/0/0.5)
     \circuitdesc{pfet}{pfet}{Q}
     \circuitdesc{pfetd}{pfet depletion}{Q}
-    \circuitdesc{pigfete}{pigfete}{}
+    \circuitdesc{pigfete}{pigfete}{}(centergap/0/0.5)
     \circuitdesc{pigfetebulk}{pigfetebulk}{}
     \circuitdesc{pigfetd}{pigfetd}{}
 \end{groupdesc}
@@ -2927,7 +2892,7 @@
 
 Notice the use of the utility functions \verb|\ctikzflip{|\texttt{\textsl{x,y,xy}}\verb|}| as explained in section~\ref{sec:mirroring-and-flipping}.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[scale=0.8, transform shape]
     \draw (0,0) node [npn]{T1}
     ++(1.2,0) node [npn, xscale=-1]{\ctikzflipx{T1}}
@@ -2976,7 +2941,7 @@
 
 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.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,2) node[npn]{} (2,2) node[npn, tr circle](Q){};
     % collector connected to housing
@@ -3004,7 +2969,7 @@
 
 You can use the \texttt{body ...} anchors to add more or different things to the transistors in addition (or instead) of the flyback diode.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \def\snubb#1#2{% add a snubber to a transistor
     \draw (#1.body C #2) to[short, *-, nodes width=0.02]
     ++(0.3,0) coordinate(tmp) to [R, resistors/scale=0.3]
@@ -3040,10 +3005,27 @@
     \end{circuitikz}
 \end{LTXexample}
 
+\paragraph{Ferroelectric transistors} You can add the ferroelectric modifier\footnotetext{suggested by \href{https://github.com/circuitikz/circuitikz/issues/515}{Mayeul Cantan}} to the \texttt{*mos} and \texttt{*fet} transistor  types. Similarly to the Schottky bipolar transistors, you activate it by adding the \texttt{ferroel gate} key (there is also a \texttt{no ferroel base} key that can be used if you use the other one as a default).
+
+The mark will follow the \texttt{transistors} class thickness, but you can adjust it independently using the class parameter \texttt{modifier thickness} as in passive components --- this value is relative to the class' thickness.
+
+\begin{LTXexample}[varwidth=true]
+    \begin{circuitikz}
+        \draw (0,2) node[nmos]{}
+            ++(2,0) node[nmos, ferroel gate]{};
+        \ctikzset{ferroel gate} % by default from now on
+        \ctikzset{transistors/.cd, % class properties
+            thickness=1, modifier thickness=3}
+        \draw (0,0) node[pfet]{}
+            ++(2,0) node[pfet, no ferroel gate]{};
+    \end{circuitikz}
+\end{LTXexample}
+
+
 \paragraph{IGBT outer base.}
 Normally, in bipolar IGBTs the outer base is the same size (height) of the inner one, and of the same thickness (which will depend on the class thickness value). You can change this by setting (via \verb|\ctikzset`|) the keys \texttt{tripoles/igbt/outer base height} (default \texttt{0.4}, the same as \texttt{base height}), and \texttt{tripoles/igbt/outer base thickness} (default \texttt{1.0}), which will be relative to the class thickness.
 
-\begin{LTXexample}[varwidth=true, pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true, pos=t]
 \begin{circuitikz}
     \draw (0,0)
     -- ++(1,0) node[nigbt, anchor=B](B){} (B.nobase)
@@ -3148,6 +3130,18 @@
 \end{circuitikz}
 \end{LTXexample}
 
+\paragraph{Gate/Base gap coloring.} You can color the space representing the gate capacitor or the insulated base by using the key \texttt{tr gap fill} (default \texttt{none}, which means nothing is drawn there). This fill is done \emph{after} any circle fill but before any additional modifier (see the example below). You can use it locally or set it globally (normal scoping works, as ever).
+
+\begin{LTXexample}[varwidth=true]
+    \begin{tikzpicture}
+        \node[nigfete, tr gap fill=green] at(0,0){};
+        \node[nigfete, tr gap fill=red, tr circle,
+            fill=cyan!30] at(1.5,0){};
+        \node[nmos, tr gap fill=cyan, ferroel gate](A)
+            at(3,0){};
+    \end{tikzpicture}
+\end{LTXexample}
+
 \subsubsection{Multiple terminal transistors customization}
 
 You can create completely ``bare'' transistors (without the connection leads to the \texttt{B}, \texttt{C} y \texttt{E} terminals), by changing the parameter \texttt{tripoles/bjt/pins width} (default \texttt{0.3}; it is expressed as a fraction of the basic (scaled) length) or using the style \texttt{bjt pins width}; and you can change the distance between multiple collectors/emitters setting with \verb|\ctikzset{}|  the parameter \texttt{tripoles/bjt/multi height}  (default \texttt{0.5}) or the style \texttt{bjt multi height}.
@@ -3167,7 +3161,7 @@
 
 The position of the circle on collector and emitter by default is the one shown above; the position along the base can be adjusted in most transistors using the \verb|\ctikzset| parameter \texttt{transistor circle/default base in} (by default \texttt{\ctikzvalof{transistor circle/default base in}}); \texttt{njfet} and \texttt{pjfet} use \texttt{transistor circle/njfet base in} (default \texttt{\ctikzvalof{transistor circle/njfet base in}}; the same for \texttt{pjfet}) and, finally, \texttt{isfet} uses \texttt{transistor circle/isfet base in} (default \texttt{\ctikzvalof{transistor circle/isfet base in}}). You can change the resulting size of the circle by setting to something different to \texttt{1.0} the parameter \texttt{transistor circle/scale circle radius} --- that will move the anchors too; for example:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[scale=1.5, transform shape]
     \draw (0,0) node[npn, tr circle](Q1){};
     \node [circ] at (Q1.circle C){};
@@ -3192,7 +3186,7 @@
     \footnotetext{Follows the syntax of the pattern sequence \texttt{\textbackslash pgfsetdash} --- see \TikZ{} manual for details; phase is always zero. Basically you pass pairs of dash-length -- blank-length dimensions, see the examples.}
 \end{center}
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,2) node[npn, tr circle](Q1){};
     \ctikzset{transistor circle/relative thickness=2}
@@ -3207,7 +3201,7 @@
 
 Finally, using the class style you can do quite interesting things.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \ctikzset{transistors/thickness=4, transistors/fill=cyan!30,
         transistor circle/relative thickness=0.25,}
@@ -3314,7 +3308,7 @@
 
 A complete example of multiple terminal transistor application is the following PNP double current mirror circuit.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \ctikzset{transistors/arrow pos=end}
     \draw (0,0) node[bjtpnp, xscale=-1](Q1){%
@@ -3339,7 +3333,6 @@
 Here is one composite example (please notice that the \texttt{xscale=-1} style would also reflect the label of the transistors, so here a new node is added and its text is used, instead of that of \texttt{pnp1}):
 
 \begin{LTXexample}[varwidth=true]
-  % \begin{circuitikz} [legacy transistors label]\draw
   \begin{circuitikz} []\draw
   (0,0) node[pnp] (pnp2) {Q2}
   (pnp2.B) node[pnp, xscale=-1, anchor=B] (pnp1) {}
@@ -3352,9 +3345,9 @@
 ;\end{circuitikz}
 \end{LTXexample}
 
-Notice that the text labels of transistors are somewhat buggy. It is better to se explicit anchors to set transistor's names.
+Notice that the text labels of transistors are outside the bounding box of the component (that is, the set of geographical anchors). If it is a problem, use a separate text node to set the transistor's label.
+Of course, transistors like other components can be reflected vertically:
 
-Similarly, transistors like other components can be reflected vertically:
 \begin{LTXexample}[varwidth=true]
 \begin{circuitikz} \draw
   (0,0) node[pigfete, yscale=-1] (pigfete)  {}
@@ -3365,6 +3358,19 @@
 ;\end{circuitikz}
 \end{LTXexample}
 
+Finally, double-gated components (MOSes, FETs, IGBTs) have an extra anchor \texttt{centergap} positioned in the middle of the ``gate capacitor'' or base.
+\begin{LTXexample}[varwidth=true]
+    \begin{circuitikz}
+        \node [nmos](A) at (0,3) {};
+        \node [nfet](B) at (0,1.5) {};
+        \node [pigbt](C) at (0,0) {};
+        \foreach \myn in {A, B, C}
+            \draw[color=red] (\myn.centergap)
+                node[ocirc]{} -- ++(1,0)
+                node[right, font=\tiny]{centergap};
+    \end{circuitikz}
+\end{LTXexample}
+
 \subsubsection{Transistor paths}\label{sec:transasbip}
 
 For syntactical convenience standard transistors (not multi-terminal ones) can be placed using the normal path notation used for bipoles. The transitor type can be specified by  simply adding a ``T'' (for transistor) in front of the node name of the transistor. It will be placed with the base/gate orthogonal to the direction of the path:
@@ -3559,7 +3565,7 @@
 \end{center}
 
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american] \ctikzset{tubes/thickness=4}
     \draw (0,0) to[R] (2,0) node[dynode]{} to[R,-*] (4,0);
     \ctikzset{monopoles/dynode/.cd,
@@ -3570,7 +3576,7 @@
 
 You can use styles and the parameters to create different types of electrodes:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american] \ctikzset{tubes/thickness=4}
     \tikzset{anode/.style={dynode,
             circuitikz/monopoles/dynode/arc angle=90},
@@ -3802,7 +3808,7 @@
 \end{circuitikz}
 \end{quote}
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
 \draw (0,0) node[ground](GND){} to [sV] ++(0,2) -- ++(1,0)
     node[transformer, circuitikz/inductors/coils=6,
@@ -3875,7 +3881,7 @@
 changing the value of the two styles \texttt{transformer L1} and \texttt{transformer L2};
 the default for both are \texttt{\{\}}, that means inherit the inductors style in force.
 
-\begin{LTXexample}[pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[pos=t]
 \begin{circuitikz}[american]
     \begin{scope}
         \ctikzset{transformer L1/.style={inductors/coils=1, inductors/width=0.2}}
@@ -3899,7 +3905,7 @@
 
 \textbf{Caveat:} the size of the transformer is independent from the styles for \texttt{L1} and \texttt{L2}, so they follow whatever the parameters for the inductances were before applying  them. In other words, the size of the transformer  could result too small if you are not careful.
 
-\begin{LTXexample}[varwidth, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth]
 \begin{circuitikz}
     \ctikzset{transformer L1/.style={inductors/width=1.8, inductors/coils=13}}
     % too small!
@@ -3912,7 +3918,7 @@
 
 You can obviously define a style for a ``non-standard'' transformer. For example, you can have a current transformer\footnote{Suggested by Alex Pacini on \href{https://github.com/circuitikz/circuitikz/issues/297}{GitHub}} defined like this:
 
-\begin{LTXexample}[varwidth, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth]
 \begin{circuitikz}[
     TA core/.style={transformer core,
         % at tikz level, you have to use circuitikz/ explicitly
@@ -4031,7 +4037,7 @@
 
 Amplifiers have also ``border'' anchors (just add \texttt{b}, without space, to the anchor, like \texttt{b+} or \texttt{bin up} and so on). These can be useful to add ``internal components''  or to modify the component. Also the \texttt{leftedge} anchors (on the border midway between input) is available.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,2.2) node[op amp](OA){IA1};
     \node[oosourceshape, rotate=90, scale=0.5]
@@ -4077,7 +4083,7 @@
 \end{lstlisting}
 to have plus and minus symbols that are bigger and blue.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     % change in this circuit only
     \tikzset{amp symbol font={\color{blue}\small\boldmath}}
@@ -4093,7 +4099,7 @@
 
 If you want different symbols for input and output you can use a null symbol and put them manually using the border anchors.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \ctikzset{amplifiers/plus={}}
     \ctikzset{amplifiers/minus={}}
@@ -4108,7 +4114,7 @@
 The amplifier label (given as the text  of the node) is normally more or less centered in the shape (in the case of the triangular shape, it is shifted a bit to the left to \emph{seem} visually centered); since version \texttt{1.1.0} you can move it at the left side plus a fixed offset setting the key \texttt{component text} or the style with the same name to \texttt{left}; by default the key is \texttt{center}.
 You can change the offset with the key \texttt{left text distance} (default \texttt{0.3em}; you must use a length here). These parameters are shared with IEEE-style logic ports.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,2.5) node[plain amp]{\texttt{741}};
     \draw (3,2.5)
@@ -4225,7 +4231,7 @@
 If you need a different kind of amplifier, you can use the \texttt{muxdemux}
 (see section~\ref{sec:muxdemuxes}) shape for defining one that suits your needs (you need version \texttt{1.0.0} for this to work).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \tikzset{tdax/.style={muxdemux,
         muxdemux def={NL=2, Lh=3, NR=1, Rh=0,
         NB=4, NT=5}, font=\scriptsize\ttfamily}}
@@ -4410,7 +4416,7 @@
 Notice that the defaults of the styles are the same as the default values of the parameters, but that if you change globally the defaults using the keys mentioned above, you only change the defaults for the ``bare'' component \texttt{rotaryswitch}, not for the styles.
 
 
-\begin{LTXexample}[varwidth=true, pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true, pos=t]
 \begin{circuitikz}
 \ctikzset{multipoles/rotary/arrow=both}
 \draw (0,0) -- ++(1,0) node[rotary switch <-=8 in 120 wiper 40, anchor=in](A){};
@@ -4469,7 +4475,7 @@
 
 One possible application for the angled and the ``on square'' anchors is that you can use them to move radially from the output poles, for example for adding numbers:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
 \draw (0,0) node[rotary switch=13 in 120 wiper 0](S){};
 \foreach \i in {1,...,13} % requires "calc"
@@ -4480,7 +4486,7 @@
 
 Finally, notice that the value of width for the rotary switches is taken from the one for the ``cute switches'' which in turn is taken from the width of traditional  \texttt{spdt} switch, so that they match (notice that the ``center'' anchor is better centered in the rotary switch, so you have to explicitly align them).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[color=blue, rotary switch=2 in 35 wiper 30,
         anchor=in](R){};
@@ -4523,7 +4529,7 @@
 
 You can change that globally or locally, as ever. The tip specification is the one you can find in the \TikZ{} manual (``Arrow Tip Specifications'').
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,2) to[cspst] ++(2,0)
         node[cute spdt up arrow, anchor=in]{};
@@ -4537,7 +4543,7 @@
 
 \paragraph{Rotary switch arrows.} You can change the rotary switch arrow shape in the same way as you change the ones in regular switches. Notice however that if you set either \texttt{switch end arrow} or \texttt{switch start arrow} they will be followed only if you have set both arrows with \texttt{<->} or equivalent, otherwise just one will be used.
 
-\begin{LTXexample}[varwidth=true, pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true, pos=t]
 \begin{circuitikz}
 \ctikzset{multipoles/rotary/arrow=both}
 \draw (0,0) -- ++(1,0) node[rotary switch <-=8 in 120 wiper 40, anchor=in](A){};
@@ -4644,7 +4650,7 @@
 
 Those ports follows the current selected style, although you can change it on the fly (even if it has not a lot of sense); you can apply labels, annotations and (again, not a lot of sense) voltages to them. The assigned value is typeset as if it were the main text of the node.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american]
     \ctikzset{logic ports=ieee}
     \draw (0,0) to[inline not=I1, l=label, v=$\Delta V$] ++(2,0);
@@ -4865,7 +4871,7 @@
 
 This last circuit could be drawn also (and probably in a more natural manner) using the path-style components:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american]
     \draw (0,0) node[ground]{} to[C] ++(0,1.5)
     coordinate(c)
@@ -4886,7 +4892,7 @@
 
 IEEE standard logic gates have a basic difference with the legacy ones: the proportions of their shapes does not change when you change the size, so you can't have a ``tall'' port or a ``squatty'' ones. The two-inputs gates, by default, have their default size designed so that they match the chips component (see~\ref{sec:chips}).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[dipchip](C){IC} (C.pin 8)
         node[or port, anchor=in 1,
@@ -4896,7 +4902,7 @@
 
 If you need, say, a 4-inputs port, the port will look like this:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[dipchip](C){IC} (C.pin 8)
         node[or port, anchor=in 1, number inputs=4,
@@ -4907,7 +4913,7 @@
 \dots and in this case it is clear that it does not match. With standard ports, there are two possibilities.
 The first one is to scale the port; if you set the port height so that it has the same size (see ``IEEE logic gates customization'' below for details)  as the number of ports, they will match again.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[dipchip](C){IC} (C.pin 8)
         node[or port, anchor=in 1,
@@ -4919,7 +4925,7 @@
 
 But then the size of the port is quite ``unusual''. The solution is technical literature is to use what we can call a ``rack'' for the inputs; basically, only a certain number of pins are kept on the port, and the other are put on an extended input line.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[dipchip](C){IC} (C.pin 8)
         node[or port, anchor=in 1,
@@ -4936,7 +4942,7 @@
 \end{itemize}
 For example, look at the following example; given that we are asking an odd number of pins on the rack, some of the inputs are drawn on the port's border, resulting in a less-than-ideal diagram.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[dipchip](C){IC} (C.pin 8)
         node[or port, anchor=in 1,
@@ -4948,7 +4954,7 @@
 
 In this case, if you don't like the solution, the better approach is to let the gate grow a bit.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[dipchip](C){IC} (C.pin 8)
         node[or port, anchor=in 1,
@@ -4961,7 +4967,7 @@
 
 The good thing about the rack mechanism is that you can have quite big ports without problems.
 
-\begin{LTXexample}[varwidth=true, pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true, pos=t]
 \begin{circuitikz}[scale=0.75, transform shape]
     \draw node[nor port, number inputs=32, inner inputs=2,
                rotate=90](A){\rotatebox{-90}{IC1A}};
@@ -4970,7 +4976,7 @@
 
 You can use the additional elements (the \texttt{notcirc} and the \texttt{schmitt symbol} to obtain circuits like the following ones (well, a bit of a mix of conventions, but...):
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) node[and port](A){A} (A.out)
     node[buffer port, anchor=in,
@@ -4988,7 +4994,7 @@
 
 \paragraph{Stacking and aligning IEEE standard gates.} The standard gates are designed so that they stacks up nicely when positioned using the external leads as anchors. Notice that the ports \textbf{do} have different sizes, but the leads lengths are designed to counter the differences.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw
     (0,0) node[and port, anchor=in 1]{A1}
@@ -5009,7 +5015,7 @@
 
 The single input ports (\texttt{not port}, \texttt{buffer port} and their Schmitt equivalent) are smaller that the six standard ports, so they are not kept aligned by default; the just have the same distance at the input side. For the not ports, the \texttt{left} position of the text results often in a better look (the centered text in the triangle seems to be much more at the right).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \ctikzset{component text=left}
     \draw (0,0) node[nand port, anchor=in 1]{A1}
@@ -5045,7 +5051,7 @@
 
 For example, using a \texttt{not radius} of \texttt{0.1} will give a ``not ball'' of the same size of a connecting pole, as it is in the legacy ports.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,2) node[xnor port](P){}
         (P.out) to[short, -o] ++(1,0);
@@ -5058,7 +5064,7 @@
 
 In addition to the specific parameters, you can also apply to these ports the boolean style \texttt{no input leads}  as in legacy ones (this simply \emph{does not draw} the input leads, but the anchors stays where they should):
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
 \draw (0,0) node[nand port,
       number inputs=5, no input leads,](B){Pn};
@@ -5069,7 +5075,7 @@
 
 Changing the leads length must be done with a bit of care, because if the length is shorter than the port left or right extrusions strange things can happen (yes, a 4-inputs xnor gates is not so well defined\dots but it's a nice example to show):
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \ctikzset{ieeestd ports/pin length=0.2}
     \draw (0,0) node[xnor port,
@@ -5182,7 +5188,7 @@
 
 \paragraph{European logic port customization} Normally the European-style logic port with inverted output are marked with a small triangle; if you want you can change it with the key \texttt{tripoles/european not symbol}; its default is \texttt{triangle} but you can set it to \texttt{circle} like in the following example. As you can see, the circle size is the same as the circuit poles; if you prefer the size used in the IEEE standard ports, you can use set it to \texttt{ieee circle}.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[european]
     \draw (0,3) node[nand port](A){}
         (A.out) to[short, *-o] ++(0.5,0);
@@ -5198,7 +5204,7 @@
 In some standard, the \texttt{xnor} port is different --- without the negation at the end and with just an $=$ sign.\footnote{Suggested by user \texttt{Schlepptop} on GitHub.}
 You can switch to this if you like, with the key \texttt{european xnor style} that can be \texttt{default} or \texttt{direct}.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[european]
     \draw (0,0) node[xnor port]{};
     \ctikzset{european xnor style=direct}
@@ -5401,7 +5407,7 @@
 
 You can also change the size of the wedge, with the key \texttt{multipoles/flipflop/clock wedge size} (default value \texttt{0.2}).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
     \begin{circuitikz}[]
     \draw (0,0) node[flipflop JK]{JK};
     \ctikzset{multipoles/flipflop/clock wedge size=0.1}
@@ -5413,7 +5419,7 @@
 
 Flip-flops ``not circles'' follows the current logic port setting (either if you choose \texttt{ieee ports}, or if you are using \texttt{european ports} with \texttt{european not symbol} set to \texttt{cirle} or \texttt{ieee circle}.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
 \ctikzset{logic ports=european,
     tripoles/european not symbol=ieee circle}
@@ -5516,7 +5522,7 @@
 \end{description}
 All the distances are multiple of \texttt{multipoles/muxdemux/base len} (default \texttt{0.4}, to be set with \verb|\ctikzset|), which is relative to the basic length. That value has been chosen so that, if you have a numbers of pins which is equal to the effective distance where they are spread (which is \texttt{Lh} without inset, $\texttt{Lh}- (\texttt{inset Lh})$ with an inset), then the distance is the same as the default pin distance in chips, as shown in the next circuit. In the same drawing you can see the effect of \texttt{square pins} parameters (without it, the rightmost bottom lead of the \texttt{mux 4by2} shape will not connect with the below one).
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \tikzset{mux 4by2/.style={muxdemux,
         muxdemux def={Lh=4, NL=4, Rh=3,
@@ -5831,7 +5837,7 @@
 
 A couple of examples are shown below.
 
-\begin{LTXexample}[varwidth=true, pos=b, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true, pos=b]
 \begin{circuitikz}[scale=0.5]
 \ctikzset{seven seg/width=0.2, seven seg/thickness=2pt}
 \foreach \i in {0,...,15} \path (\i,0)
@@ -5925,9 +5931,9 @@
 
 \paragraph{Adjust label and annotation position.}\label{sec:adjust-label-position}
 Normally the package will guess a good position for the label or annotation; if you do not like it,
-you can add\footnote{Since version \texttt{1.3.3}} (or remove, with negative values) distance using the keys \texttt{label position} and \texttt{annotation distance}.
+you can add\footnote{Since version \texttt{1.3.3}} (or remove, with negative values) distance using the \verb|\ctikzset| keys \texttt{label distance} and \texttt{annotation distance}.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[sR, l=$R$, label distance=-4pt] (2,0)
     to [sR, l=$R$] (4,0);
@@ -5934,7 +5940,7 @@
 \end{circuitikz}
 \end{LTXexample}
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american]
     \ctikzset{bipoles/inductors/core distance=4pt}
     \draw (0,1) to[L=$L$, name=myL] ++(2,0);
@@ -6703,7 +6709,7 @@
 The available styles and commands are \texttt{bipole label style}, \texttt{bipole annotation style}, \texttt{bipole voltage style}, \texttt{bipole current style}, and \texttt{bipole flow style}. The following example shows a bit of everything.
 
 
-\begin{LTXexample}[pos=t, basicstyle=\small\ttfamily ]
+\begin{LTXexample}[pos=t ]
 \begin{circuitikz}[american]
     \ctikzset{bipole annotation style/.style={font=\tiny}}
     \ctikzset{bipole current style/.style={font=\small\sffamily}}
@@ -6721,7 +6727,7 @@
 Since 0.9.5, you can access all the labels nodes\footnote{The access to \texttt{label}s and \texttt{annotation}s was present before, but not documented.} using special node names. So, if you use \texttt{name} to give a name to the bipole node, you can access also the following nodes: \texttt{namelabel} (notice: no space nor any other symbol between \texttt{name} and \texttt{label}!), \texttt{nameannotation}, \texttt{namevoltage}, \texttt{namecurrent} and \texttt{nameflow}. Notice that the node names are available only if the bipole has an anchor or an annotation, of course.
 
 \begin{LTXexample}[varwidth=true,
-            pos=t, basicstyle=\small\ttfamily
+            pos=t
     ]
 \newcommand{\marknode}[2][45]{%
     \node[circle, draw, red, inner sep=1pt,
@@ -6745,7 +6751,7 @@
 Those values are available only if the dipole declares a \texttt{l} or \texttt{a} keys; if you want them without any label you need to declare a blank one (like for example \texttt{l=\textasciitilde}).
 The following example gives an idea of the values of those macro for the three types of label positioning strategies.
 
-\begin{LTXexample}[varwidth=true, pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true, pos=t]
 \newcommand{\marklabann}[3][45]{% [angle] {node label} {type: label or annotation}
 \node[circle, draw, blue, inner sep=1pt,
 pin={[draw, blue, font=\tiny, align=left]#1:{#2 \\ dir: \ctikzgetdirection{#2#3} \\
@@ -6774,7 +6780,7 @@
 
 For example, you can do something like this:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \draw (0,1) to[R, v=$v$] ++(3,0);
     \draw (0,0) to[R, v, name=R, voltage/bump b=3] ++(3,0);
@@ -6786,7 +6792,7 @@
 
 Or, for example, to have a different voltage style; normally you would define a macro:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[voltage shift=0.5]
     \def\eurVPM#1#2{% node, label
         \draw [thin, -{Stealth[width=8pt]}, shorten >=5pt,
@@ -6928,7 +6934,7 @@
 
 For example, you could like the voltage label oriented with the bipole:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \def\myvv#1#2{%
     \draw [thin, blue, ->,]
@@ -6959,7 +6965,7 @@
 
 You can then define a kind of ``power flow'' style:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[]
     \newcommand\myff[3][blue]{% [opt: color] node label
         \draw [lray, #1, ] (#2-Ffrom) -- (#2-Fto)
@@ -7129,7 +7135,7 @@
 These bipole nodes are added after the path is drawn, as every node in Ti\emph{k}Z --- this is the reason why they are always filled (with the main color the normal nodes, with white the open ones), in order to ``hide'' the wire below. You can override the fill color if you want; but notice that if you draw things in two different paths, you will have ``strange'' results; notice that in the second line of resistors the second wire is starting from the center of the white \texttt{ocirc} of the previous path.
 
 \begin{LTXexample}[varwidth=true,
-        pos=t, basicstyle=\small\ttfamily
+        pos=t
     ]
 \begin{circuitikz}
     \draw (0,0) to[R, *-o] ++(2,0) to[R, -d] ++(2,0)
@@ -7248,7 +7254,7 @@
 
 Anyway, \emph{if you know what you are doing}, you can change it with the key \texttt{poles/open fill opacity} (with \verb|\ctikzset|) or the style \texttt{open poles opacity}. Notice that you will have artifacts if you don't use the border anchors of the poles to connect wires, and you need to do that by hand.
 
-\begin{LTXexample}[pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[pos=t]
 \begin{circuitikz}[scale=3, transform shape]
     \fill[cyan] (0,0) rectangle (4.1,-0.6);
     \tikzset{open poles opacity=0.5}
@@ -7443,7 +7449,7 @@
 
 This fill color will override any color defined by the style (see section~\ref{sec:styling-fillcolor}). If you want to override a style fill color with no-fill for a specific component, you need to override the style --- it's a bit unfortunate but it should be an exceptional thing anyway:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \ctikzset{logic ports/fill=cyan!30!white}
     \draw[red] (-0.5,3) -- (-0.5, -1);
@@ -7551,7 +7557,7 @@
 
 Nodes, in \TikZ, have normally a non-zero size even when they are empty; moreover, connections are supposed to join the border of nodes. Please study the following (pure \TikZ, not \Circuitikz)
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{tikzpicture}
     \path (1,1) node (A){}; % empty node at (1,1)
     \draw (1,0) -- (A) -- (2,1); % surprise!
@@ -7560,7 +7566,7 @@
 
 The gap is there because the node has a non-zero size (more in detail, its \texttt{inner sep} is by default different from zero. You can see it easily if you draw the node shape:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{tikzpicture}
     \path (1,1) node [draw=red](A){};
     \draw (1,0) -- (A) -- (2,1);
@@ -7569,7 +7575,7 @@
 
 The problem is that you was want to name a coordinate, you should use a \texttt{coordinate}, \textbf{not} a node!
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{tikzpicture}
     \path (1,1) coordinate (A); % give a name to (1,1)
     \draw (1,0) -- (A) -- (2,1);% now it's ok!
@@ -7578,7 +7584,7 @@
 
 Now, before version \texttt{1.2.1} (and since around \texttt{0.6}), \Circuitikz{} was detecting  when a connection was between nodes and sort-of added a \texttt{node.center} movement to the path. That in turn generated the need of hacks to draw the correct joining of lines, because that kind of movement broke the continuity of the path, like in this example:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
     \begin{tikzpicture}[line width=4pt]
     \path (1,1) node (A){};
     \draw (1,0) -- (A.center) (A) (A.center) -- (2,1);
@@ -7595,7 +7601,7 @@
 
 \faqQ How can I make part of the wires dashed (or colored)? This does not work:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[R] ++(2,0)
     to[short, dashed, red] ++(1,0)
@@ -7605,7 +7611,7 @@
 
 Nor this one, which is even stranger:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[R] ++(2,0)
     [dashed, red] -- ++(1,0)
@@ -7615,7 +7621,7 @@
 
 \faqA This is an effect on how \TikZ{} builds and draws path. As explained in the \TikZ{} manual,\footnote{in 3.1.5b, section~14, ``syntax for path specification''} most path options are globally valid for the whole path; color and dash/dot is one of this. You have two options in this case. The first one is to use two paths.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[R] ++(2,0) coordinate(a);
     \draw [dashed, red] (a) -- ++(1,0) coordinate(b);
@@ -7627,7 +7633,7 @@
 
 So, for example:
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[R] ++(2,0)
     edge[dashed, red] ++(1,0)
@@ -7638,7 +7644,7 @@
 
 The only problem with this approach is that the \texttt{edge}s are added \emph{after} the nodes, so it can create problems with nodes (look carefully!):
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[R,-o] ++(2,0)
     edge[dashed, red] ++(1,0)
@@ -7648,7 +7654,7 @@
 
 So it's better, in this case, to add the nodes manually after the path (there is no perfect solution!)
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
     \draw (0,0) to[R] ++(2,0) coordinate(a)
     edge[dashed, red] ++(1,0)
@@ -7660,7 +7666,7 @@
 
 A more complex example can be seen (look at the comments!) in the following circuit.
 
-\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{LTXexample}[varwidth=true]
 \begin{circuitikz}[american]
     \draw (0,0) to[R, v=$v_1$] ++(2,0)
         edge[dashed] ++(1,0)
@@ -7735,7 +7741,7 @@
 Version 1.3.3 fixes the direction of the arrows in tunable elements; before this version, they were more or less random, now the arrow goes from bottom left to top right. You have the option to go back to the old behavior with \texttt{\textbackslash ctikzset\{bipoles/fix tunable direction=false\}}. As a compensation for the fuss, now the arrows are configurable.
 
 
-\begin{LTXexample}[pos=t, basicstyle=\small\ttfamily]
+\begin{LTXexample}[pos=t]
 \begin{circuitikz}[european]
     \draw (1,0) node{new default} (4,0) node{old default} (7,0) node{new!};
     \foreach [count=\i] \comp in
@@ -8055,7 +8061,7 @@
         to[short, o-*] (1,0)
         to[R=20<\ohm>, *-*] (1,2)
         to[R=10<\ohm>, v=$v_x$] (3,2) -- (4,2)
-        to[cI=$\frac{\siemens}{5} v_x$, *-*] (4,0) -- (3,0)
+        to[cI=$\frac{\si{\siemens}}{5} v_x$, *-*] (4,0) -- (3,0)
         to[R=5<\ohm>, *-*] (3,2)
   (3,0) -- (1,0)
   (1,2) to[short, -o] (0,2) node[anchor=east]{A}
@@ -8102,8 +8108,8 @@
         to [R, l=1<\kilo\ohm>] (4,-1.5);
 
    \begin{scope}[xshift=6.5cm, yshift=.5cm]
-    \draw [->] (-2,0) -- (2.5,0) node[anchor=west] {$v_1/\volt$};
-    \draw [->] (0,-2) -- (0,2) node[anchor=west] {$i_1/\SI{}{\milli\ampere}$} ;
+       \draw [->] (-2,0) -- (2.5,0) node[anchor=west] {$v_1/\si{\volt}$};
+    \draw [->] (0,-2) -- (0,2) node[anchor=west] {$i_1/\si{\milli\ampere}$} ;
     \draw (-1,0) node[anchor=north] {-2} (1,0) node[anchor=south] {2}
           (0,1) node[anchor=west] {4} (0,-1) node[anchor=east] {-4}
           (2,0) node[anchor=north west] {4}

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/ctikzmanutils.sty
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuitikz/ctikzmanutils.sty	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/ctikzmanutils.sty	2021-04-20 20:09:13 UTC (rev 58923)
@@ -11,15 +11,32 @@
 % See the files gpl-3.0_license.txt and lppl-1-3c_license.txt for more details.
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ctikzmanutils}[2019/07/26 utilities for formatting circuitikz manual]
+\ProvidesPackage{ctikzmanutils}[2021/04/13 utilities for formatting circuitikz manual]
 \RequirePackage{ifthen}
 \RequirePackage{xparse}
 \RequirePackage{showexpl}
 \RequirePackage{ragged2e}
+\RequirePackage{textcomp}
+\RequirePackage{booktabs}
+\renewcommand{\arraystretch}{1.2}
+\RequirePackage{a4wide}	% smaller borders
+\RequirePackage{titling}
+\RequirePackage{titlesec}
+% clear page on section break
+\newcommand{\sectionbreak}{\clearpage}
+\setcounter{secnumdepth}{4}
+\setcounter{tocdepth}{4}
 % for some example we need them...
 \usetikzlibrary{calc,fit, decorations, decorations.pathmorphing}
 \RequirePackage{upgreek}
 %
+% Thanks to Ulrike Fischer https://tex.stackexchange.com/a/57160/38080
+% make the listing line number invisible to copy and paste
+% it seems that sometimes it works, sometimes no!
+%
+\RequirePackage{accsupp}
+\newcommand{\emptyaccsupp}[1]{\BeginAccSupp{ActualText={}}#1\EndAccSupp{}}%
+%
 % The following trick is used to silence showexpl a bit, so that the
 % logs are readable...
 %
@@ -27,12 +44,62 @@
 \let\SX at Info=\relax % silence showexpl a bit...
 \makeatother
 %
-\lstset{pos=l,width=-99pt, overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,
-    rframe=single,numbers=left,numberstyle=\tiny,numbersep=.3em, xleftmargin=1em,
-    columns=flexible, language=[LaTeX]TEX,breaklines=true,
-    basicstyle=\normalsize\ttfamily,tabsize=3}
+\RequirePackage{showexpl}
+\lstset{frameround=fttt}
+\lstloadlanguages{TeX}
+\lstset{pos=l,
+    width=-99pt,
+    overhang=0pt,
+    hsep=\columnsep,
+    vsep=\bigskipamount,
+    rframe=single,
+    xleftmargin=1em,
+    columns=flexible,
+    language=[LaTeX]TEX,
+    breaklines=true,
+    basicstyle=\small\ttfamily,
+    numbers=left,
+    numbersep=.3em,
+    numberstyle=\tiny\emptyaccsupp,
+    tabsize=3}
+% override explpreset to add the \emptyaccsupp macro
+\lstset{explpreset={numbers=left,numberstyle=\tiny\emptyaccsupp,numbersep=.3em,
+  xleftmargin=1em,columns=flexible,language=[LaTeX]TEX},pos=l,width=-99pt,
+  overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe=single}
 
+\newcommand{\email}[1]{\href{mailto:#1}{#1}}
+\long\def\comment#1{}
+
+\RequirePackage{framed}
+\RequirePackage{xtab}
+\RequirePackage{hyperref}
+\hypersetup{
+    pdftitle={CircuiTikZ \pgfcircversion\ - manual}, % title
+    pdfauthor={Massimo Redaelli, Stefan Lindner, Stefan Erhardt, Romano Giannetti}, % authors
+    pdfsubject={CircuiTikZ manual},   % subject of the document
+    pdfkeywords={},   % list of keywords
+    colorlinks=true,  % false: boxed links; true: colored links
+    linkcolor=blue,   % color of internal links
+    citecolor=blue,   % color of links to bibliography
+    filecolor=blue,   % color of file links
+    urlcolor=blue     % color of external links
+}
+
+% There are a lot of boxes in the document; let's try to give TeX
+% a bit of leverage... do not use parindent (which looks strange between examples)
+% and add stretch between paragraph, to avoid a lot of sections and subsections
+% starting at the end of the page.
+\parindent=0pt
+\parskip=4pt plus 6pt minus 2pt
 %
+% names
+%
+\def\TikZ{Ti\emph{k}Z}
+\def\Circuitikz{Circui\TikZ}
+\def\ConTeXt{Con\TeX t}
+%
+% Start of special macros for component descriptions
+%
 % draw the shape without affecting anything
 \newcommand{\drawphantomshape}[1] {%
     {\tikz [overlay, color=blue] \path (0,0) node[#1]{};}

Modified: trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -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.3}
-\def\pgfcircversiondate{2021/04/04}
+\def\pgfcircversion{1.3.4}
+\def\pgfcircversiondate{2021/04/20}
 \writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
 
 \usemodule[tikz]

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -208,6 +208,17 @@
 }
 % use \pgf at circ@setlinewidth{none}{\pgflinewidth} if there is no legacy case
 \ctikzset{none/thickness/.initial=1.0} % do not touch
+
+% set thickness relative to current thickness if exists class and key
+\def\pgf at circ@set at relative@thickness#1{%
+    \ifdefined\ctikzclass
+        \pgfkeysifdefined{\circuitikzbasekey/\ctikzclass/#1}
+        {% yes, it's defined
+            \pgfsetlinewidth{\ctikzvalof{\ctikzclass/#1}\pgflinewidth}%
+        }{}
+    \fi
+}
+
 %%>>>
 
 %% font changes compatible with plain/LaTeX/ConTeXt%<<<1
@@ -635,14 +646,17 @@
 \ctikzset{resistors/scale/.initial=1.0}
 \ctikzset{resistors/fill/.initial=none}
 \ctikzset{resistors/thickness/.initial=none}
+\ctikzset{resistors/modifier thickness/.initial=1}% relative to main thickness
 
 \ctikzset{capacitors/scale/.initial=1.0}
 \ctikzset{capacitors/fill/.initial=none}
 \ctikzset{capacitors/thickness/.initial=none}
+\ctikzset{capacitors/modifier thickness/.initial=1}
 
 \ctikzset{inductors/scale/.initial=1.0}
 \ctikzset{inductors/fill/.initial=none}
 \ctikzset{inductors/thickness/.initial=none}
+\ctikzset{inductors/modifier thickness/.initial=1}
 
 \ctikzset{diodes/scale/.initial=1.0}
 \ctikzset{diodes/fill/.initial=none}
@@ -689,6 +703,7 @@
 \ctikzset{transistors/scale/.initial=1.0}
 \ctikzset{transistors/fill/.initial=none}
 \ctikzset{transistors/thickness/.initial=none}
+\ctikzset{transistors/modifier thickness/.initial=1}% relative to main thickness
 
 \ctikzset{tubes/scale/.initial=1.0}
 \ctikzset{tubes/fill/.initial=none}

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircbipoles.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -22,6 +22,7 @@
 \pgf at circ@declare at family@arrows{tunable}
 \pgf at circ@declare at family@arrows{wiper}
 \pgf at circ@declare at family@arrows{switch}
+
 %>>>
 
 
@@ -282,6 +283,7 @@
     \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
     \pgf at circ@draworfill
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{tunable}{}{latexslim}
         \ifpgf at circ@fixtunable at dir
             \pgfpathmoveto{\pgfpoint{.5\pgf at circ@res at left}{\pgf at circ@res at down}}
@@ -370,6 +372,8 @@
     \endpgfscope
 }
 
+
+
 %% Thermistor
 \pgfcircdeclarebipolescaled{resistors}
 {% anchor for labelling the type of dependency
@@ -385,18 +389,14 @@
 {\ctikzvalof{bipoles/thermistor/height}}
 {\ctikzvalof{bipoles/thermistor/width}}
 {
-    \pgfscope
     \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\ctikzvalof{bipoles/thermistor/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\ctikzvalof{bipoles/thermistor/main}\pgf at circ@res at up}}
     \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
     \pgf at circ@draworfill
-    \endpgfscope
-
-    %\pgfscope
+    \pgf at circ@set at relative@thickness{modifier thickness}
     \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-\pgf at circ@res at down}}
     \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{1.2\pgf at circ@res at down}}
     \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{1.2\pgf at circ@res at down}}
     \pgfusepath{draw}
-    %\endpgfscope
 }
 
 %% Thermistor PTC
@@ -411,11 +411,12 @@
         \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\ctikzvalof{bipoles/thermistorptc/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\ctikzvalof{bipoles/thermistorptc/main}\pgf at circ@res at up}}
         \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
         \pgf at circ@draworfill
+        \pgf at circ@set at relative@thickness{modifier thickness}
+        \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{-\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at up}}
+        \pgfusepath{draw}
     \endpgfscope
-    \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
-    \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{-\pgf at circ@res at up}}
-    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at up}}
-    \pgfusepath{draw}
 
     \pgfsetlinewidth{\pgfstartlinewidth}
     \pgftext[top,x=.85\pgf at circ@res at left,y=.75\pgf at circ@res at down]{\pgf at circ@font at tiny$\vartheta$}
@@ -440,13 +441,13 @@
         \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\ctikzvalof{bipoles/thermistorntc/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\ctikzvalof{bipoles/thermistorntc/main}\pgf at circ@res at up}}
         \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
         \pgf at circ@draworfill
+        \pgf at circ@set at relative@thickness{modifier thickness}
+        \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{-\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at up}}
+        \pgfusepath{draw}
     \endpgfscope
 
-    \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{\pgf at circ@res at up}}
-    \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{-\pgf at circ@res at up}}
-    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{-\pgf at circ@res at up}}
-    \pgfusepath{draw}
-
     \pgfsetlinewidth{\pgfstartlinewidth}
     \pgftext[top,x=.85\pgf at circ@res at left,y=.75\pgf at circ@res at down]{\pgf at circ@font at tiny$\vartheta$}
     \pgfsetarrowsend{latexslim}
@@ -472,13 +473,13 @@
         \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\ctikzvalof{bipoles/varistor/main}\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{-\ctikzvalof{bipoles/varistor/main}\pgf at circ@res at up}}
         \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
         \pgf at circ@draworfill
+        \pgf at circ@set at relative@thickness{modifier thickness}
+        \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+        \pgfusepath{draw}
     \endpgfscope
 
-    \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-\pgf at circ@res at down}}
-    \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
-    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
-    \pgfusepath{draw}
-
     \pgftext[top,x=.65\pgf at circ@res at left,y=1.2\pgf at circ@res at down]{{\pgf at circ@font at tiny\textsf{U}}}
 }
 
@@ -579,6 +580,7 @@
     \pgf at circ@zigzag{.5}
 
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{tunable}{}{latexslim}
         \ifpgf at circ@fixtunable at dir
             \pgfpathmoveto{\pgfpoint{-.4\pgf at circ@res at other}{\pgf at circ@res at down}}
@@ -617,6 +619,7 @@
 
     \pgfscope
         %\pgfsetlinewidth{\pgfstartlinewidth}
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{wiper}{}{latexslim}
         \pgfextractx{\pgf at circ@res at other}{\wiper}
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at other}{\pgf at circ@res at up}}
@@ -642,6 +645,7 @@
     \pgf at circ@zigzag{.5}
 
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at other}{\pgf at circ@res at up}}
         \pgfpathlineto{\pgfpoint{-.4\pgf at circ@res at other}{\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{-.9\pgf at circ@res at other}{\pgf at circ@res at down}}
@@ -770,6 +774,7 @@
     \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
     \pgfusepath{draw}
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfpathmoveto{\pgfpoint{2.6\pgf at circ@res at right}{\pgf at circ@res at up}}
         \pgfpathlineto{\pgfpoint{-2.6\pgf at circ@res at right}{1.2\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{-4.4\pgf at circ@res at right}{1.2\pgf at circ@res at down}}
@@ -880,6 +885,7 @@
     \pgfusepath{draw}
 
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{tunable}{}{latexslim}
         \ifpgf at circ@fixtunable at dir
             \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
@@ -931,6 +937,47 @@
         \pgf at circ@draworfill
     \endpgfscope
 }
+
+% Ferroelectric capacitor, suggested by Mayeul Cantan
+% (see https://github.com/circuitikz/circuitikz/issues/515)
+\pgfcircdeclarebipolescaled{capacitors}
+{
+    \anchor{curve right}{\southwest\pgf at x=-1.8\pgf at x\pgf at y=\pgf at y}%
+    \anchor{curve left}{\southwest\pgf at x=1.8\pgf at x\pgf at y=-\pgf at y}%
+    \anchor{kink right}{\southwest\pgf at x=-1.8\pgf at x\pgf at y=0.5\pgf at y}%
+    \anchor{kink left}{\southwest\pgf at x=1.8\pgf at x\pgf at y=-0.5\pgf at y}%
+    \pgfcirc at border@extend at full{1.8}{1}{1.8}{1}
+}
+{\ctikzvalof{bipoles/capacitor/height}}
+{ferrocap}
+{\ctikzvalof{bipoles/capacitor/height}}
+{\ctikzvalof{bipoles/capacitor/width}}
+{
+    \pgfscope
+        \pgfpathrectanglecorners
+        {\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+        {\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+        \pgf at circ@maybefill
+    \endpgfscope
+
+    \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
+    \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}
+    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at down}}
+
+    \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up}}
+    \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
+    \pgfusepath{draw}
+    \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
+        \pgfsetcornersarced{\pgfpoint{0.2\pgf at circ@res at right}{0.2\pgf at circ@res at up}}
+        \pgfpathmoveto{\pgfpoint{-1.8\pgf at circ@res at right}{\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{-1.8\pgf at circ@res at right}{0.5\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{1.8\pgf at circ@res at right}{0.5\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{1.8\pgf at circ@res at right}{\pgf at circ@res at down}}
+        \pgfusepath{draw}
+    \endpgfscope
+}
+
 % %>>>
 
 %% Paths for capacitors%<<<
@@ -950,6 +997,8 @@
 \pgfcirc at style@to at style{piezoelectric}{PZ}
 \pgfcirc at activate@bipole{l}{capacitivesens}{capacitivesens}{capacitive sensor}
 \pgfcirc at style@to at style{capacitive sensor}{sC}
+\pgfcirc at activate@bipole at simple{l}{ferrocap}
+\pgfcirc at style@to at style{ferrocap}{feC}
 % %>>>
 
 %%%%%%%%%%%%%%%
@@ -1125,6 +1174,7 @@
     \pgfsetbeveljoin
     \pgfusepath{stroke}
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfpathmoveto{\pgfpoint{.8\pgf at circ@res at right}{2\pgf at circ@res at up}}
         \pgfpathlineto{\pgfpoint{-.8\pgf at circ@res at right}{2.6\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{-1.6\pgf at circ@res at right}{2.6\pgf at circ@res at down}}
@@ -1224,6 +1274,7 @@
     {(\ctikzvalof{bipoles/vcuteinductor/width}*\scaledRlen+\pgfhorizontaltransformationadjustment\pgflinewidth+(\ctikzvalof{bipoles/vcuteinductor/coils}-1)*2*\pgf at circ@res at other)/\ctikzvalof{bipoles/vcuteinductor/coils}/2}
 
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{tunable}{}{latexslim}
         \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at right}{\pgf at circ@res at up}}
@@ -1320,6 +1371,7 @@
     \pgfsetbeveljoin
     \pgfusepath{stroke}
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfpathmoveto{\pgfpoint{.8\pgf at circ@res at right}{2\pgf at circ@res at up}}
         \pgfpathlineto{\pgfpoint{-.8\pgf at circ@res at right}{2.6\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{-1.6\pgf at circ@res at right}{2.6\pgf at circ@res at down}}
@@ -1371,6 +1423,7 @@
     \pgfusepath{stroke}
 
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{tunable}{}{latexslim}
         \pgfpathmoveto{\pgfpoint{.4\pgf at circ@res at left}{\pgf at circ@res at down}}
         \pgfpathlineto{\pgfpoint{-.4\pgf at circ@res at left}{\pgf at circ@res at up}}
@@ -1412,12 +1465,13 @@
     \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up}}{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at down}}
     \pgf at circ@setlinewidth{bipoles}{\pgfstartlinewidth}
     \pgfusepath{draw,fill}
-    %\pgfscope
-    \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-2\pgf at circ@res at down}}
-    \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{2\pgf at circ@res at down}}
-    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{2\pgf at circ@res at down}}
-    \pgfusepath{draw}
-    %\endpgfscope
+    \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
+        \pgfpathmoveto{\pgfpoint{-\pgf at circ@res at left}{-2\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{.4\pgf at circ@res at left}{2\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{2\pgf at circ@res at down}}
+        \pgfusepath{draw}
+    \endpgfscope
 }
 
 %% Generic full tunable
@@ -1445,6 +1499,7 @@
     \pgfusepath{draw,fill}
 
     \pgfscope
+        \pgf at circ@set at relative@thickness{modifier thickness}
         \pgfcirc at set@arrows{tunable}{}{latexslim}
         \ifpgf at circ@fixtunable at dir
             \pgfpathmoveto{\pgfpoint{.5\pgf at circ@res at left}{\pgf at circ@res at down}}

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirclabel.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -32,8 +32,6 @@
 
 \ctikzset{label distance/.initial={0pt}}
 \ctikzset{annotation distance/.initial={0pt}}
-\tikzset{label distance/.code={\ctikzset{label distance={#1}}}}
-\tikzset{annotation distance/.code={\ctikzset{annotation distance={#1}}}}
 
 %% Options
 \ctikzset{label/.style = { l={#1} } }

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex	2021-04-20 20:09:13 UTC (rev 58923)
@@ -2881,6 +2881,15 @@
 \ctikzset{no schottky base/.add code={}{\pgf at circuit@bpt at schottkyfalse}}
 \ctikzset{tripoles/schottky base size/.initial=0.05}
 
+% Option to add ferroelectric symbol
+\newif\ifpgf at circuit@tr at ferroel
+\pgf at circuit@tr at ferroelfalse
+\pgfkeys{/tikz/ferroel gate/.add code={}{\pgf at circuit@tr at ferroeltrue}}
+\ctikzset{ferroel gate/.add code={}{\pgf at circuit@tr at ferroeltrue}}
+\pgfkeys{/tikz/no ferroel gate/.add code={}{\pgf at circuit@tr at ferroelfalse}}
+\ctikzset{no ferroel gate/.add code={}{\pgf at circuit@tr at ferroelfalse}}
+
+
 % Option draw bpt without base connection
 \newif\ifpgf at circuit@bpt at drawbase
 \pgf at circuit@bpt at drawbasetrue
@@ -2990,7 +2999,7 @@
 \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/gate width/.initial=.5}% the horizontal position is the same
 \ctikzset{tripoles/hemt/bodydiode scale/.initial=.3}
 \ctikzset{tripoles/hemt/bodydiode distance/.initial=.3}
 \ctikzset{tripoles/hemt/bodydiode conn/.initial=.6}
@@ -3221,6 +3230,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/base width/.initial=.5}
 \ctikzset{tripoles/njfet/conn height/.initial=.35}
 \ctikzset{tripoles/njfet/height/.initial=1.1}
 \ctikzset{tripoles/njfet/bodydiode scale/.initial=.3}
@@ -3232,6 +3242,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/base width/.initial=.5}
 \ctikzset{tripoles/pjfet/conn height/.initial=.35}
 \ctikzset{tripoles/pjfet/height/.initial=1.1}
 \ctikzset{tripoles/pjfet/bodydiode scale/.initial=.3}
@@ -3354,6 +3365,82 @@
     \fi
 }
 
+% add a ferroelectric squish to transistors
+
+\def\pgfcirc at ferroelectric#1#2{% #1 -> transistor type, #2 horizontal enlargment (prop to ... at left),
+    \ifpgf at circuit@tr at ferroel\pgfscope
+        \pgf at circ@setlinewidth{tripoles}{\pgflinewidth}
+        \pgf at circ@set at relative@thickness{modifier thickness}
+        % base-gate center and width of the sigmoid
+        \pgfmathsetlength{\pgf at circ@res at other}
+        {0.5*(\ctikzvalof{tripoles/#1/gate width}+\ctikzvalof{tripoles/#1/base width}-(#2))*\pgf at circ@res at left}
+        \pgfmathsetlength{\pgf at circ@res at temp}
+        {1.2*abs(\ctikzvalof{tripoles/#1/gate width}-\ctikzvalof{tripoles/#1/base width}+0.5*(#2))*\pgf at circ@res at left}
+        \pgfsetcornersarced{\pgfpoint{-0.2\pgf at circ@res at temp}{-0.2\pgf at circ@res at temp}}
+        \pgfpathmoveto{\pgfpoint
+            {\pgf at circ@res at other+\pgf at circ@res at temp}
+            {1.1*\ctikzvalof{tripoles/#1/base height}*\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint
+            {\pgf at circ@res at other+\pgf at circ@res at temp}
+            {0.5*\ctikzvalof{tripoles/#1/base height}*\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint
+            {\pgf at circ@res at other-\pgf at circ@res at temp}
+            {0.5*\ctikzvalof{tripoles/#1/base height}*\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint
+            {\pgf at circ@res at other-\pgf at circ@res at temp}
+            {1.1*\ctikzvalof{tripoles/#1/base height}*\pgf at circ@res at down}}
+        \pgfusepath{draw}
+    \endpgfscope\fi
+}
+
+\ctikzset{tr gap fill/.initial=none}
+\tikzset{tr gap fill/.style={\circuitikzbasekey/tr gap fill={#1}}}
+% fill the gap in relevant transistors
+\def\pgfcirc at fillgategap#1{% #1 transistor type
+    \edef\@@@none{none}\edef\@@@color{\ctikzvalof{tr gap fill}}% always exists
+    \ifx\@@@none\@@@color\relax\else
+        \begingroup % save the value of @res: other, step, temp
+        \edef\@@@doit{1}% draw it, set to zero if we give up
+        % ok, we have the color here. we have to get center position, with and height
+        % normally is gate height; but in igbt is outer base height (grrrr)
+        \pgfkeysifdefined{\circuitikzbasekey/tripoles/#1/outer base height}{
+            % yes, it's an IGBT
+            \pgfmathsetlength{\pgf at circ@res at other}{\ctikzvalof{tripoles/#1/outer base height}*\pgf at circ@res at up}
+        }{
+            %no. Let's try with gate height
+             \pgfkeysifdefined{\circuitikzbasekey/tripoles/#1/gate height}{
+                 % yes, go for it
+                \pgfmathsetlength{\pgf at circ@res at other}{\ctikzvalof{tripoles/#1/gate height}*\pgf at circ@res at up}
+            }{
+                %no, give up, let value to 0
+                \edef\@@@doit{0}
+            }
+        }
+        % now we have to find x1 and x2: these are base width and gate width
+        % if do not have one of that, bail out.
+        \pgfkeysifdefined{\circuitikzbasekey/tripoles/#1/gate width}{
+                \pgfmathsetlength{\pgf at circ@res at temp}{\ctikzvalof{tripoles/#1/gate width}*\pgf at circ@res at left}
+            }{
+                \edef\@@@doit{0}
+            }
+        \pgfkeysifdefined{\circuitikzbasekey/tripoles/#1/base width}{
+                \pgfmathsetlength{\pgf at circ@res at step}{\ctikzvalof{tripoles/#1/base width}*\pgf at circ@res at left}
+            }{
+                \edef\@@@doit{0}
+            }
+        % if found, draw it.
+        \ifnum\@@@doit>0\relax
+            \pgfscope
+                \pgfsetfillcolor{\@@@color}
+                \pgfsetcolor{\@@@color}
+                \pgfpathrectanglecorners{\pgfpoint{\pgf at circ@res at temp}{\pgf at circ@res at other}}{\pgfpoint{\pgf at circ@res at step}{-\pgf at circ@res at other}}
+                \pgfusepath{fill, draw}
+            \endpgfscope
+        \fi
+        \endgroup
+    \fi
+}
+
 \long\def\pgfcircdeclaretransistor#1#2#3{
     \pgfdeclareshape{#1}
     {
@@ -3418,6 +3505,22 @@
         \anchor{circle center}{
             \pgf at y=0pt\pgf at x=\circleleft\advance\pgf at x by\circleradius
         }
+        \savedanchor{\centergap}{% this is the center position between gate and base
+            % get "left"
+            \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+            \pgf at xa=-\ctikzvalof{tripoles/#1/width}\pgf at circ@scaled at Rlen
+            \pgfkeysifdefined{\circuitikzbasekey/tripoles/#1/gate width}{
+                % yes, we have a separated gate
+                \pgfmathsetlength{\pgf at x}
+                {0.5*(\ctikzvalof{tripoles/#1/gate width}+\ctikzvalof{tripoles/#1/base width})*\pgf at xa}
+            }{
+                % no, use just the base
+                \pgfmathsetlength{\pgf at x}
+                {\ctikzvalof{tripoles/#1/base width}*\pgf at xa}
+            }
+            \pgf at y=0pt\relax
+        }
+        \anchor{centergap}{\centergap}
         \anchor{center}{
             \pgfpointorigin
         }
@@ -4272,6 +4375,8 @@
     {
         % add the circle if requested (before everything else, so we can fill it)
         \pgfcirc at transistorcircle
+        % fill the gap color if requested
+        \pgfcirc at fillgategap{#1}
         %draw upper connection
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
         \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
@@ -4563,6 +4668,8 @@
     }{%
     % add the circle if requested (before everything else, so we can fill it)
     \pgfcirc at transistorcircle
+    % fill the gap color if requested
+    \pgfcirc at fillgategap{nmos}
 
     \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
     \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
@@ -4636,6 +4743,8 @@
                 {\pgf at circ@res at up+\pgf at circ@res at down}}
         \pgfusepath{draw}
     \fi
+
+    \pgfcirc at ferroelectric{nmos}{0}
 }
 
 \pgfcircdeclaretransistor{pmos}{
@@ -4650,6 +4759,9 @@
     }{%
     % add the circle if requested (before everything else, so we can fill it)
     \pgfcirc at transistorcircle
+    % fill the gap color if requested
+    \pgfcirc at fillgategap{nmos}
+
     \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
     \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}
     {\ctikzvalof{tripoles/pmos/gate height}\pgf at circ@res at up}}
@@ -4738,6 +4850,8 @@
         \fi
         \pgfusepath{draw,fill}
     \fi
+
+    \pgfcirc at ferroelectric{pmos}{0}
 }
 
 %%% depletion MOSFET (simplified symbols)
@@ -4782,6 +4896,8 @@
     % draw depletion channel
     % add the circle if requested (before everything else, so we can fill it)
     \pgfcirc at transistorcircle
+    % fill the gap color if requested
+    \pgfcirc at fillgategap{nmos}
     \pgfscope
         \pgfpathrectanglecorners
         {\pgfpoint
@@ -4864,6 +4980,8 @@
                 {\pgf at circ@res at up+\pgf at circ@res at down}}
         \pgfusepath{draw}
     \fi
+
+    \pgfcirc at ferroelectric{nmosd}{\ctikzvalof{tripoles/nmosd/depletion width}}
 }
 
 \pgfcircdeclaretransistor{pmosd}{
@@ -4884,6 +5002,8 @@
     }{%
     % add the circle if requested (before everything else, so we can fill it)
     \pgfcirc at transistorcircle
+    % fill the gap color if requested
+    \pgfcirc at fillgategap{nmos}
     % draw depletion channel
     \pgfscope
         \pgfpathrectanglecorners
@@ -4983,6 +5103,8 @@
         \fi
         \pgfusepath{draw,fill}
     \fi
+
+    \pgfcirc at ferroelectric{pmosd}{\ctikzvalof{tripoles/pmosd/depletion width}}
 }
 %% HEMT FET Transistor
 \pgfcircdeclaretransistor{hemt}{
@@ -5023,11 +5145,13 @@
         \pgfusepath{draw}
     \endpgfscope
 
-    \pgfpathmoveto{\pgfpoint
-        {\ctikzvalof{tripoles/hemt/base width}\pgf at circ@res at left}
-    {\pgf at circ@res at up+\pgf at circ@res at down}}
-    \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf at circ@res at up+\pgf at circ@res at down}}
-    \pgfusepath{draw}
+    \ifpgf at circuit@bpt at drawgate
+        \pgfpathmoveto{\pgfpoint
+            {\ctikzvalof{tripoles/hemt/base width}\pgf at circ@res at left}
+        {\pgf at circ@res at up+\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\pgf at circ@res at up+\pgf at circ@res at down}}
+        \pgfusepath{draw}
+    \fi
 }
 
 \long\def\drawfetcore#1{
@@ -5034,6 +5158,8 @@
     \pgftransformationadjustments
     % add the circle if requested (before everything else, so we can fill it)
     \pgfcirc at transistorcircle
+    % fill the gap color if requested
+    \pgfcirc at fillgategap{#1}
 
     %top connection
     \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+\pgfverticaltransformationadjustment*.5*\pgflinewidth}}
@@ -5132,22 +5258,24 @@
         \pgfnode{trarrow}{\@@anchor}{}{}{\pgfusepath{stroke}}
     \endpgfscope
 
-% GATE CONNECTION
-\ifpgf at circuit@bpt at drawgate
-    \ifpgf at circuit@trans at ntype
-        \pgfpathmoveto{\pgfpoint
-            {\ctikzvalof{tripoles/#1/gate width}\pgf at circ@res at left}
-        {\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
-        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
-    \else
-        \pgfpathmoveto{\pgfpoint
-            {\ctikzvalof{tripoles/#1/gate width}\pgf at circ@res at left}
-        {-\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
-        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
+    % GATE CONNECTION
+    \ifpgf at circuit@bpt at drawgate
+        \ifpgf at circuit@trans at ntype
+            \pgfpathmoveto{\pgfpoint
+                {\ctikzvalof{tripoles/#1/gate width}\pgf at circ@res at left}
+            {\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
+            \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
+        \else
+            \pgfpathmoveto{\pgfpoint
+                {\ctikzvalof{tripoles/#1/gate width}\pgf at circ@res at left}
+            {-\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
+            \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgfhorizontaltransformationadjustment*.5*\pgflinewidth}{-\ctikzvalof{tripoles/#1/conn height}\pgf at circ@res at down}}
+        \fi
+        \pgfusepath{draw}
     \fi
-    \pgfusepath{draw}
-\fi
 
+    \pgfcirc at ferroelectric{#1}{0}
+
 }
 
 \long\def\pgfdeclaretransistorwrapperaddbulk#1#2#3

Modified: trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty	2021-04-19 23:49:40 UTC (rev 58922)
+++ trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty	2021-04-20 20:09:13 UTC (rev 58923)
@@ -12,8 +12,8 @@
 
 \NeedsTeXFormat{LaTeX2e}
 
-\def\pgfcircversion{1.3.3}
-\def\pgfcircversiondate{2021/04/04}
+\def\pgfcircversion{1.3.4}
+\def\pgfcircversiondate{2021/04/20}
 
 \ProvidesPackage{circuitikz}%
 [\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]



More information about the tex-live-commits mailing list.