配線交差問題

配線交差問題

CircuiTikz でワイヤー交差がどのように機能するかを理解しようとしています。有名な「Kink 交差」は見たことがありますが、まずは CircuiTikz が提供する交差の問題を解決してみたいと思います。

たとえば、CircuiTikz パッケージを使用して、その交差点に横断歩道を描くにはどうすればよいでしょうか。C から D への曲がり角の座標や相対位置がわからないと、どうなるでしょうか。

ここに画像の説明を入力してください

私が書いたコードは次のとおりです:

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

私にとって、マニュアルで推奨されているノード スタイルのフォーマットを使用しないことが重要です。これは、私が描いている回路がより大きくて複雑なため、次のように、ある座標から別の座標へのパス スタイルに似た交差点を描画したいからです。

\draw (1,2)node[circ]{c} to[crossing] |- (3,-2)node[circ]{d};

しかし、明らかにこれは機能しません。

ご覧のとおり、私はCircuiTikzの最新リリースを使用しました。ここで入手できます

答え1

問題は、(a) |- (b)2 つの別個のセクションとして処理され、to[crossing]1 つしか処理できないことです。

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

デモ


このバージョンは、Fractal から恥ずかしげもなく盗用していますが、 をcircに置き換えています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}

以下も使用できます:

\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]{};

答え2

Asはcircuitikz基本的にTiの(非常に良い)拡張であるZ、標準Tiを使用しない理由はまったくありませんこのための Z 構文。

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

ここに画像の説明を入力してください

関連情報