diff options
Diffstat (limited to 'graphics/pgf/contrib/circuitikz/doc')
-rw-r--r-- | graphics/pgf/contrib/circuitikz/doc/changelog.tex | 30 | ||||
-rw-r--r-- | graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf | bin | 15492 -> 17620 bytes | |||
-rw-r--r-- | graphics/pgf/contrib/circuitikz/doc/circuitikz-context.tex | 3 | ||||
-rw-r--r-- | graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf | bin | 815539 -> 845023 bytes | |||
-rw-r--r-- | graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex | 261 |
5 files changed, 283 insertions, 11 deletions
diff --git a/graphics/pgf/contrib/circuitikz/doc/changelog.tex b/graphics/pgf/contrib/circuitikz/doc/changelog.tex index 463e72e5c6..a64775720a 100644 --- a/graphics/pgf/contrib/circuitikz/doc/changelog.tex +++ b/graphics/pgf/contrib/circuitikz/doc/changelog.tex @@ -5,6 +5,34 @@ full list of changes. \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 @@ full list of changes. 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. diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf Binary files differindex 4149774548..34f8ec98c0 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.pdf diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.tex b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.tex index aa752551d4..4b6ee8db0d 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.tex +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikz-context.tex @@ -15,7 +15,8 @@ A simple example to test the installation. 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 diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf Binary files differindex 4de70f73d5..1d2dc85a79 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf diff --git a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex index e34526c6f8..af05238cc1 100644 --- a/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex +++ b/graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.tex @@ -209,6 +209,8 @@ instead of \texttt{circuitikz}. This is also advantageous for ``future resilienc 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 @@ You can check the used version at your local installation using the macro \verb! \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 @@ Feel free to load the package with your own cultural options: \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 @@ Mirroring and flipping of node components is obtained by using the \TikZ\ keys \ \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 @@ Basically they are the same as the normal \texttt{npn} and \texttt{pnp}, and the \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 @@ You can use the \texttt{body ...} anchors to add more or different things to the \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 @@ Remember that the default \texttt{pgfkeys} directory is \texttt{/tikz} for nodes \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 @@ The fully differential op amp defines two outputs: ;\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 @@ The instrumentation amplifier with resistance terminals (\texttt{inst amp ra}) d ;\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 @@ All these amplifier have the possibility to flip input and output (if needed) po 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@iphc.cnrs.fr}) there are several possible customization for the European-style amplifiers. @@ -3749,7 +3805,170 @@ In the case of \textsc{not}, there are only \texttt{in} and \texttt{out} (althou ;\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)} @@ -4940,6 +5159,30 @@ There are several predefined shorthand as the above; in the following pages you \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. |