texlive[53208] Master/texmf-dist: circuitikz (22dec19)

commits+karl at tug.org commits+karl at tug.org
Sun Dec 22 22:55:04 CET 2019


Revision: 53208
          http://tug.org/svn/texlive?view=revision&revision=53208
Author:   karl
Date:     2019-12-22 22:55:04 +0100 (Sun, 22 Dec 2019)
Log Message:
-----------
circuitikz (22dec19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.pdf
    trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex
    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/tex/context/third/circuitikz/t-circuitikz.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-legacy.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-romano.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
    trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.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/context/third/circuitikz/circuitikz-context.tex
===================================================================
--- trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/doc/context/third/circuitikz/circuitikz-context.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -15,7 +15,8 @@
         to [generic, i=$i_1$, v=$v_1$] (4,-.5) -- (4,-1.5)
   (0,2) -- (0,-1.5) to[V, v_=4\volt] (2,-1.5)
         to [R, l=1\kilo\ohm] (4,-1.5)
-  (5,2) node[dipchip, anchor=pin 1]{};
+  (5,2) node[dipchip, anchor=pin 1]{}
+  (5,-2) node[flipflop JK, anchor=pin 1]{};
 
 \stopcircuitikz
 

Modified: trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/doc/generic/circuitikz/CHANGELOG.md	2019-12-22 21:55:04 UTC (rev 53208)
@@ -1,9 +1,22 @@
 <!--- 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.0.0-pre1 (2019-12-22)
+
+    Last additions before the long promised 1.0! In this pre-release we feature a flip-flop library, a revamped configurability of amplifiers (and a new amplifier as a bonus) and some bug fix around the clock.
+
+    - Added a flip-flop library
+    - Added a single-input generic amplifier with the same dimension as "plain amp"
+    - Added border anchors to amplifiers
+    - Added the possibility (expert only!) to add transparency to poles (after a suggestion from user @matthuszagh on GitHub)
+    - Make plus and minus symbol on amplifiers configurable
+    - Adjusted the position of text in triangular amplifiers
+    - Fixed "plain amp" not respecting "noinv input up"
+    - Fixed minor incompatibility with ConTeXt and Plain TeX
+
 * Version 0.9.7 (2019-12-01)
 
-    The important thing in this release is the new position of transistor's labels; see the manual for details. 
+    The important thing in this release is the new position of transistor's labels; see the manual for details.
 
     - Fix the position of transistor's text. There is an option to revert to the old behavior.
     - Added anchors for adding circuits (like snubbers) to the flyback diodes in transistors (after a suggestion from @EdAlvesSilva on GitHub).
@@ -10,7 +23,7 @@
 
 * Version 0.9.6 (2019-11-09)
 
-    The highlights of this release are the new multiple terminals BJTs and several stylistic addition and fixes; if you like to pixel-peep, you will like the fixed transistors arrows. Additionally, the transforms are much more configurable now, the "pmos" and "nmos" elements have grown an optional bulk connection, and you can use the "flow" arrows outside of a path.
+    The highlights of this release are the new multiple terminals BJTs and several stylistic addition and fixes; if you like to pixel-peep, you will like the fixed transistors arrows. Additionally, the transformers are much more configurable now, the "pmos" and "nmos" elements have grown an optional bulk connection, and you can use the "flow" arrows outside of a path.
 
     Several small and less small bugs have been fixed.
 

Modified: trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/changelog.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -5,6 +5,34 @@
 
 \begin{itemize}
 \item
+  Version 1.0.0-pre1 (2019-12-22)
+
+  Last additions before the long promised 1.0! In this pre-release we
+  feature a flip-flop library, a revamped configurability of amplifiers
+  (and a new amplifier as a bonus) and some bug fix around the clock.
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Added a flip-flop library
+  \item
+    Added a single-input generic amplifier with the same dimension as
+    ``plain amp''
+  \item
+    Added border anchors to amplifiers
+  \item
+    Added the possibility (expert only!) to add transparency to poles
+    (after a suggestion from user @matthuszagh on GitHub)
+  \item
+    Make plus and minus symbol on amplifiers configurable
+  \item
+    Adjusted the position of text in triangular amplifiers
+  \item
+    Fixed ``plain amp'' not respecting ``noinv input up''
+  \item
+    Fixed minor incompatibility with ConTeXt and Plain TeX
+  \end{itemize}
+\item
   Version 0.9.7 (2019-12-01)
 
   The important thing in this release is the new position of
@@ -25,7 +53,7 @@
 
   The highlights of this release are the new multiple terminals BJTs and
   several stylistic addition and fixes; if you like to pixel-peep, you
-  will like the fixed transistors arrows. Additionally, the transforms
+  will like the fixed transistors arrows. Additionally, the transformers
   are much more configurable now, the ``pmos'' and ``nmos'' elements
   have grown an optional bulk connection, and you can use the ``flow''
   arrows outside of a path.

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	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/doc/latex/circuitikz/circuitikzmanual.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -209,6 +209,8 @@
 
 So, if loaded with said option, one must write \verb!(0,0) to[*R] (2,0)! and, for transistors on a path, \verb!(0,0) to[*Tnmos] (2,0)!, and so on (but \verb!(0,0) node[nmos] {}!). See example at page~\pageref{ex:compatibility}.
 
+Another thing to take into account is that any \TikZ{} figure (and \Circuitikz{} ones qualify) \textbf{will} have problems if you use the \texttt{babel} package with a language that changes active characters (most of them). The solution is normally to add the line \verb|\usetikzlibrary{babel}| in your preamble, after loading \TikZ{} or \Circuitikz. This will normally solve the problem; some language also requires using \verb|\deactivatequoting| or the option \texttt{shorthands=off} for \texttt{babel}. Please check the documentation of \TikZ{} or this question \href{https://tex.stackexchange.com/questions/166772/problem-with-babel-and-tikz-using-draw}{on \TeX{} stackexchange site}.
+
 \subsection{Known bugs and limitation}\label{sec:bugs}
 
 \Circuitikz{} will \textbf{not work} correctly with global (in the main \texttt{circuitikz} environment, or in \texttt{scope} environments) \emph{negative} scale parameters (\texttt{scale}, \texttt{xscale} or \texttt{yscale}), unless \texttt{transform shape} is also used, and even in this cases the behavior is not guaranteed.
@@ -227,7 +229,7 @@
     \item After v0.9.4: added the concept of styling of circuits. It should be backward compatible, but it's a big change, so be ready to use the \texttt{0.9.3} snapshot (see below for details).
     \item After v0.9.0: the parameters \texttt{tripoles/american or port/aaa}, \texttt{...bbb}, \texttt{...ccc} and \texttt{...ddd} are no longer used and are silently ignored; the same stands for \texttt{nor}, \texttt{xor}, and \texttt{xnor} ports.
     \item After v0.9.0: voltage and current directions/sign (plus and minus signs in case of \texttt{american voltages} and arrows in case of \texttt{european voltages} have been rationalized with a couple of new options (see details in section~\ref{curr-and-volt}. The default case is still the same as v0.8.3.
-    \item Since v0.8.2: voltage and current label directions(v<= / i<=) do NOT change the orientation of the drawn source shape anymore. Use the "invert" option to rotate the shape of the source. Furthermore, from this version on, the current label(i=) at current sources can be used independent of the regular label(l=).
+    \item Since v0.8.2: voltage and current label directions (\texttt{v<=} / \texttt{i<=}) do NOT change the orientation of the drawn source shape anymore. Use the \texttt{invert} option to rotate the shape of the source. Furthermore, from this version on, the current label (\texttt{i=}) at current sources can be used independent of the regular label (\texttt{l=}).
     \item Since v0.7?: The label behaviour at mirrored bipoles has changes, this fixes the voltage drawing, but perhaps you have to adjust your label positions.
     \item Since v0.5.1: The parts pfet, pigfete, pigfetebulk and pigfetd are now mirrored by default. Please adjust your yscale-option to correct this.
     \item Since v0.5: New voltage counting direction, here exists an option to use the old behaviour
@@ -297,8 +299,8 @@
         \item \texttt{europeanresistors}: uses rectangular empty shape for resistors, as per european standards;
         \item \texttt{americanresistors}: uses zig-zag shape for resistors, as per american standards;
         \item \texttt{europeaninductors}: uses rectangular filled shape for inductors, as per european standards;
-        \item \texttt{americaninductors}: uses "4-bumps" shape for inductors, as per american standards;
-        \item \texttt{cuteinductors}: uses my personal favorite, "pig-tailed" shape for inductors;
+        \item \texttt{americaninductors}: uses ``4-bumps''  shape for inductors, as per american standards;
+        \item \texttt{cuteinductors}: uses my personal favorite, ``pig-tailed'' shape for inductors;
         \item \texttt{americanports}: uses triangular logic ports, as per american standards;
         \item \texttt{europeanports}: uses rectangular logic ports, as per european standards;
         \item \texttt{americangfsurgearrester}: uses round gas filled surge arresters, as per american standards;
@@ -897,10 +899,11 @@
 \end{circuitikz}
 \end{LTXexample}
 
-To simplify this task, \Circuitikz{} has three helper macros --- \verb|\ctikzflipx{}|, \verb|\ctikzflipy{}|,
+To simplify this task, \Circuitikz{} when used in \LaTeX{} has three helper macros --- \verb|\ctikzflipx{}|, \verb|\ctikzflipy{}|,
 and \verb|\ctikzflipxy{}|, that can be used to ``un-rotate'' the text of nodes drawn with, respectively,
 \texttt{xscale=-1}, \texttt{yscale=-1}, and \texttt{scale=-1} (which is equivalent to
 \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{circuitikz}[scale=0.7, transform shape]
@@ -2254,7 +2257,7 @@
     \circuitdesc{hemt}{hemt}{}
 \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 "solderdot" and "nosolderdot", respectm ively.
+\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.
 
 \begin{groupdesc}
     \circuitdesc{nfet}{nfet}{Q}
@@ -2362,7 +2365,7 @@
 \end{circuitikz}
 \end{LTXexample}
 
-\paragraph{Base/Gate terminal.} The Base/Gate connection of all transistors can be disabled by the options \textit{nogate} or \textit{nobase}, respectively. The Base/Gate anchors are floating, but there is an additional anchor "nogate"/"nobase", which can be used to point to the unconnected base:
+\paragraph{Base/Gate terminal.} The Base/Gate connection of all transistors can be disabled by the options \textit{nogate} or \textit{nobase}, respectively. The Base/Gate anchors are floating, but there is an additional anchor \texttt{nogate}/\texttt{nobase} , which can be used to point to the unconnected base:
 \begin{LTXexample}[varwidth=true]
 \begin{circuitikz}
    \draw (2,0) node[npn,nobase](npn){};
@@ -3080,8 +3083,9 @@
     \circuitdesc*{inst amp}{plain instrumentation amplifier}{}( up/90/0.2, down/-90/0.2, refv up/45/0.2, refv down/-45/0.2 )
     \circuitdesc*{fd inst amp}{Fully differential instrumentation amplifier}{}
     \circuitdesc*{inst amp ra}{instrumentation amplifier with amplification resistance terminals}{}( ra+/180/0.1, ra-/180/0.1 )
-    \circuitdesc*{plain amp}{Plain amplifier}{}(+/180/0.2, -/180/0.2, out/0/0.2, up/90/0.2)
-    \circuitdesc*{buffer}{Buffer}{}(in/180/0.2, out/0/0.2)
+    \circuitdesc*{plain amp}{Plain amplifier, unmarked, two inputs}{}(in up/180/0.1, in down/180/0.1, up/90/0.2, out/0/0.2, bin up/145/0.2, bin down/-145/0.2, bout/45/0.3)
+    \circuitdesc*{plain mono amp}{Plain amplifier, one input}{}(in/180/0.2, out/0/0.2, up/90/0.2, center/-30/0.6, bin/145/0.1, bout/45/0.3)
+    \circuitdesc*{buffer}{Buffer}{}(in/180/0.2, out/0/0.2, center/-30/0.6, bin/145/0.1, bout/45/0.3)
 \end{groupdesc}
 
 \subsubsection{Amplifiers anchors}
@@ -3124,7 +3128,7 @@
 ;\end{circuitikz}
 \end{LTXexample}
 
-The instrumentation amplifier inst amp defines also references (normally you use the "down", unless you are flipping the component):
+The instrumentation amplifier inst amp defines also references (normally you use the \texttt{down}, unless you are flipping the component):
 \begin{LTXexample}[varwidth=true]
 \begin{circuitikz} \draw
   (0,0) node[inst amp] (opamp) {}
@@ -3168,6 +3172,21 @@
 ;\end{circuitikz}
 \end{LTXexample}
 
+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{circuitikz}[]
+    \draw (0,2.2) node[op amp](OA){IA1};
+    \node[oosourceshape, rotate=90, scale=0.5]
+        at (OA.leftedge) {};
+    \draw (0,0) node[plain amp](A){$A$};
+    \draw [color=red] (A.bin up) -- ++(0.2,0)
+        coordinate (tmp)
+        to[R, resistors/scale=0.5]
+        (tmp|-A.bin down) -- (A.bin down);
+\end{circuitikz}
+\end{LTXexample}
+
 \subsubsection{Amplifiers customization}
 
 You can scale the amplifiers using the key \texttt{amplifiers/scale} and setting it to something different from \texttt{1.0}. The font used for symbols will not scale, so it's your responsibility to change it if the need arises.
@@ -3192,6 +3211,43 @@
 
 When you use the \texttt{noinv input/output ...} keys the anchors (\texttt{+}, \texttt{-}, \texttt{out +}, \texttt{out -}) will change with the effective position of the terminals. You have also the anchors \texttt{in up}, \texttt{in down}, \texttt{out up}, \texttt{out down} that will not change with the positive or negative sign.
 
+You can change the symbols ``$+$'' or ``$-$'' appearing in the amplifiers if you want, both globally and on component-by-component basis. The plus and minus symbols can be changed with \verb|\ctikzset| of the keys \texttt{amplifiers/plus} and +\texttt{amplifiers/minus} (which defaults to the math mode plus or minus cited before), or using the styles \texttt{amp plus} and \texttt{amp minus}.
+
+The font used is set in several keys, but you can change it globally with \verb|\tikzset{amp symbol font}|, which has a default of 10-point  (in \LaTeX, and the corresponding one in \ConTeXt). You can change it for example with
+\begin{lstlisting}
+ \tikzset{amp symbol font={%
+ \color{blue}\fontsize{12}{12}\selectfont\boldmath}}
+\end{lstlisting}
+to have plus and minus symbols that are bigger and blue.
+
+\begin{LTXexample}[varwidth=true, basicstyle=\small\ttfamily]
+\begin{circuitikz}[]
+    % change in this circuit only
+    \tikzset{amp symbol font={\color{blue}\small\boldmath}}
+    % local change
+    \draw (0,2.2) node[op amp, amp plus=$\oplus$]{};
+    \draw (0,0) node[op amp]{};
+    % from now on...
+    \ctikzset{amplifiers/plus={$\oplus$}}
+    \ctikzset{amplifiers/minus={$\ominus$}}
+    \draw (0,-2.2) node[fd op amp]{};
+\end{circuitikz}
+\end{LTXexample}
+
+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{circuitikz}[]
+    \ctikzset{amplifiers/plus={}}
+    \ctikzset{amplifiers/minus={}}
+    \draw (0,0) node[fd op amp](A){};
+    \node [font=\small\bfseries, right] at(A.bin up) {1};
+    \node [font=\small\bfseries, right] at(A.bin down) {2};
+    \node [font=\small\bfseries, below] at(A.bout up) {3};
+    \node [font=\small\bfseries, above] at(A.bout down) {4};
+\end{circuitikz}
+\end{LTXexample}
+
 \paragraph{European-style amplifier customization}
 
 Thanks to the suggestions from David Rouvel (\email{david.rouvel at iphc.cnrs.fr}) there are several possible customization for the European-style amplifiers.
@@ -3749,8 +3805,171 @@
 ;\end{circuitikz}
 \end{LTXexample}
 
+\subsection{Flip-flops}\label{sec:flipflops}
 
+Flip-flops are an hybrid between the logic ports and the chips. They have a class by themselves (\texttt{flipflops}) but the default parameters are set at the same values as the logic gates one.
 
+The default flip flop is empty: it is just a rectangular box like a blank \texttt{dipchip}  with 6 pins.
+\begin{groupdesc}
+    \circuitdesc*{flipflop}{Blank (void) flip flop}{FF}(
+    pin 1/180/0.2, pin 2/180/0.2, pin 3/180/0.2,
+    bpin 1/120/0.3, bpin 6/60/0.3, up/90/0.2, down/-90/0.2, bup/30/0.2, bdown/-30/0.2,
+    pin 6/0/0.2, pin 5/0/0.2, pin 4/0/0.2)
+\end{groupdesc}
+
+As you can see, in a void flip flop no external pins are drawn: you have to define the meaning of each of them to see them.
+To define a specific flip-flop, you have to set a series of keys under the \verb|\ctikzset| directory \texttt{multipoles/flipflop/}, corresponding to pins \texttt{1}\dots \texttt{6}, \texttt{u} for ``up'' and \texttt{d} for ``down'':
+\begin{itemize}
+    \item a \emph{text} value \texttt{t0}, \texttt{t1}, \dots \texttt{t6}, and \texttt{tu} and \texttt{td} (the last ones for up and down) which will set a label on the pin;
+    \item a \emph{clock wedge} flag (\texttt{c0}, \dots  \texttt{c6}, \texttt{cu}, \texttt{cd}), with value \texttt{0} or \texttt{1}, which will draw a triangle shape on the border of the correspondig pin;
+    \item a \emph{negation} flag (\texttt{n0}, \dots  \texttt{n6}, \texttt{nu}, \texttt{nd}),  with value \texttt{0} or \texttt{1}, which will put and \texttt{ocirc} shape on the outer border of the correspondig pin.
+\end{itemize}
+
+To set all this keys, an auxiliary style \texttt{flipflop def} is defined, so that you can do the following thing:
+
+\begingroup
+\tikzset{flipflop AB/.style={flipflop,
+    flipflop def={t1=A, t3=B, t6=Q, t4={\ctikztextnot{Q}},
+        td=rst, nd=1, c2=1, n2=1, t2={\texttt{CLK}}},
+}}
+
+\begin{lstlisting}
+\tikzset{flipflop AB/.style={flipflop,
+    flipflop def={t1=A, t3=B, t6=Q, t4={\ctikztextnot{Q}},
+        td=rst, nd=1, c2=1, n2=1, t2={\texttt{CLK}}},
+}}
+\end{lstlisting}
+
+to obtain:
+
+\begin{groupdesc}
+    \circuitdesc*{flipflop AB}{Example custom flip flop}{}(
+    pin 1/180/0.2, pin 2/180/0.2, pin 3/180/0.2,
+    bpin 1/120/0.3, bpin 6/60/0.3, down/-90/0.2, bdown/-30/0.2,
+    pin 6/0/0.2)
+\end{groupdesc}
+\endgroup
+
+\verb|\ctikztextnot{}| is a small utility macro to set a overbar to a text, like \ctikztextnot{RST} (created by \verb|\ctikztextnot{RST}|).
+
+
+By default, the following flip-flops are defined:
+\begin{groupdesc}
+    \circuitdesc*{latch}{D-type latch}{}
+    \circuitdesc*{flipflop SR}{flip-flop SR}{}
+    \circuitdesc*{flipflop D}{Edge-triggered synchronous flip-flop D}{}
+    \circuitdesc*{flipflop T}{Edge-triggered synchronous flip-flop T}{}
+    \circuitdesc*{flipflop JK}{Edge-triggered synchronous flip-flop JK}{}
+\end{groupdesc}
+
+If you prefer that the negated output is labelled \texttt{Q} and a dot indicating negation is shown, you can add the \texttt{dot on notQ} key:
+
+\begin{groupdesc}
+    \circuitdesc*{flipflop JK, dot on notQ}{synchronous flip-flop JK with asynchronous set and reset}{}
+\end{groupdesc}
+
+You can also  add ``vertical'' asynchronous set and reset (active low) adding the style \texttt{add async SR} to all of them:
+
+\begin{groupdesc}
+    \circuitdesc*{flipflop JK, add async SR}{synchronous flip-flop JK with asynchronous set and reset}{}
+\end{groupdesc}
+
+\subsubsection{Custom flip-flops}
+
+If you like different pin distributions, you can easily define different flip-flops to your taste. For example, somebody likes the clock pin on the bottom pin:
+
+\begingroup
+\tikzset{flipflop myJK/.style={flipflop,
+    flipflop def={t1=J, t2=K, t6=Q, t4={\ctikztextnot{Q}}, c3=1}}
+}
+
+\begin{lstlisting}
+\tikzset{flipflop myJK/.style={flipflop,
+    flipflop def={t1=J, t2=K, t6=Q, t4={\ctikztextnot{Q}}, c3=1}}
+}
+\end{lstlisting}
+
+\begin{groupdesc}
+    \circuitdesc*{flipflop myJK}{Example custom flip flop}{}
+\end{groupdesc}
+\endgroup
+
+The standard definition of the default flip-flops are the following (you can find them in the file \texttt{pgfcircmultipoles.tex}):
+
+\begin{lstlisting}[basicstyle=\small\ttfamily]
+\tikzset{
+    % async
+    latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
+    flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
+    % sync
+    flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+    flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+    flipflop JK/.style={flipflop,
+                flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
+    % additional features
+    add async SR/.style={flipflop def={%
+                tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
+    dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
+}
+\end{lstlisting}
+
+
+\subsubsection{Flip-flops anchors}
+
+Flip-flops have all the standard geometrical anchors, although it should be noticed that the external pin are \emph{outside} them. The pins are accessed by the number \texttt{1} to \texttt{6} for the lateral ones (like in DIP chips), and with the \texttt{up} and \texttt{down} anchors for the top and bottom one. All the pins have the ``border'' variant (add a \texttt{b} in front of them, no spaces).
+
+\begin{quote}
+        \geocoord{flipflop JK}\qquad
+        \showanchors{flipflop JK, add async SR, external pins width=0.5}{}(%
+            pin 1/180/0.5, pin 2/180/0.5, pin 3/180/0.5,
+            up/90/0.2, down/-90/0.2,
+            pin 6/0/0.5, pin 5/0/0.5, pin 4/0/0.5,
+            bpin 1/120/0.3, bpin 2/135/0.3, bpin 3/-120/0.2,
+            bup/30/0.3, bdown/-30/0.3,
+            bpin 6/60/0.3, bpin 5/30/0.3, bpin 4/-30/0.4)
+\end{quote}
+
+If you have negated pins, you can access the \texttt{ocirc} shapes with the name as \texttt{\textsl{<nodename>}-N\textsl{<pin number>}}, and all the respective anchors (for example --- \verb|myFFnode-N4.west|).
+
+\subsubsection{Flip-flops customization}
+
+
+Flip-flop's size is controlled by the class parameters (like \texttt{flipflops/scale})  and the specific \verb|\ctikzset| keys \texttt{multipoles/flipflop/width} and \texttt{multipoles/flipflop/pin spacing}. Class parameters are also used for line thickness and fill color. The default values are matched with the logic ports ones.
+
+The fonts used for the pins \texttt{1}\dots \texttt{6} is set by the key \texttt{multipoles/flipflop/font} (by default \verb|\small| in \LaTeX{} and the equivalent in other formats) and the font used for pins \texttt{u} and \texttt{d} is \texttt{multipoles/flipflop/fontud} (\verb|\tiny| by default).
+You can change it globally or specifically for each flip flop.
+
+As in chips, you can change the length of the external pin with the key \texttt{external pins width}; you can for example have a pinless flip-flop like this:
+
+\begin{groupdesc}
+    \circuitdesc*{flipflop JK, add async SR, external pins width=0}{synchronous flip-flop JK}{}
+\end{groupdesc}
+
+Notice however that negated pins when the pins width is zero has to be handled with care. As explained in the poles sections, the \texttt{ocirc} shape is drawn at the end of the shape to cancel out the wires below; so if you use a pinless flipflop when you do the connection you should take care of connecting the symbol correctly. To this end, the shapes of the negation circles are made available as \texttt{\textsl{<nodename>}-N\textsl{<pin number>}}, as you can see in the next (contrived) example.
+
+
+\begin{LTXexample}[varwidth=true]
+\begin{circuitikz}[scale=3, transform shape]
+    \clip (0.2,0.5) rectangle (1.2,-1.3);
+    \node [flipflop JK,
+           flipflop def={n5=1,n4=1,t5={/c},c5=1},
+           external pins width=0,
+           ](A){};
+    \draw (A-N5.east) -- ++(1,0); % correct
+    \draw (A.pin 4) -- ++(1,0);   % wrong
+\end{circuitikz}
+\end{LTXexample}
+
+Normally the symbols on the flip-flop are un-rotated when you rotate the symbol, but as in case of chips, you can avoid it.
+
+\begin{LTXexample}[pos=t]
+\begin{tikzpicture}
+    \draw (0,0) node[flipflop JK, add async SR]{};
+    \draw (3,0) node[flipflop JK, add async SR, rotate=90]{};
+    \draw (7,0) node[flipflop JK, add async SR, rotate=90, rotated numbers]{};
+\end{tikzpicture}
+\end{LTXexample}
+
 \subsection{Chips (integrated circuits)}
 
 \texttt{CircuiTikZ} supports two types of variable-pin chips: DIP (Dual-in-Line Package) and QFP (Quad-Flat Package).
@@ -4940,6 +5159,30 @@
    \draw (0,0) to[R, d-*] (2,0);
 \end{circuitikz}
 \end{LTXexample}
+
+\subsubsection{Transparent poles}
+
+``Open-poles'' terminals (\texttt{ocirc}, \texttt{odiamondpole}, and \texttt{osquarepole}) are normally filled with the background color at full opacity. This is because, for simplicity of operation, the nodes are placed \emph{after} the wires are drawn and have to ``white-out'' the underlying lines.
+
+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{circuitikz}[scale=3, transform shape]
+    \fill[cyan] (0,0) rectangle (4.1,-0.6);
+    \tikzset{halfwhite/.style={fill opacity=0.5, fill=white, open poles opacity=0.5}}
+    % automatic positioning  when opacity is not 1.0 creates artifacts
+    \draw[halfwhite] (0,0) to[generic, -o] ++(2,0) --++(0,-0.5);
+    % you have to use manual positioning
+    \draw[halfwhite] (2.2,0) -- ++(0.5,0) node[ocirc, anchor=180]{};
+    \draw[halfwhite] (3,0) node[ocirc](B){}  (B.0) --++(0.5,0) (B.-90) --++(0,-0.5);
+    % maybe really useful only for terminals going out of the circuit...
+    \draw (3.6,0) -- ++(0.2,0) node[ocirc, halfwhite, anchor=180]{};
+\end{circuitikz}
+\end{LTXexample}
+
+You also have the similar keys for the ``full'' poles (albeit they are probably not useful at all).
+
+
 \subsection{Mirroring and Inverting}
 Bipole paths can also mirrored and inverted (or reverted) to change the drawing direction.
 

Modified: trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex
===================================================================
--- trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/context/third/circuitikz/t-circuitikz.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -1,5 +1,5 @@
-\def\pgfcircversion{0.9.7}
-\def\pgfcircversiondate{2019/12/01}
+\def\pgfcircversion{1.0.0-pre1}
+\def\pgfcircversiondate{2019/12/22}
 \writestatus{loading}{\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion}
 
 \usemodule[tikz]

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-legacy.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-legacy.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-legacy.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -111,6 +111,11 @@
 logic ports/thickness=none,
 logic ports origin=legacy, % it can be "center" (better)
 %
+% flip-flops
+flipflops/scale=1.0
+flipflops/fill=none
+flipflops/thickness=none
+%
 % Integrated circuits
 chips/scale=1.0,
 chips/fill=none,

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-romano.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-romano.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/ctikzstyle-romano.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -2,6 +2,10 @@
 % Do not use LaTeX commands if you want it to be compatible with ConTeXt
 % Do not add spurious spaces
 \tikzset{romano circuit style/.style={%
+% generic tikz-level settings
+american,%
+cute inductors,%
+%circutikz-level settings
 \circuitikzbasekey/.cd,%
 % Resistors
 resistors/scale=0.8,
@@ -53,6 +57,10 @@
 logic ports/thickness=2.0,
 logic ports origin=center, % it can be "center" (better)
 %
+% flip-flops
+flipflops/scale=1.0
+flipflops/thickness=2.0
+%
 % Switches
 bipoles/cuteswitch/thickness=0.5,
 %

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirc.defines.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -168,6 +168,29 @@
 \fi\fi\fi
 
 
+%
+% Thanks to Phelype Oleinik https://tex.stackexchange.com/a/520806/38080
+%
+% this is needed to avoid problems with \ConTeXt
+\ifcsname normalunexpanded\endcsname
+  \let\pgfcircutil at unexpanded\normalunexpanded
+\else
+  \let\pgfcircutil at unexpanded\unexpanded
+\fi
+% minimally expand a pgfkey to check if it's {}/undefined or filled.
+\def\unexpandedvalueof#1{%
+  \pgfcircutil at unexpanded\expandafter\expandafter
+    \expandafter\pgf at circ@valueof at chk\pgfkeysvalueof{#1}}
+\def\pgf at circ@valueof at chk#1{%
+  \ifx\relax#1%
+    \expandafter\pgfutil at firstoftwo
+  \else
+    \expandafter\pgfutil at secondoftwo
+  \fi
+    {{}}% #1 is \relax, so consider empty
+    {\expandafter{#1}}% otherwise, leave the key after one more expansion
+}%
+
 % voltage options
 
 \newif\ifpgf at circ@siunitx
@@ -337,6 +360,10 @@
 \ctikzset{logic ports/fill/.initial=none}
 \ctikzset{logic ports/thickness/.initial=none}
 
+\ctikzset{flipflops/scale/.initial=1.0}
+\ctikzset{flipflops/fill/.initial=none}
+\ctikzset{flipflops/thickness/.initial=none}
+
 \ctikzset{chips/scale/.initial=1.0}
 \ctikzset{chips/fill/.initial=none}
 \ctikzset{chips/thickness/.initial=none}
@@ -1254,6 +1281,13 @@
 %
 \pgfkeys{/tikz/number inputs/.initial=0}
 \pgfkeys{/tikz/number inputs/.default=0}
+
+%% flip-flop specific keys (most others are the same as chips)
+\ctikzset{multipoles/flipflop/font/.initial=\pgf at circ@font at small}
+\ctikzset{multipoles/flipflop/fontud/.initial=\pgf at circ@font at tiny}
+\ctikzset{multipoles/flipflop/width/.initial=1.2}
+\ctikzset{multipoles/flipflop/pin spacing/.initial=0.6}
+\ctikzset{multipoles/flipflop/clock wedge size/.initial=0.2}
 %
 % switches for op amps
 % changing input polarity
@@ -1354,6 +1388,27 @@
 \ctikzset{tripoles/plain amp/input height/.initial=.5}     % Input ports vertical separation
 \ctikzset{tripoles/plain amp/up pos/.initial=.45}          % Top and bottom anchor position
 
+% changing fonts and symbols of amplifiers
+\ctikzset{amplifiers/symbol font/.code={%
+        \ctikzset{tripoles/inst amp ra/font=#1}%
+        \ctikzset{tripoles/fd inst amp/font=#1}%
+        \ctikzset{tripoles/inst amp/font=#1}%
+        \ctikzset{tripoles/gm amp/font=#1}%
+        \ctikzset{tripoles/en amp/font=#1}%
+        \ctikzset{tripoles/fd op amp/font=#1}%
+        \ctikzset{tripoles/op amp/font=#1}%
+}}
+\ctikzset{amplifiers/plus/.initial={$+$}}
+\ctikzset{amplifiers/minus/.initial={$-$}}
+\tikzset{amp symbol font/.code={%
+        \ctikzset{amplifiers/symbol font={#1}}%
+    }
+}
+\tikzset{amp plus/.code={\ctikzsetvalof{amplifiers/plus}{#1}}}
+\tikzset{amp minus/.code={\ctikzsetvalof{amplifiers/minus}{#1}}}
+\def\pgf at circ@ampli at plus{\ctikzvalof{amplifiers/plus}}
+\def\pgf at circ@ampli at minus{\ctikzvalof{amplifiers/minus}}
+
 \ctikzset{tripoles/thyristor/height/.initial=1.10}
 \ctikzset{tripoles/thyristor/height 2/.initial=.5}
 \ctikzset{tripoles/thyristor/width/.initial=1.0}

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircmultipoles.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -855,3 +855,431 @@
         \pgfusepath{draw,fill}
     \fi
 }
+
+
+%%%%%%
+%%%%%% Flip-flops
+%%%%%%
+
+% Flip flops are a specialized kind of dipchip.
+% they have a class by themselves
+
+%% flip flop definitions --- by default empty
+%% pin texts
+\ctikzset{multipoles/flipflop/t1/.initial={}}
+\ctikzset{multipoles/flipflop/t2/.initial={}}
+\ctikzset{multipoles/flipflop/t3/.initial={}}
+\ctikzset{multipoles/flipflop/t4/.initial={}}
+\ctikzset{multipoles/flipflop/t5/.initial={}}
+\ctikzset{multipoles/flipflop/t6/.initial={}}
+\ctikzset{multipoles/flipflop/tu/.initial={}}
+\ctikzset{multipoles/flipflop/td/.initial={}}
+% pin clock wedge flags
+\ctikzset{multipoles/flipflop/c1/.initial={0}}
+\ctikzset{multipoles/flipflop/c2/.initial={0}}
+\ctikzset{multipoles/flipflop/c3/.initial={0}}
+\ctikzset{multipoles/flipflop/c4/.initial={0}}
+\ctikzset{multipoles/flipflop/c5/.initial={0}}
+\ctikzset{multipoles/flipflop/c6/.initial={0}}
+\ctikzset{multipoles/flipflop/cu/.initial={0}}
+\ctikzset{multipoles/flipflop/cd/.initial={0}}
+% pin negation circle flags
+\ctikzset{multipoles/flipflop/n1/.initial={0}}
+\ctikzset{multipoles/flipflop/n2/.initial={0}}
+\ctikzset{multipoles/flipflop/n3/.initial={0}}
+\ctikzset{multipoles/flipflop/n4/.initial={0}}
+\ctikzset{multipoles/flipflop/n5/.initial={0}}
+\ctikzset{multipoles/flipflop/n6/.initial={0}}
+\ctikzset{multipoles/flipflop/nu/.initial={0}}
+\ctikzset{multipoles/flipflop/nd/.initial={0}}
+
+
+% Thanks to @marmot
+\tikzset{flipflop def/.code=\pgfqkeys{\circuitikzbasekey/multipoles/flipflop}{#1}}
+
+% default set of flip flops
+\tikzset{
+    % async
+    latch/.style={flipflop, flipflop def={t1=D, t6=Q, t3=CLK, t4=\ctikztextnot{Q}}},
+    flipflop SR/.style={flipflop, flipflop def={t1=S, t3=R, t6=Q, t4=\ctikztextnot{Q}}},
+    % sync
+    flipflop D/.style={flipflop, flipflop def={t1=D, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+    flipflop T/.style={flipflop, flipflop def={t1=T, t6=Q, c3=1, t4=\ctikztextnot{Q}}},
+    flipflop JK/.style={flipflop, flipflop def={t1=J, t3=K, c2=1, t6=Q, t4=\ctikztextnot{Q}}},
+    % additional features
+    add async SR/.style={flipflop def={tu={\ctikztextnot{SET}}, td={\ctikztextnot{RST}}}},
+    dot on notQ/.style={flipflop def={t4={Q}, n4=1}},
+}
+
+%
+% commodity macro to draw the clock wedges. They leave the size of the
+% wedge in \pgf at circ@res at temp so that a possible label can be displaced.
+%
+\def\pgf at circ@do at wedge@left{
+    \pgf at circ@res at temp=0pt\relax
+    \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf at circ@count at c}>0
+        \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step+\wedge}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left+\wedge}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step-\wedge}}
+        \pgfusepath{stroke}
+        \pgf at circ@res at temp=\wedge
+    \fi
+}
+\def\pgf at circ@do at wedge@right{
+    \pgf at circ@res at temp=0pt\relax
+    \ifnum\ctikzvalof{multipoles/flipflop/c\the\pgf at circ@count at c}>0
+        \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step+\wedge}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at right-\wedge}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+        \pgfpathlineto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step-\wedge}}
+        \pgfusepath{stroke}
+        \pgf at circ@res at temp=-\wedge
+    \fi
+}
+\def\pgf at circ@do at wedge@up{
+    \pgf at circ@res at temp=0pt\relax
+    \ifnum\ctikzvalof{multipoles/flipflop/cu}>0
+        \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf at circ@res at up}}
+        \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up-\wedge}}
+        \pgfpathlineto{\pgfpoint{\wedge}{\pgf at circ@res at up}}
+        \pgfusepath{stroke}
+        \pgf at circ@res at temp=-\wedge
+    \fi
+}
+\def\pgf at circ@do at wedge@down{
+    \pgf at circ@res at temp=0pt\relax
+    \ifnum\ctikzvalof{multipoles/flipflop/cd}>0
+        \pgfpathmoveto{\pgfpoint{-\wedge}{\pgf at circ@res at down}}
+        \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down+\wedge}}
+        \pgfpathlineto{\pgfpoint{\wedge}{\pgf at circ@res at down}}
+        \pgfusepath{stroke}
+        \pgf at circ@res at temp=\wedge
+    \fi
+}
+% generic flip-flop shape
+\pgfdeclareshape{flipflop}{
+    \savedmacro{\ctikzclass}{\edef\ctikzclass{flipflops}}
+    \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf at x}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}}
+    \savedmacro{\thisshape}{\def\thisshape{\tikz at fig@name}}
+    \savedmacro\numpins{\def\numpins{6}}
+    \savedanchor\centerpoint{%
+        \pgf at x=-.5\wd\pgfnodeparttextbox%
+        \pgf at y=-.5\ht\pgfnodeparttextbox%
+        \advance\pgf at y by+.5\dp\pgfnodeparttextbox%
+    }%
+    \savedanchor\origin{\pgfpoint{0pt}{0pt}}
+    \anchor{center}{\origin}
+    \anchor{text}{\centerpoint}% to adjust text
+    \saveddimen\height{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgfmathsetlength\pgf at x{((\numpins)
+        *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf at circ@scaled at Rlen/2}%
+    }%
+    \saveddimen{\chipspacing}{
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgfmathsetlength\pgf at x{\pgf at circ@scaled at Rlen*\ctikzvalof{multipoles/flipflop/pin spacing}}}
+    \saveddimen{\width}{
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgfmathsetlength\pgf at x{\pgf at circ@scaled at Rlen*\ctikzvalof{multipoles/flipflop/width}}}
+    \saveddimen{\extshift}{
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgfmathsetlength\pgf at x{\pgf at circ@scaled at Rlen*\ctikzvalof{multipoles/external pins width}}}
+    % standard anchors
+    \savedanchor\northwest{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgfmathsetlength\pgf at y{0.5*((\numpins)
+        *\ctikzvalof{multipoles/flipflop/pin spacing})*\pgf at circ@scaled at Rlen/2}%
+        \pgfmathsetlength\pgf at x{-0.5*\pgf at circ@scaled at Rlen*\ctikzvalof{multipoles/flipflop/width}}
+    }
+    \anchor{dot}{\northwest
+        \pgfmathsetlength\pgf at x{\pgf at x + 0.3*\chipspacing}
+        \pgfmathsetlength\pgf at y{\pgf at y - 0.3*\chipspacing}
+    }
+    \anchor{nw}{\northwest}
+    \anchor{ne}{\northwest\pgf at x=-\pgf at x}
+    \anchor{se}{\northwest\pgf at x=-\pgf at x\pgf at y=-\pgf at y}
+    \anchor{sw}{\northwest\pgf at y=-\pgf at y}
+    \anchor{north west}{\northwest}
+    \anchor{north east}{\northwest\pgf at x=-\pgf at x}
+    \anchor{south east}{\northwest\pgf at x=-\pgf at x \pgf at y=-\pgf at y}
+    \anchor{south west}{\northwest\pgf at y=-\pgf at y}
+    \anchor{n}{\northwest\pgf at x=0pt }
+    \anchor{e}{\northwest\pgf at x=-\pgf at x\pgf at y=0pt }
+    \anchor{s}{\northwest\pgf at x=0pt\pgf at y=-\pgf at y}
+    \anchor{w}{\northwest\pgf at y=0pt }
+    \anchor{north}{\northwest\pgf at x=0pt }
+    \anchor{east}{\northwest\pgf at x=-\pgf at x\pgf at y=0pt }
+    \anchor{south}{\northwest\pgf at x=0pt\pgf at y=-\pgf at y}
+    \anchor{west}{\northwest\pgf at y=0pt }
+    % upper and lower pin
+    \anchor{up}{\northwest\pgf at x=0pt\advance\pgf at y by\extshift }
+    \anchor{down}{\northwest\pgf at x=0pt\pgf at y=-\pgf at y\advance\pgf at y by-\extshift}
+    \anchor{bup}{\northwest\pgf at x=0pt }
+    \anchor{bdown}{\northwest\pgf at x=0pt\pgf at y=-\pgf at y}
+    % start drawing
+    \backgroundpath{%
+        \northwest
+        \pgf at circ@res at up = \pgf at y
+        \pgf at circ@res at down = -\pgf at y
+        \pgf at circ@res at right = -\pgf at x
+        \pgf at circ@res at left = \pgf at x
+        \pgf at circ@scaled at Rlen=\scaledRlen
+        \pgf at circ@res at step = \ctikzvalof{multipoles/flipflop/pin spacing}\pgf at circ@scaled at Rlen
+        \pgf at circ@res at other = \ctikzvalof{multipoles/external pins width}\pgf at circ@scaled at Rlen
+        \pgfsetcolor{\ctikzvalof{color}}
+        \pgfscope% (for the line width)
+            \pgf at circ@setlinewidth{multipoles}{\pgflinewidth}
+            \pgfpathrectanglecorners{\pgfpoint{-\width/2}{-\height/2}}{\pgfpoint{\width/2}{\height/2}}%
+            \pgf at circ@draworfill
+            \pgfusepath{stroke}%
+        \endpgfscope
+        % Adding the pin number
+        \pgf at circ@count at a=\numpins\relax
+        \divide\pgf at circ@count at a by 2 \pgf at circ@count at b=\pgf at circ@count at a
+        % thanks to @marmot: https://tex.stackexchange.com/a/473571/38080
+        \ifpgf at circuit@chip at straightnumbers
+            \pgfgettransformentries\a\b\temp\temp\temp\temp
+            \pgfmathsetmacro{\rot}{-atan2(\b,\a)}
+            \pgfmathtruncatemacro{\quadrant}{mod(4+int(360+(\rot+45)/90),4)}
+        \else
+            \pgfmathsetmacro{\rot}{0}
+            \pgfmathsetmacro{\quadrant}{0}
+        \fi
+        \def\pgf at circ@strut{\vrule width 0pt height 1em depth 0.4em\relax}
+        % text
+        \def\mytext{\ctikzvalof{multipoles/flipflop/font}\space
+                \ctikzvalof{multipoles/flipflop/t\the\pgf at circ@count at c}%
+                \pgf at circ@strut\space}
+        % \typeout{TEXT\space\mytext}
+        \pgfmathloop%
+        \def\wedge{\ctikzvalof{multipoles/flipflop/clock wedge size}\pgf at circ@res at step}
+        \pgf at circ@res at temp=0pt\relax
+        \ifnum\pgf at circ@count at a>0
+            \ifcase\quadrant % rotation 0
+                % left
+                \pgf at circ@count at c=\pgf at circ@count at a
+                \pgf at circ@do at wedge@left
+                % \typeout{TEXT Left Q1\space\mytext}
+                \pgftext[left,
+                    at=\pgfpoint{\pgf at circ@res at left+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+                % right
+                \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b-\pgf at circ@count at a+1\relax
+                \pgf at circ@do at wedge@right
+                \pgftext[right,
+                    at=\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+            \or % rotation -90
+                % left
+                \pgf at circ@count at c=\pgf at circ@count at a
+                \pgf at circ@do at wedge@left
+                \pgftext[top,
+                    at=\pgfpoint{\pgf at circ@res at left+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+                % right
+                \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b-\pgf at circ@count at a+1\relax
+                \pgf at circ@do at wedge@right
+                \pgftext[bottom,
+                    at=\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+            \or %rotation 180
+                % left
+                \pgf at circ@count at c=\pgf at circ@count at a
+                \pgf at circ@do at wedge@left
+                \pgftext[right,
+                    at=\pgfpoint{\pgf at circ@res at left+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+                % right
+                \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b-\pgf at circ@count at a+1\relax
+                \pgf at circ@do at wedge@right
+                \pgftext[left,
+                    at=\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+            \or % rotation +90
+                % left
+                \pgf at circ@count at c=\pgf at circ@count at a
+                \pgf at circ@do at wedge@left
+                \pgftext[bottom,
+                    at=\pgfpoint{\pgf at circ@res at left+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+                % right
+                \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b-\pgf at circ@count at a+1\relax
+                \pgf at circ@do at wedge@right
+                \pgftext[top,
+                    at=\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at temp}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step},
+                    rotate=\rot]{\mytext}
+            \fi
+            \advance\pgf at circ@count at a-1\relax%
+            \repeatpgfmathloop
+            % Now the up and down text
+            % up
+            \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf at circ@strut\ctikzvalof{multipoles/flipflop/tu}\space}
+            \pgf at circ@do at wedge@up
+            \ifcase\quadrant % rotation 0
+                \pgftext[top,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at up+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \or % rotation -90
+                \pgftext[right,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at up+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \or %rotation 180
+                \pgftext[bottom,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at up+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \or % rotation +90
+                \pgftext[left,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at up+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \fi
+            % down
+            \def\mytext{\ctikzvalof{multipoles/flipflop/fontud}\space\pgf at circ@strut\ctikzvalof{multipoles/flipflop/td}\space}
+            \pgf at circ@do at wedge@down
+            \ifcase\quadrant % rotation 0
+                \pgftext[bottom,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at down+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \or % rotation -90
+                \pgftext[left,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at down+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \or %rotation 180
+                \pgftext[top,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at down+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \or % rotation +90
+                \pgftext[right,
+                    at=\pgfpoint{0pt}{\pgf at circ@res at down+\pgf at circ@res at temp},
+                    rotate=\rot]{\mytext}
+            \fi
+            % external pins
+            \ifdim\pgf at circ@res at other>0pt
+            \pgfscope
+                \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+                \pgf at circ@count at a=\numpins\relax
+                \divide\pgf at circ@count at a by 2 \pgf at circ@count at b=\pgf at circ@count at a
+                \pgfmathloop%
+                \ifnum\pgf at circ@count at a>0
+                    % left side pins
+                    \pgf at circ@count at c=\pgf at circ@count at a
+                    %% we draw the pin only if it's defined either a text, a clock wedge or a not pin
+                    %% Or'ing tests in core TeX is tough
+                    \edef\@@or{0}
+                    % Just expand the key the minimum needed
+                    \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf at circ@count at c}}\edef\@@x{x}
+                    \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+                    \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf at circ@count at c}}
+                    \ifnum\@@tmp>0\edef\@@or{1}\fi
+                    \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf at circ@count at c}}
+                    \ifnum\@@tmp>0\edef\@@or{1}\fi
+                    \ifnum\@@or>0
+                        \pgfpathmoveto{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+                        \pgfpathlineto{\pgfpoint{\pgf at circ@res at left-\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+                        \pgfusepath{stroke}
+                    \fi
+                    % right side pins
+                    \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b-\pgf at circ@count at a+1\relax
+                    \edef\@@or{0}
+                    \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/t\the\pgf at circ@count at c}}\edef\@@x{x}
+                    \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+                    \edef\@@tmp{\ctikzvalof{multipoles/flipflop/c\the\pgf at circ@count at c}}
+                    \ifnum\@@tmp>0\edef\@@or{1}\fi
+                    \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf at circ@count at c}}
+                    \ifnum\@@tmp>0\edef\@@or{1}\fi
+                    % \typeout{TEST\space\@@tmp\space\@@x}
+                    \ifnum\@@or>0
+                        \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+                        \pgfpathlineto{\pgfpoint{\pgf at circ@res at right+\pgf at circ@res at other}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+                        \pgfusepath{stroke}
+                    \fi
+                    \advance\pgf at circ@count at a by -1\relax%
+                \repeatpgfmathloop
+                % up side
+                \edef\@@or{0}
+                \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/tu}}\edef\@@x{x}
+                \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cu}}
+                \ifnum\@@tmp>0\edef\@@or{1}\fi
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+                \ifnum\@@tmp>0\edef\@@or{1}\fi
+                % \typeout{TEST\space\@@tmp\space\@@x}
+                \ifnum\@@or>0
+                    \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+                    \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up+\pgf at circ@res at other}}
+                    \pgfusepath{stroke}
+                \fi
+                % down side
+                \edef\@@or{0}
+                \edef\@@tmp{x\unexpandedvalueof{/tikz/circuitikz/multipoles/flipflop/td}}\edef\@@x{x}
+                \ifx\@@tmp\@@x\else\edef\@@or{1}\fi
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/cd}}
+                \ifnum\@@tmp>0\edef\@@or{1}\fi
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+                \ifnum\@@tmp>0\edef\@@or{1}\fi
+                % \typeout{TEST\space\@@tmp\space\@@x}
+                \ifnum\@@or>0
+                    \pgfpathmoveto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+                    \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down-\pgf at circ@res at other}}
+                    \pgfusepath{stroke}
+                \fi
+            \endpgfscope
+            \fi % external pin width >0
+            %
+            % draw "inverting" circles on outputs, they must be last
+            %
+            \pgfscope
+                \pgfsetlinewidth{\ctikzvalof{multipoles/external pins thickness}\pgflinewidth}
+                \pgf at circ@count at a=\numpins\relax
+                \divide\pgf at circ@count at a by 2 \pgf at circ@count at b=\pgf at circ@count at a
+                \pgfmathloop%
+                \ifnum\pgf at circ@count at a>0
+                    % left side pins
+                    \pgf at circ@count at c=\pgf at circ@count at a
+                    \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf at circ@count at c}}
+                    \ifnum\@@tmp>0\pgfscope
+                        \pgftransformshift{\pgfpoint{\pgf at circ@res at left}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+                        \pgfnode{ocirc}{east}{}{\thisshape-N\the\pgf at circ@count at c}{\pgfusepath{stroke}}
+                    \endpgfscope\fi
+                    % right side pins
+                    \pgf at circ@count at c=\numexpr2*\pgf at circ@count at b-\pgf at circ@count at a+1\relax
+                    \edef\@@tmp{\ctikzvalof{multipoles/flipflop/n\the\pgf at circ@count at c}}
+                    \ifnum\@@tmp>0\pgfscope
+                        \pgftransformshift{\pgfpoint{\pgf at circ@res at right}{\pgf at circ@res at up+(\pgf at circ@dip at pin@shift-\the\pgf at circ@count at a)*\pgf at circ@res at step}}
+                        \pgfnode{ocirc}{west}{}{\thisshape-N\the\pgf at circ@count at c}{\pgfusepath{stroke}}
+                    \endpgfscope\fi
+                    \advance\pgf at circ@count at a by -1\relax%
+                \repeatpgfmathloop
+                % up side
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nu}}
+                \ifnum\@@tmp>0\pgfscope
+                    \pgftransformshift{\pgfpoint{0pt}{\pgf at circ@res at up}}
+                    \pgfnode{ocirc}{south}{}{\thisshape-Nu}{\pgfusepath{stroke}}
+                \endpgfscope\fi
+                % down side
+                \edef\@@tmp{\ctikzvalof{multipoles/flipflop/nd}}
+                \ifnum\@@tmp>0\pgfscope
+                    \pgftransformshift{\pgfpoint{0pt}{\pgf at circ@res at down}}
+                    \pgfnode{ocirc}{north}{}{\thisshape-Nd}{\pgfusepath{stroke}}
+                \endpgfscope\fi
+            \endpgfscope
+        }%
+        % \pgf at sh@s@<name of the shape here> contains all the code for the shape
+        % and is executed just before a node is drawn.
+        \pgfutil at g@addto at macro\pgf at sh@s at flipflop{%
+            % Start with the maximum pin number and go backwards.
+            \pgf at circ@count at a=\numpins\relax
+            \pgfmathloop%
+            \ifnum\pgf at circ@count at a>0
+                % we will create two anchors per pin: the "normal one" like `pin 1` for the
+                % electrical contact, and the "border one" like `bpin 1` for labels.
+                % they will coincide if `external pins width` is set to 0.
+                \expandafter\xdef\csname pgf at anchor@flipflop at pin\space\the\pgf at circ@count at a\endcsname{%
+                    \noexpand\pgf at circ@dippinanchor{\the\pgf at circ@count at a}{1}%
+                }
+                \expandafter\xdef\csname pgf at anchor@flipflop at bpin\space\the\pgf at circ@count at a\endcsname{%
+                    \noexpand\pgf at circ@dippinanchor{\the\pgf at circ@count at a}{0}%
+                }
+                \advance\pgf at circ@count at a by -1\relax%
+                \repeatpgfmathloop%
+            }%
+        }
+

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircshapes.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -30,6 +30,17 @@
         \pgfpointorigin
     }
 }
+%
+% Provision for changing opacity. Only expert use, see the manual.
+%
+\ctikzset{poles/open fill opacity/.initial=1.0}% better not touch it
+\tikzset{open poles opacity/.code={%
+        \ctikzset{poles/open fill opacity=#1}%
+}}
+\ctikzset{poles/full fill opacity/.initial=1.0}% better not touch it
+\tikzset{full poles opacity/.code={%
+        \ctikzset{poles/full fill opacity=#1}%
+}}
 
 %% Full terminal
 
@@ -65,7 +76,7 @@
         \pgfscope
             \pgfpathcircle{\pgfpointorigin}{\ctikzvalof{nodes width}*\pgf at circ@Rlen}
             \pgfsetcolor{\ctikzvalof{color}}
-            \pgfsetfillopacity{1.0}
+            \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
             \pgfusepath{draw,fill}
         \endpgfscope
 
@@ -72,7 +83,7 @@
     }
 }
 
-%% Empty terminal
+%% Empty round terminal
 
 \pgfdeclareshape{ocirc}{
     \anchor{center}{
@@ -117,7 +128,7 @@
             \else
                 \pgfsetfillcolor{\tikz at fillcolor}
             \fi
-            \pgfsetfillopacity{1.0}
+            \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
             \pgfusepath{draw,fill}
         \endpgfscope
 
@@ -171,7 +182,7 @@
             {\pgfpoint{-\pgf at circ@res at temp}{-\pgf at circ@res at temp}}
             {\pgfpoint{\pgf at circ@res at temp}{\pgf at circ@res at temp}}
             \pgfsetcolor{\ctikzvalof{color}}
-            \pgfsetfillopacity{1.0}
+            \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
             \pgfusepath{draw,fill}
         \endpgfscope
     }
@@ -234,7 +245,7 @@
             \else
                 \pgfsetfillcolor{\tikz at fillcolor}
             \fi
-            \pgfsetfillopacity{1.0}
+            \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
             \pgfusepath{draw,fill}
         \endpgfscope
     }
@@ -278,7 +289,7 @@
             {\pgfpoint{-\pgf at circ@res at temp}{-\pgf at circ@res at temp}}
             {\pgfpoint{\pgf at circ@res at temp}{\pgf at circ@res at temp}}
             \pgfsetcolor{\ctikzvalof{color}}
-            \pgfsetfillopacity{1.0}
+            \pgfsetfillopacity{\ctikzvalof{poles/full fill opacity}}% normally 1.0
             \pgfusepath{draw,fill}
         \endpgfscope
     }
@@ -331,7 +342,7 @@
             \else
                 \pgfsetfillcolor{\tikz at fillcolor}
             \fi
-            \pgfsetfillopacity{1.0}
+            \pgfsetfillopacity{\ctikzvalof{poles/open fill opacity}}% normally 1.0
             \pgfusepath{draw,fill}
         \endpgfscope
     }

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcirctripoles.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -2902,6 +2902,12 @@
         \pgf at x=-\ctikzvalof{tripoles/op amp/width}\pgf at circ@scaled at Rlen
         \pgf at x=.5\pgf at x
     }
+    \savedanchor\left{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/op amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at y=0pt
+    }
     \anchor{south}{
         \northwest
         \pgf at y=-\pgf at y
@@ -2912,12 +2918,11 @@
         \pgf at x=0pt
     }
     \savedanchor\left{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/op amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
         \pgf at y=0pt
     }
-    \anchor{leftedge}
-    {\left
-        \pgf at x = \ctikzvalof{tripoles/op amp/port width}\pgf at x
-    }
     \savedanchor\inOneFixed{%
         \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
         \pgf at y=\ctikzvalof{tripoles/op amp/height}\pgf at circ@scaled at Rlen
@@ -2985,12 +2990,46 @@
         \pgf at x=-\pgf at x
     }
 
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/op amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/op amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
     \anchor{south west}{ \northwest \pgf at y=-\pgf at y }
     \anchor{north east}{ \northwest \pgf at x=-\pgf at x }
     \anchor{north west}{ \northwest }
     \anchor{south east}{ \northwest \pgf at x=-\pgf at x \pgf at y=-\pgf at y }
 
-    \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+    \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
 
     \backgroundpath{
         \pgfsetcolor{\ctikzvalof{color}}
@@ -3024,7 +3063,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/op amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/op amp/input height}\pgf at circ@res at up}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/op amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/op amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/op amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
 				% Positive input terminal
         \pgfpathmoveto{\pgfpoint
@@ -3033,7 +3072,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/op amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/op amp/input height}\pgf at circ@res at down}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/op amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/op amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/op amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         % Output terminal
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
@@ -3056,6 +3095,12 @@
         \pgf at x=-\ctikzvalof{tripoles/en amp/width}\pgf at circ@scaled at Rlen
         \pgf at x=.5\pgf at x
     }
+    \savedanchor\left{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/en amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at y=0pt
+    }
     \anchor{south}{
         \northwest
         \pgf at y=-\pgf at y
@@ -3065,14 +3110,6 @@
         \northwest
         \pgf at x=0pt
     }
-    \savedanchor\left{%
-        \pgf at y=0pt
-    }
-    \anchor{leftedge}
-    {
-        \left
-        \pgf at x = \ctikzvalof{tripoles/en amp/port width}\pgf at x
-    }
     \savedanchor\inOneFixed{%
         \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
         \pgf at y=\ctikzvalof{tripoles/en amp/height}\pgf at circ@scaled at Rlen
@@ -3125,6 +3162,40 @@
         \left
         \pgf at x=-\pgf at x
     }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/en amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/en amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
     \anchor{south west}{ \northwest \pgf at y=-\pgf at y }
     \anchor{north east}{ \northwest \pgf at x=-\pgf at x }
     \anchor{north west}{ \northwest }
@@ -3156,7 +3227,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/en amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/en amp/input height}\pgf at circ@res at up}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/en amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/en amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/en amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
         \pgfpathmoveto{\pgfpoint
             {\pgf at circ@res at left}
@@ -3164,7 +3235,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/en amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/en amp/input height}\pgf at circ@res at down}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/en amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/en amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/en amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/en amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
         \pgfpathlineto{\pgfpoint{.7\pgf at circ@res at right}{0pt}}
