我只是一个学生,想自学 LaTeX,让家庭作业看起来比手写好看得多!所以我已经学会了用 CircuiTikz 绘制这些简单的逻辑门,但我很难学会如何旋转我的非门,以及如何清理诸如非门内部有线而不是在尖端之类的东西,以及让或门的传出线一直延伸到我右边的复合语句。我试图添加第二个非门,从“r”到第一个与门(连接到“p”的那个)。我也不知道为什么第一行“第 1.2 章:42”要用所有空格填满整行,我不想要这样。
这是代码片段。如能得到任何帮助,我将不胜感激!
\documentclass{minimal}
\usepackage{CircuiTikz}
\begin{document}
\begin{enumerate}
\item Chapter 1.2: 42\linebreak\linebreak
\begin{circuitikz} \draw
% Create the gates.
(3,2) node[and port] (and1) {}
(5,-1) node[and port] (and2) {}
(7,1) node[or port] (or1) {}
(0.5,0.5) node[rotate=90,not port] (not1) {}
(2,-2) node[not port] (not2) {}
%Create the proprositional variables, and final output.
(and1.in 1) node[left=2cm](p) {p}
(and1.in 2) node[below left=2cm](r) {r}
(r) node[below=2cm](q) {q}
(or1.out) node[right=0.2cm](answer) {$(p \land r) \lor (\neg r \land
\neg q)$}
%Feed AND gates to the OR gate.
(and1.out) -| (or1.in 1)
(and2.out) -| (or1.in 2)
%Feed not1 to and1.
(not1.out) -| (and1.in 2)
%Feed p and r to the first AND gate.
(p) -| (and1.in 1)
%Feed r into and1 via not1.
(r) -| (not1.in)
%Feed r and q (through NOT gate) to second AND gate.
(r) -| (and2.in 1)
(q) -| (not2.in)
(not2) -| (and2.in 2);
\end{circuitikz}
\end{enumerate}
\end{document}
更新
我已经弄清楚了如何旋转我的门,但我仍然不明白为什么其中一个非门(名为 not2)的线是插在里面而不是连接在尖端的。我还想学习如何在“r”的传出线分叉处添加一个点来表示它正在分叉。
答案1
- 逻辑门是 circuitikz 中的节点。您可以使用
rotate=<angle>
选项来旋转任何节点。 - 你是从
not2
而不是画的not2.out
。这就是为什么非门里面有一条线 - 可以将点放置在带有
*-*
或o-o
选项的组件的任意一端。
平均能量损失
\documentclass{minimal}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
% Create the gates.
(3,2) node[and port] (and1) {}
(5,-1) node[and port] (and2) {}
(7,1) node[or port] (or1) {}
(0.5,0.5) node[rotate=90,not port] (not1) {}
(2,-2) node[not port] (not2) {}
%Create the proprositional variables, and final output.
(and1.in 1) node[left=2cm](p) {p}
(and1.in 2) node[below left=2cm](r) {r}
(r) node[below=2cm](q) {q}
(or1.out) node[right=0.2cm](answer) {$(p \land r) \lor (\neg r \land
\neg q)$}
%Feed AND gates to the OR gate.
(and1.out) -| (or1.in 1)
(and2.out) -| (or1.in 2)
%Feed not1 to and1.
(not1.out) |- (and1.in 2)
%Feed p and r to the first AND gate.
(p) -| (and1.in 1)
%Feed r into and1 via not1.
(0.5,-0.5) to[short,*-] (not1.in)
%Feed r and q (through NOT gate) to second AND gate.
(r) -| (and2.in 1)
(q) -| (not2.in)
(not2.out) -| (and2.in 2);
\end{circuitikz}
\end{document}