Circuitikz 逆变器气泡

Circuitikz 逆变器气泡

我用它circuitikz来创建一些逻辑门图。在我的课程中,我们使用“反转气泡”作为一种方便的捷径,而不是到处画反相器。如下图所示的输入 A 和 B:

在此处输入图片描述

是否可以使用 创建这些气泡circuitikz?文档中没有说明。

答案1

普通 TikZ(不是)附带的逻辑门circuitikz具有该功能。您可以使用设置输入的状态inputs=<string of n and i>,其中n代表正常输入,i代表反转。以下是使用的示例inputs=ni

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.logic.US} 

\begin{document}
\begin{tikzpicture}[circuit logic US]
\node (a) [and gate, inputs=ni] {};
\draw (a.input 1) -- (a.input 1 -| -1,0)
 (a.input 2) -- (a.input 2 -| -1,0)
 (a.output) -- ++(0.5,0);
\end{tikzpicture}%
\end{document}

答案2

对于真正需要 circuittikz 解决方案的人来说,这里有一个可以在正确位置绘制圆圈的 hacky 解决方案:

\draw (cfdandTMoB.in 2) [xshift=0.12cm,thick,fill=white]circle (0.1cm);

完整示例:

示例电路

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}

\makeatletter%
%
%

\begin{document}

\ctikzset{/tikz/circuitikz/bipoles/buffer/width = 0.75}
\ctikzset{/tikz/circuitikz/bipoles/buffer/height = 0.75}
\begin{circuitikz}

\draw
(0,-1) node[buffer] (cfdT) {}
(0,-2) node[buffer] (cfdM) {}
(0,-3) node[buffer] (cfdB) {}
(2.5,-1) node[and port] (cfdandTM) {}
(2.5,-3) node[and port] (cfdandMB) {}
(4.5,-1.5) node[and port] (cfdandTMoB) {}
(4.5,-2.5) node[and port] (cfdandMBoT) {}
(cfdT.out) |- (cfdandTM.in 1)
(cfdM.out) -- (cfdandTM.in 2)
(cfdM.out) -- (cfdandMB.in 1)
(cfdB.out) |- (cfdandMB.in 2)
(cfdandTM.out) -- (cfdandTMoB.in 1)
(cfdB.out) -- (1.5,-1.8) -- (cfdandTMoB.in 2)  {}
(cfdT.out) -- (1.5,-2.2) -- (cfdandMBoT.in 1)
(cfdandMB.out) -- (cfdandMBoT.in 2)
;

\newcommand{\inlabel}[1]{node[label={[label distance=0.0cm]90:#1}] {}}
\draw (cfdT.in) to [short,-o](-1.5,-1) \inlabel{T}
(cfdM.in) to [short,-o](-1.5,-2) \inlabel{M}
(cfdB.in) to [short,-o](-1.5,-3) \inlabel{B};

\draw (cfdandTMoB.in 2) [xshift=0.12cm,thick,fill=white]circle (0.1cm);
\draw (cfdandMBoT.in 1) [xshift=0.12cm,thick,fill=white]circle (0.1cm);

\end{circuitikz}

\end{document}

相关内容