@@ -3207,6 +3278,9 @@
         \northwest\pgf at x=0pt\relax
     }
     \savedanchor\left{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/fd op amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
         \pgf at y=0pt
     }
     \savedanchor\inOneFixed{%
@@ -3283,6 +3357,70 @@
         \pgf at y=-\ctikzvalof{tripoles/fd op amp/output height}\pgf at y
         \pgf at x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf at x
     }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/fd op amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/fd op amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    \anchor{bout +}{
+        \outline
+        \pgf at xa=\pgf at x\pgf at ya=\pgf at y
+        \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+            {\pgfpoint{\pgf at xa}{0pt}}
+            {\pgfpoint{0pt}{\pgf at ya}}
+    }
+    \anchor{bout -}{
+        \outline
+        \pgf at xa=\pgf at x\pgf at ya=\pgf at y
+        \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+            {\pgfpoint{\pgf at xa}{0pt}}
+            {\pgfpoint{0pt}{\pgf at ya}}
+        \pgf at y=-\pgf at y
+    }
+    \anchor{bout up}{
+        \northwest
+        \pgf at xa=\pgf at x\pgf at ya=\pgf at y
+        \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+            {\pgfpoint{\pgf at xa}{0pt}}
+            {\pgfpoint{0pt}{\pgf at ya}}
+    }
+    \anchor{bout down}{
+        \northwest
+        \pgf at xa=\pgf at x\pgf at ya=\pgf at y
+        \pgfpointlineattime{\ctikzvalof{tripoles/fd op amp/output height}}
+            {\pgfpoint{\pgf at xa}{0pt}}
+            {\pgfpoint{0pt}{\pgf at ya}}
+        \pgf at y=-\pgf at y
+    }
+    % end border anchors
     \anchor{west}{
         \left
     }
