
Mi objetivo es tener un diagrama que se vea así:
Me gustaría lograr esto con el paquete circuitoikz. Hasta ahora ya he escrito este fragmento de código:
\begin{circuitikz} \draw
(0,2) node[and port] (and) {}
(0,0) node[xor port] (xor) {}
(and.in 1) node[above left=.5cm](a) {$a_0$}
(and.in 2) node[below left = .5cm](b) {$b_0$}
(and.out) node[below](s) {$s_1$}
(xor.out) node[below](s) {$s_0$}
(a) -| (and.in 1)
(b) -| (and.in 2)
(a) -| (xor.in 1)
(b) -| (xor.in 2);
\end{circuitikz}
Lo que lleva a este resultado:
Estaría más que feliz si pudieras ayudarme a hacer que la segunda imagen se parezca más a la primera. ¡Muchas gracias!
Editar: logré obtener una imagen que es un poco mejor cambiando la posición en la tercera línea de (0,0) a (2,2)
Dado que esto es solo un truco sucio que no se adapta a diagramas más complejos, ¡aún así agradecería ayuda para una solución más general!
Respuesta1
El cambio principal es tener coordenadas x separadas para las líneas verticales, cambiando, por ejemplo
(a) -| (and.in 1)
(a) -| (xor.in 1)
a
(a) -- +(0.5,0) |- (and.in 1)
(a) -- +(0.5,0) |- (xor.in 1)
Para que el circuito se parezca aún más al circuito de muestra, es posible que desee a_0
bajar.
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,2) node[and port] (and) {}
(0,0) node[xor port] (xor) {}
(and.in 1) node[below left=.5cm](a) {$a_0$}
(and.in 2) node[below left = .5cm](b) {$b_0$}
(and.out) node[below](s) {$s_1$}
(xor.out) node[below](s) {$s_0$}
(a) -- +(0.5,0) |- (and.in 1)
(b) -| (and.in 2)
(a) -- +(0.5,0) |- (xor.in 1)
(b) -| (xor.in 2);
\end{circuitikz}
\end{document}