
Ich versuche zu verstehen, wie Drahtkreuzungen mit CircuiTikz funktionieren. Ich habe die berühmten „Knickkreuzungen“ gesehen, möchte aber zunächst versuchen, das Problem mit den von CircuiTikz bereitgestellten Kreuzungen zu lösen.
Beispiel: Wie würden Sie mit dem Paket CircuiTikz eine Kreuzung an dieser Kreuzung zeichnen? Ohne die Koordinaten oder die relative Position der Abbiegung von C nach D zu kennen.
Dies ist der Code, den ich geschrieben habe:
\documentclass[a4paper,12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[]{circuitikzgit}
\begin{document}
\begin{circuitikz}
\draw (0,0)node[circ]{a} -- (4,0)node[circ]{b};
\draw (1,2)node[circ]{c} |- (3,-2)node[circ]{d};
\end{circuitikz}
\end{document}
Mir ist es wichtig, nicht das im Handbuch vorgeschlagene Knotenformat zu verwenden, da ich hier einen größeren/komplexeren Schaltkreis zeichne und die Kreuzung ähnlich einem Pfad von einer Koordinate zur anderen zeichnen möchte, etwa:
\draw (1,2)node[circ]{c} to[crossing] |- (3,-2)node[circ]{d};
Aber offensichtlich funktioniert das nicht.
Wie Sie sehen, habe ich die letzte Version von CircuiTikz verwendet,hier können Sie es bekommen.
Antwort1
Das Problem besteht darin, dass (a) |- (b)
es als zwei separate Abschnitte verarbeitet wird und to[crossing]
nur einer verarbeitet werden kann.
\documentclass[border=10pt]{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
\draw (0,0)node[circ]{a} -- (4,0)node[circ]{b};
\draw (1,2)node[circ]{c} to[crossing] (1,2 |- 3,-2) -- (3,-2)node[circ]{d};
\end{circuitikz}
\end{document}
Diese Version klaut schamlos von Fractal, ersetzt aber das circ
durch ein jump crossing
.
\documentclass[border=10pt]{standalone}
\usepackage{circuitikz}
\usetikzlibrary{intersections}
\newlength{\crossing}
\makeatletter
\setlength{\crossing}{\ctikzvalof{bipoles/crossing/size}\pgf@circ@Rlen}
\makeatother
\begin{document}
\begin{circuitikz}
\draw[name path=ab] (0,0)node[circ]{a} -- (4,0)node[circ]{b};
\draw[name path=cd] (1,1)node[circ]{c} |- (3,-2)node[circ]{d};
\path[name intersections={of=ab and cd,by=e}];
\fill[color=white] (e) circle[radius=0.5\crossing];% erase plain crossing
\draw (e) node[jump crossing]{};
\end{circuitikz}
\end{document}
Man kann auch verwenden:
\path [name intersections={of=ab and cd,by=e}]
[fill=white] (e) circle[radius=0.5\crossing]% erase plain crossing
node[jump crossing,rotate=90]{};
Antwort2
As circuitikz
ist im Grunde eine (sehr gute) Erweiterung von TikZ, ich sehe absolut keine Gründe, warum ich nicht Standard-Ti verwenden solltekZ-Syntaxen hierfür.
\documentclass[a4paper,12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{circuitikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{circuitikz}
\draw[name path=ab] (0,0)node[circ]{a} -- (4,0)node[circ]{b};
\draw[name path=cd] (1,2)node[circ]{c} |- (3,-2)node[circ]{d};
\path[name intersections={of=ab and cd,by=e}] (e) node[circ] {e};
\end{circuitikz}
\end{document}