@@ -3298,6 +3436,7 @@
     \anchor{north east}{ \northwest \pgf at x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf at x }
     \anchor{north west}{ \northwest }
     \anchor{south east}{ \northwest \pgf at x=-\ctikzvalof{tripoles/fd op amp/port width}\pgf at x \pgf at y=-\pgf at y }
+    \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
     \backgroundpath{
         \pgfsetcolor{\ctikzvalof{color}}
 
@@ -3350,7 +3489,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/fd op amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/fd op amp/input height}\pgf at circ@res at up}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
         % Positive input terminal
         \pgfpathmoveto{\pgfpoint
@@ -3359,13 +3498,13 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/fd op amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/fd op amp/input height}\pgf at circ@res at down}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd op amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd op amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         % Negative output terminal label
-        \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf at circ@res at down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at oplusup$-$\else$+$\fi}
+        \pgftext[right, bottom, x=3pt, y=1pt, at=\pgfpoint{0pt}{0.425\pgf at circ@res at down}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at oplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         % Positive output terminal label
-        \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf at circ@res at up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at oplusup$+$\else$-$\fi}
+        \pgftext[right, top, x=3pt, y=-1pt, at=\pgfpoint{0pt}{0.425\pgf at circ@res at up}]{\ctikzvalof{tripoles/fd op amp/font} \ifpgf at circuit@oa at oplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
         \pgfsetrectcap
         \pgfusepath{draw}
@@ -3524,6 +3663,57 @@
         \outportfixed
         \pgf at y=-\pgf at y
     }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/fd inst amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/fd inst amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at x=-\pgf at x \pgf at y=0pt
