Rein vertikale und seitliche Drähte für circuitikz

Rein vertikale und seitliche Drähte für circuitikz

Ich versuche, einen einfachen Ansatz für eine Schaltung zur Gleichheitsprüfung für zwei 4-Bit-Eingänge zu skizzieren.Schaltplan erstellt aus dem folgenden CodeAnstatt die Drähte in einem schrägen Winkel zu führen, um die beiden Punkte der Gate-Eingänge und -Ausgänge zu verbinden, kann ich die Linien so zwingen, dass sie rein vertikal und seitlich mit rechten Winkeln verlaufen, um die Punkte zu verbinden. Ich muss dies tun und gleichzeitig die Möglichkeit beibehalten, die Drähte wie gezeigt zu beschriften. Als ich das Diagramm zum ersten Mal erstellte, waren die Drähte so, wie ich es mir erhofft hatte, mit dem Argument oder Operator „-|“ anstelle von „to“, aber ich konnte keine Möglichkeit finden, Drähte mit dieser Methode zu instanziieren, um Beschriftungen zu akzeptieren. Vielen Dank für Ihre Hilfe und Rücksichtnahme.

\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}

Antwort1

Sie können eine Beschriftung auf einer Linie platzieren, indem Sie einen Knoten hinzufügen. Siehe Abschnitt 17.8 (Explizites Platzieren von Knoten auf einer Linie oder Kurve) vondas pgf/tikz-Handbuch.

\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}

In diesem Beispiel habe ich verwendet midway, aber es gibt auch andere Tasten, um die Position des Etiketts fein abzustimmen.

Antwort2

Sie können \drawZeilen mit |-und verwenden -|.

Hier ein Auszug aus Ihrem Beispiel:

\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}

Bildbeschreibung hier eingeben

verwandte Informationen