Estou tentando diagramar uma abordagem simples para um circuito de teste de igualdade para duas entradas de quatro bits.Em vez de os fios estarem em um ângulo oblíquo para conectar os dois pontos de entrada e saída do portão, posso forçar as linhas a serem puramente verticais e laterais com ângulos retos conforme necessário para conectar os pontos. Preciso fazer isso mantendo a capacidade de rotular os fios conforme mostrado. Quando fiz o diagrama pela primeira vez, os fios estavam como eu esperava com o '-|' argumento ou operador no lugar de 'to', mas não consegui encontrar uma maneira de instanciar fios com esse método para aceitar rótulos. Muito obrigado pela sua ajuda e consideração.
\documentclass[12pt,letterpaper]{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,0) node[xor port] (g7) {$g_7$}
(0,2) node[xor port] (g6) {$g_6$}
(0,4) node[xor port] (g5) {$g_5$}
(0,6) node[xor port] (g4) {$g_4$}
(3,1) node[or port] (g3) {$g_3$}
(3,5) node[or port] (g2) {$g_2$}
(6,3) node[or port] (g1) {$g_1$}
(g4.out) to [short,l=${w_4}$] (g2.in 1)
(g5.out) to [short,l=${w_5}$] (g2.in 2)
(g6.out) to [short,l=${w_6}$] (g3.in 1)
(g7.out) to [short,l=${w_7}$] (g3.in 2)
(g2.out) to [short,l=${w_2}$] (g1.in 1)
(g3.out) to [short,l=${w_3}$] (g1.in 2)
(g1.out) node[anchor=west] {$output$}
(g4.in 1) node[anchor=east] {$a_3$}
(g4.in 2) node[anchor=east] {$b_3$}
(g5.in 1) node[anchor=east] {$a_2$}
(g5.in 2) node[anchor=east] {$b_2$}
(g6.in 1) node[anchor=east] {$a_1$}
(g6.in 2) node[anchor=east] {$b_1$}
(g7.in 1) node[anchor=east] {$a_0$}
(g7.in 2) node[anchor=east] {$b_0$}
;\end{circuitikz}
\end{document}
Responder1
Você pode colocar um rótulo em uma linha adicionando um nó. Consulte a seção 17.8 (Colocando nós em uma linha ou curva explicitamente) doo manual pgf/tikz.
\documentclass[12pt,letterpaper]{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,0) node[xor port] (g7) {$g_7$}
(0,2) node[xor port] (g6) {$g_6$}
(0,4) node[xor port] (g5) {$g_5$}
(0,6) node[xor port] (g4) {$g_4$}
(3,1) node[or port] (g3) {$g_3$}
(3,5) node[or port] (g2) {$g_2$}
(6,3) node[or port] (g1) {$g_1$}
(g4.out) -| (g2.in 1) node[midway, above] {$w_4$}
(g5.out) -| (g2.in 2) node[midway, below] {$w_5$}
(g6.out) -| (g3.in 1) node[midway, above] {$w_6$}
(g7.out) -| (g3.in 2) node[midway, below] {$w_7$}
(g2.out) -| (g1.in 1) node[midway, above] {$w_2$}
(g3.out) -| (g1.in 2) node[midway, below] {$w_3$}
(g1.out) node[anchor=west] {$output$}
(g4.in 1) node[anchor=east] {$a_3$}
(g4.in 2) node[anchor=east] {$b_3$}
(g5.in 1) node[anchor=east] {$a_2$}
(g5.in 2) node[anchor=east] {$b_2$}
(g6.in 1) node[anchor=east] {$a_1$}
(g6.in 2) node[anchor=east] {$b_1$}
(g7.in 1) node[anchor=east] {$a_0$}
(g7.in 2) node[anchor=east] {$b_0$}
;\end{circuitikz}
\end{document}
Neste exemplo usei midway
, mas existem outras teclas para ajustar a posição do rótulo.
Responder2
Você pode \draw
linhas com |-
e -|
.
Aqui está um extrato do seu exemplo:
\documentclass[12pt,letterpaper]{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,4) node[xor port] (g5) {$g_5$}
(0,6) node[xor port] (g4) {$g_4$}
(3,5) node[or port] (g2) {$g_2$}
(g4.in 1) node[anchor=east] {$a_3$}
(g4.in 2) node[anchor=east] {$b_3$}
(g5.in 1) node[anchor=east] {$a_2$}
(g5.in 2) node[anchor=east] {$b_2$}
(g4.out) |- node[above right]{${w_4}$} (g2.in 1)
(g5.out) |- node[below right]{${w_3}$} (g2.in 2)
;
\end{circuitikz}
\end{document}