서로 다른 모양의 두 앵커를 수평으로 연결하기

서로 다른 모양의 두 앵커를 수평으로 연결하기

저는 두 개의 앵커( 및 ) myComponent1를 포함하는 와 하나의 앵커( )를 포함하는 두 가지 모양을 정의했습니다 . 수평 전선을 사용하여 직접 연결 하는 방법 에 대한 지침을 찾고 있습니다 . 아래에서 해당 출력과 함께 내 LaTeX 코드를 찾을 수 있습니다. 마지막으로 원하는 결과를 포함시켰습니다.PinAPinBmyComponent2PinAPinAmyComponent1PinAmyComponent2

암호:

\documentclass{article}

\usepackage{circuitikz}

%% defining My Component 1
\pgfdeclareshape{myComponent1}{
    
    \anchor{center}{\pgfpointorigin}
    
    \savedanchor\PinA{\pgfpoint{60}{50}}
    \anchor{PinA}{\PinA}
    \savedanchor\PinB{\pgfpoint{60}{-50}}
    \anchor{PinB}{\PinB}
    
    \foregroundpath{
        
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        
        \pgftext[right, at={\PinA}]{PIN A}
        \pgftext[right, at={\PinB}]{PIN B}
    }
}

%% defining My Component 2
\pgfdeclareshape{myComponent2}{
    
    \anchor{center}{\pgfpointorigin}
    
    \savedanchor\PinA{\pgfpoint{-60}{0}}
    \anchor{PinA}{\PinA}
    
    \foregroundpath{
        
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        
        \pgftext[left, at={\PinA}]{PIN A}
    }
}

\begin{document}
    
    \begin{circuitikz}

        \draw (0,0) node[myComponent1, blue] (C1) {};
        \draw (8,5) node[myComponent2, red]  (C2) {};
        
        \draw (C1.PinA) -- (C2.PinA);
    
    \end{circuitikz}
    
\end{document}

산출:

여기에 이미지 설명을 입력하세요

요망되는 결과:

여기에 이미지 설명을 입력하세요

답변1

두 도형의 수직 위치가 서로 다른 앵커가 있는 경우 (분명히) 수평선으로 연결할 수 없습니다.

할 수 있는 작업은 첫 번째 모양을 그리고 수평선을 그린 다음 앵커를 사용하여 두 번째 모양을 추가하는 것입니다.

 \draw (0,0) node[myComponent1, blue] (C1) {};
 \draw (C1.PinA) -- ++(3,0) node[myComponent2, red, anchor=PinA] (C2) {};

여기에 이미지 설명을 입력하세요

어쨌든, 그것은 에 특별한 것이 없습니다 circuitikz. 그것은 평범한 Ti입니다.케이Z... 완전한 MWE:

\documentclass{article}
\usepackage{tikz}

%% defining My Component 1
\pgfdeclareshape{myComponent1}{
    \anchor{center}{\pgfpointorigin}
    \savedanchor\PinA{\pgfpoint{60}{50}}
    \anchor{PinA}{\PinA}
    \savedanchor\PinB{\pgfpoint{60}{-50}}
    \anchor{PinB}{\PinB}
    \foregroundpath{
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        \pgftext[right, at={\PinA}]{PIN A}
        \pgftext[right, at={\PinB}]{PIN B}
    }
}
%% defining My Component 2
\pgfdeclareshape{myComponent2}{
    \anchor{center}{\pgfpointorigin}
    \savedanchor\PinA{\pgfpoint{-60}{0}}
    \anchor{PinA}{\PinA}
    \foregroundpath{
        \pgfpathrectanglecorners{\pgfpoint{-60}{-100}}{\pgfpoint{60}{100}}
        \pgfusepath{draw}
        \pgftext[left, at={\PinA}]{PIN A}
    }
}

\begin{document}
\begin{tikzpicture}
    \draw (0,0) node[myComponent1, blue] (C1) {};
    \draw (C1.PinA) -- ++(3,0) node[myComponent2, red, anchor=PinA] (C2) {};
\end{tikzpicture}
\end{document}

관련 정보