+    }
+    \anchor{bout +}{
+        \outport
+        \pgf at ya=\pgf at y \leftedge \pgf at x=-\pgf at x \pgf at y=\pgf at ya
+    }
+    \anchor{bout -}{
+        \outport
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at x=-\pgf at x \pgf at y=\pgf at ya
+    }
+    \anchor{bout up}{
+        \outportfixed
+        \pgf at ya=\pgf at y \leftedge \pgf at x=-\pgf at x \pgf at y=\pgf at ya
+    }
+    \anchor{bout down}{
+        \outportfixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at x=-\pgf at x \pgf at y=\pgf at ya
+    }
+    % end border anchors
     %
     \anchor{west}{
         \left
@@ -3580,7 +3770,7 @@
             {\ctikzvalof{tripoles/fd inst amp/port width}\pgf at circ@res at left}
         {\ctikzvalof{tripoles/fd inst amp/input height}\pgf at circ@res at up}}
         %
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
         % input terminal down
         \pgfpathmoveto{\pgfpoint
@@ -3590,7 +3780,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/fd inst amp/port width}\pgf at circ@res at left}
         {\ctikzvalof{tripoles/fd inst amp/input height}\pgf at circ@res at down}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/fd inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/fd inst amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/fd inst amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         % output leads down and up
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{\ctikzvalof{tripoles/fd inst amp/output height}\pgf at circ@res at down}}
@@ -3692,6 +3882,40 @@
         \pgf at y=0pt
         \pgf at x=-\pgf at x
     }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/gm amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/gm amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
     \anchor{west}{
         \left
     }
