У меня есть код LaTeX, использующийCircuitTikZ
пакет для рисования простой логической схемы, но я не уверен, что мой код — правильный способ сделать то, что я пытаюсь сделать. По сути, у меня есть два входа, каждый из которых должен идти на два вентиля. Вот как выглядит код:
\begin{circuitikz} \draw
(2,1) node[or port] (myor) {}
(2,-1) node[nand port] (mynand) {}
(4,0) node[and port] (myand) {}
(myor.out) -| (myand.in 1)
(mynand.out) -| (myand.in 2)
(0,1) |- (myor.in 1)
(0,1) |- (mynand.in 1)
(-1,0) to[short, -*] (0,0)
(0,-1) -| (myor.in 2)
(0,-1) -| (mynand.in 2)
(-1,-1) to[short, -*] (0.62,-1)
;\end{circuitikz}
Выход:
Вывод выглядит правильно, но мне не очень нравится последняя строка, где я рисую (0.62,-1)
. Есть ли более чистый способ сделать это?
решение1
Да, ваша схема в порядке. Другой вариант нарисовать окончательные линии — разместить координаты вдоль пути, а затем использовать эти координаты:
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(2,1) node[or port] (myor) {}
(2,-1) node[nand port] (mynand) {}
(4,0) node[and port] (myand) {}
(myor.out) -| (myand.in 1)
(mynand.out) -| (myand.in 2)
(myor.in 1) -- ++(-0.5,0) |- (mynand.in 1) coordinate[pos=0.33] (a)
(a) to[short, *-] (-1,0|-a)
(myor.in 2) |- (mynand.in 2) coordinate[pos=0.43] (b)
(b) to[short, *-] (-1,0|-b)
;\end{circuitikz}
\end{document}
Обратите внимание, что, например,
(0,1) |- (myor.in 1)
(0,1) |- (mynand.in 1)
(-1,0) to[short, -*] (0,0)
был заменен на
(myor.in 1) -- ++(-0.5,0) |- (mynand.in 1) coordinate[pos=0.33] (a)
(a) to[short, *-] (-1,0|-a)
и
(0,-1) -| (myor.in 2)
(0,-1) -| (mynand.in 2)
(-1,-1) to[short, -*] (0.62,-1)
был заменен на
(myor.in 2) |- (mynand.in 2) coordinate[pos=0.43] (b)
(b) to[short, *-] (-1,0|-b)
и в обоих случаях я использовал перпендикулярную систему координат, где, например, (-1,0|-b)
означает координату x (-1,0)
и координату y (b)
.