我用它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}