Я пытаюсь нарисовать схему простого подхода к проверке равенства двух четырехбитных входов.Вместо того, чтобы провода располагались под косым углом для соединения двух точек входов и выходов вентилей, могу ли я заставить линии быть чисто вертикальными и боковыми с прямыми углами, необходимыми для соединения точек? Мне нужно сделать это, сохранив возможность маркировать провода, как показано. Когда я впервые сделал схему, провода были такими, как я и надеялся, с аргументом или оператором '-|' вместо 'to', но я не смог найти способ создать экземпляры проводов с помощью этого метода, чтобы принимать метки. Большое спасибо за вашу помощь и внимание.
\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}
решение1
Вы можете разместить метку на линии, добавив узел. См. раздел 17.8 (Размещение узлов на линии или кривой явно)руководство 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}
В этом примере я использовал midway
, но есть и другие клавиши для точной настройки положения метки.
решение2
Вы можете использовать \draw
строки с |-
и -|
.
Вот выдержка из вашего примера:
\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}