@@ -3704,10 +3928,7 @@
     \anchor{north west}{ \northwest }
     \anchor{south east}{ \northwest \pgf at x=-\pgf at x \pgf at y=-\pgf at y }
 
-    \anchor{text}{\northwest
-        \pgf at x=\ctikzvalof{tripoles/op amp/port width}\pgf at x
-    \pgfpoint{-.5\wd\pgfnodeparttextbox+.25\pgf at x}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
-
+    \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
     \backgroundpath{
         \pgfsetcolor{\ctikzvalof{color}}
 
@@ -3743,7 +3964,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/gm amp/input height}\pgf at circ@res at up}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/gm amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/gm amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
 
         \pgfpathmoveto{\pgfpoint
@@ -3752,7 +3973,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at left}
             {\ctikzvalof{tripoles/gm amp/input height}\pgf at circ@res at down}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/gm amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/gm amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/gm amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
         \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/gm amp/port width}\pgf at circ@res at right}{0pt}} %
@@ -3883,6 +4104,40 @@
         \pgf at y=0pt
         \pgf at x=-\pgf at x
     }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/inst amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/inst amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
     \anchor{west}{
         \left
     }
@@ -3940,7 +4195,7 @@
             {\ctikzvalof{tripoles/inst amp/port width}\pgf at circ@res at left}
         {\ctikzvalof{tripoles/inst amp/input height}\pgf at circ@res at up}}
         %
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
         % Positive input terminal
         \pgfpathmoveto{\pgfpoint
@@ -3950,7 +4205,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/inst amp/port width}\pgf at circ@res at left}
         {\ctikzvalof{tripoles/inst amp/input height}\pgf at circ@res at down}}
