Fios puramente verticais e laterais para circuitikz

Fios puramente verticais e laterais para circuitikz

Estou tentando diagramar uma abordagem simples para um circuito de teste de igualdade para duas entradas de quatro bits.Diagrama de circuito gerado a partir do código a seguirEm 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 \drawlinhas 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}

insira a descrição da imagem aqui

informação relacionada