我正在为明天的作业画一个简单的电路。代码如下:
\begin{circuitikz}
% \draw[help lines] (-3,-3) grid (5,5);
\node[nand port] (nand0) at (0,0) {};
\node[or port] (or0) at (0,3) {};
\node[ieeestd buffer port, scale=.8] (tri0) at (3,3) {};
\draw (or0.in 2) -- ++(-.5,0)
to[inline not, *-] ($(nand0.in 1) + (-.5,0)$)
-- (nand0.in 1);
\draw (or0.in 1) -- ++(-1.5,0) node[left] {$a$};
\draw (or0.in 2) -- ++(-1.5,0) node[left] {$b$};
\draw (nand0.in 2) -- ++(-1.5,0) node[left] {$c$};
\draw (tri0.in 1) -- (or0.out);
\draw (tri0.out) -- ++(1,0) node[right] {$F$};
\draw (tri0.down) |- (nand0.out);
\end{circuitikz}
太棒了!但是,等等。那个非门看起来有点大。让我们把它缩小一点。我只做了一个改动,对内联非门那行。
to[inline not, *-, scale=.8]
现在,我得到了这个结果:
我猜我之前读过的那本精心编写的手册中应该有关于内联元素旋转的讨论。但是,我现在找不到它。
有人能帮忙吗?为什么我所做的只是缩放它,但非门会歪斜并且“点”会错位?我应该以其他方式缩放它吗?
感谢您的帮助!
答案1
端口的大小大致符合 IEEE 标准,但我可以理解简单的端口看起来有点太大。
问题是你不能在命令scale
中使用to
(实际上不是在circuitikz
也不是在Ti*k*Z
)。手册第 35 页,在组件大小:
您可以使用类别选项:
to[inline not, *-, logic ports/scale=0.8]
以获得您想要的内容。不过,我建议您创建自己的样式并使用它们:
\documentclass[border=10pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[siunitx, RPvoltages]{circuitikz}
\ctikzset{logic ports=ieee}
\tikzset{small buffer/.style={%
ieeestd buffer port, /tikz/circuitikz/logic ports/scale=.8},
small inline not/.style={%
inline not, /tikz/circuitikz/logic ports/scale=0.8}
}
\begin{document}
\begin{tikzpicture}[]
\node[nand port] (nand0) at (0,0) {};
\node[or port] (or0) at (0,3) {};
\node[small buffer] (tri0) at (3,3) {};
\draw (or0.in 2) -- ++(-.5,0)
to[small inline not] ($(nand0.in 1) + (-.5,0)$)
-- (nand0.in 1);
\draw (or0.in 1) -- ++(-1.5,0) node[left] {$a$};
\draw (or0.in 2) -- ++(-1.5,0) node[left] {$b$};
\draw (nand0.in 2) -- ++(-1.5,0) node[left] {$c$};
\draw (tri0.in 1) -- (or0.out);
\draw (tri0.out) -- ++(1,0) node[right] {$F$};
\draw (tri0.down) |- (nand0.out);
\end{tikzpicture}
\end{document}
PS:下次,请发布完整的、可编译的 LaTeX 代码,而不仅仅是片段……