-    \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+    \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/inst amp/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         % Output terminal
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
@@ -4028,17 +4283,16 @@
     % you can change that with the `ra pos` key (use 0.5 for one-R).
     \savedanchor\raOneFixed{%
         \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
-          \pgf at y=\ctikzvalof{tripoles/inst amp ra/height}\pgf at circ@scaled at Rlen
-          \pgf at y=.5\pgf at y
-          \pgf at y=\ctikzvalof{tripoles/inst amp ra/input height}\pgf at y
-          \pgf at x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf at circ@scaled at Rlen
-          \pgf at x=.5\pgf at x
+        \pgf at y=\pgf at circ@scaled at Rlen
+        \pgf at y=\ctikzvalof{tripoles/inst amp ra/ra pos}\pgf at y
+        \pgf at x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
     }
     \anchor{ra up}{
-        \inOneFixed
+        \raOneFixed
     }
     \anchor{ra down}{
-        \inOneFixed
+        \raOneFixed
         \pgf at y=-\pgf at y
     }
     \savedanchor\raOne{%
@@ -4111,6 +4365,58 @@
         \pgf at y=0pt
         \pgf at x=-\pgf at x
     }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/inst amp ra/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/inst amp ra/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bra up}{
+        \raOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bra down}{
+        \raOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bra-}{
+        \raOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bra+}{
+        \raOne
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
     \anchor{west}{
         \left
     }
@@ -4185,7 +4491,7 @@
             {\ctikzvalof{tripoles/inst amp ra/port width}\pgf at circ@res at left}
         {\ctikzvalof{tripoles/inst amp ra/input height}\pgf at circ@res at up}}
         %
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf at circuit@oa at iplusup$+$\else$-$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf at circ@res at up}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at plus\else\pgf at circ@ampli at minus\fi}
 
         % Positive input terminal
         \pgfpathmoveto{\pgfpoint
@@ -4195,7 +4501,7 @@
         \pgfpathlineto{\pgfpoint
             {\ctikzvalof{tripoles/inst amp ra/port width}\pgf at circ@res at left}
         {\ctikzvalof{tripoles/inst amp ra/input height}\pgf at circ@res at down}}
-        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf at circuit@oa at iplusup$-$\else$+$\fi}
+        \pgftext[left, at=\pgfpoint{\ctikzvalof{tripoles/inst amp ra/port width}\pgf at circ@res at left}{\ctikzvalof{tripoles/inst amp ra/input height}\pgf at circ@res at down}]{\ctikzvalof{tripoles/inst amp ra/font} \ifpgf at circuit@oa at iplusup\pgf at circ@ampli at minus\else\pgf at circ@ampli at plus\fi}
 
         % Output terminal
         \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
@@ -4240,8 +4546,18 @@
         \pgf at y=0pt
         \pgf at x=-\pgf at x
     }
+    \anchor{bin}{
+        \northwest
+        \pgf at y=0pt
+        \pgf at x=0.7\pgf at x
+    }
+    \anchor{bout}{
+        \northwest
+        \pgf at y=0pt
+        \pgf at x=-0.7\pgf at x
+    }
 
-    \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+    \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
 
     \backgroundpath{
         \pgfsetcolor{\ctikzvalof{color}}
@@ -4307,7 +4623,16 @@
         \pgf at y=\ctikzvalof{tripoles/plain amp/input height}\pgf at y
         \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
         \pgf at x=.5\pgf at x
+        \ifpgf at circuit@oa at iplusup\pgf at y=-\pgf at y\fi
     }
+    \savedanchor\inOneFixed{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at y=\ctikzvalof{tripoles/plain amp/height}\pgf at circ@scaled at Rlen
+        \pgf at y=.5\pgf at y
+        \pgf at y=\ctikzvalof{tripoles/plain amp/input height}\pgf at y
+        \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+    }
     \anchor{-}{
         \inOne
     }
@@ -4316,12 +4641,46 @@
         \pgf at y=-\pgf at y
     }
     \anchor{in up}{
-        \inOne
+        \inOneFixed
     }
     \anchor{in down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+    }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/plain amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin up}{
+        \inOneFixed
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bin down}{
+        \inOneFixed
+        \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b-}{
         \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{b+}{
+        \inOne
         \pgf at y=-\pgf at y
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
     }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
     \savedanchor\up{%
         \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
         \pgf at y=\ctikzvalof{tripoles/plain amp/height}\pgf at circ@scaled at Rlen
@@ -4351,7 +4710,7 @@
         \pgf at x=-\pgf at x
     }
 
-    \anchor{text}{\pgfpoint{-.5\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+    \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
 
     \backgroundpath{
         \pgfsetcolor{\ctikzvalof{color}}
@@ -4397,6 +4756,125 @@
     }
 }
 
+% plain amplifier, no symbols, one input
+\pgfdeclareshape{plain mono amp}
+{
+    \savedmacro{\ctikzclass}{\edef\ctikzclass{amplifiers}}
+    \saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf at x}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}}
+    \anchor{center}{\pgfpointorigin}
+    \savedanchor\northwest{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at y=\ctikzvalof{tripoles/plain amp/height}\pgf at circ@scaled at Rlen
+        \pgf at y=.5\pgf at y
+        \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+    }
+    \anchor{east}{ \northwest \pgf at y=0pt \pgf at x=-\pgf at x  }
+    \anchor{west}{ \northwest \pgf at y=0pt }
+    \anchor{south}{ \northwest \pgf at x=0pt \pgf at y=-\pgf at y }
+    \anchor{north}{ \northwest \pgf at x=0pt }
+    \anchor{south west}{ \northwest \pgf at y=-\pgf at y }
+    \anchor{north east}{ \northwest \pgf at x=-\pgf at x }
+    \anchor{north west}{ \northwest }
+    \anchor{south east}{ \northwest \pgf at x=-\pgf at x \pgf at y=-\pgf at y }
+    \savedanchor\left{%
+        \pgf at y=0pt
+    }
+    \savedanchor\inOne{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at y=0pt\relax
+    }
+    \anchor{in}{
+        \inOne
+    }
+    % support for border anchors
+    \savedanchor\leftedge{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at x = \ctikzvalof{tripoles/plain amp/port width}\pgf at x
+        \pgf at y=0pt
+    }
+    \anchor{leftedge}{\leftedge}
+    \anchor{rightedge}{\leftedge \pgf at x =-\pgf at x }
+    \anchor{bin}{
+        \inOne
+        \pgf at ya=\pgf at y \leftedge \pgf at y=\pgf at ya
+    }
+    \anchor{bout}{
+        \leftedge
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+    % end border anchors
+    \savedanchor\up{%
+        \pgfmathsetlength{\pgf at circ@scaled at Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf at circ@Rlen}
+        \pgf at y=\ctikzvalof{tripoles/plain amp/height}\pgf at circ@scaled at Rlen
+        \pgf at y=.5\pgf at y
+        \pgf at x=-\ctikzvalof{tripoles/plain amp/width}\pgf at circ@scaled at Rlen
+        \pgf at x=.5\pgf at x
+        \pgf at circ@res at up = \pgf at y
+        \pgf at circ@res at right = -\pgf at x
+        \pgf at circ@res at left = \pgf at x
+        \pgfpointlineattime{
+            \ctikzvalof{tripoles/plain amp/up pos}}{
+            \pgfpoint{
+            \ctikzvalof{tripoles/plain amp/port width}\pgf at circ@res at left}
+        {\pgf at circ@res at up}}
+        {\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf at circ@res at right}{0pt}}
+    }
+    \anchor{up}{
+        \up
+    }
+    \anchor{down}{
+        \up
+        \pgf at y=-\pgf at y
+    }
+    \anchor{out}{
+        \northwest
+        \pgf at y=0pt
+        \pgf at x=-\pgf at x
+    }
+
+    \anchor{text}{\pgfpoint{-.6\wd\pgfnodeparttextbox}{\dimexpr.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox}}
+
+    \backgroundpath{
+        \pgfsetcolor{\ctikzvalof{color}}
+
+        \northwest
+        \pgf at circ@res at up = \pgf at y
+        \pgf at circ@res at down = -\pgf at y
+        \pgf at circ@res at right = -\pgf at x
+        \pgf at circ@res at left = \pgf at x
+
+        \pgfscope
+            \pgf at circ@setlinewidth{tripoles}{\pgflinewidth}
+            \pgftransformxshift{\ctikzvalof{tripoles/plain amp/port width}\pgf at circ@res at left}
+            \pgf at circ@res at step=\pgf at circ@res at right
+            \advance\pgf at circ@res at step by -\pgf at circ@res at left
+            \pgf at circ@res at step=\ctikzvalof{tripoles/plain amp/port width}\pgf at circ@res at step
+
+            \pgfpathmoveto{\pgfpoint{\pgf at circ@res at step}{0pt}}
+            \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at up}}
+            \pgfpathlineto{\pgfpoint{0pt}{\pgf at circ@res at down}}
+            \pgfpathclose
+            \pgf at circ@draworfill
+        \endpgfscope
+        \pgfpathmoveto{\pgfpoint
+            {\pgf at circ@res at left}
+        {0pt}}
+        \pgfpathlineto{\pgfpoint
+            {\ctikzvalof{tripoles/plain amp/port width}\pgf at circ@res at left}
+        {0pt}}
+
+        \pgfpathmoveto{\pgfpoint{\pgf at circ@res at right}{0pt}}
+        \pgfpathlineto{\pgfpoint{\ctikzvalof{tripoles/plain amp/port width}\pgf at circ@res at right}{0pt}}
+
+        \pgfusepath{draw}
+    }
+}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% electromechanical device (motor/generator)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Modified: trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/generic/circuitikz/pgfcircutils.tex	2019-12-22 21:55:04 UTC (rev 53208)
@@ -57,11 +57,26 @@
 
 \def\pgf at circ@stripdecimals#1.#2\pgf at nil{#1}
 
-%%%%%%%
-%% flipping text
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% useful commands
 
-\def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
-\def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
-\def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
+\ifpgfutil at format@is at latex
+    %% flipping text
+    \def\ctikzflipx#1{\scalebox{-1}[1]{#1}}
+    \def\ctikzflipy#1{\scalebox{1}[-1]{#1}}
+    \def\ctikzflipxy#1{\scalebox{-1}[-1]{#1}}
+    % text mode overbar
+    % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+    \def\ctikztextnot#1{$\overline{\hbox{#1}}\m at th$}
+\else\ifpgfutil at format@is at plain
+    % text mode overbar
+    % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+    \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\else\ifpgfutil at format@is at context
+    % text mode overbar
+    % Thanks to @egreg https://tex.stackexchange.com/a/24133/38080
+    \def\ctikztextnot#1{$\overline{\hbox{#1}}$}
+\fi\fi\fi
 
+
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty	2019-12-22 21:54:47 UTC (rev 53207)
+++ trunk/Master/texmf-dist/tex/latex/circuitikz/circuitikz.sty	2019-12-22 21:55:04 UTC (rev 53208)
@@ -9,8 +9,8 @@
 
 \NeedsTeXFormat{LaTeX2e}
 
-\def\pgfcircversion{0.9.7}
-\def\pgfcircversiondate{2019/12/01}
+\def\pgfcircversion{1.0.0-pre1}
+\def\pgfcircversiondate{2019/12/22}
 
 \ProvidesPackage{circuitikz}%
 [\pgfcircversiondate{} The CircuiTikz circuit drawing package version \pgfcircversion]



More information about the tex-live-commits mailing list