TikZ를 사용한 펜로즈 그래픽 표기법

TikZ를 사용한 펜로즈 그래픽 표기법

TikZ를 사용하여 이와 같은 텐서 네트워크를 어떻게 그릴 수 있나요? 여기에 이미지 설명을 입력하세요

아마도 거기에 몇 가지 단어를 추가할 수도 있을 것입니다.

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

나는 LaTeX에 매우 익숙하지만 여전히 TikZ에 대해서는 멍청합니다. 나는 이런 종류의 형태를 광범위하게 그릴 것이며, 그에 대한 템플릿을 알고 싶습니다. 감사해요!

편집하다

이것이 제가 지금까지 한 일입니다. 지정된 경계에 선을 연결하는 방법, 노드를 배치하는 올바른 방법(상대 위치 또는 좌표?), 지정된 위치에 토큰을 배치하는 방법을 잘 모르겠습니다.

\documentclass[tikz,multi,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}
[
    triangle/.style = {regular polygon, regular polygon sides=3, draw=black, fill=green!60!black, inner sep=0pt, minimum size=2cm},
    border rotated/.style = {shape border rotate=180},
    rectangular/.style={fill=brown!80!black, rectangle, rounded corners = 5pt, draw=black, inner sep=0pt, minimum width=4.5cm, minimum height=1cm},
    square/.style={fill=blue!60!black, rectangle, draw=black, inner sep=0pt, minimum size = 1cm}
]

    \node[square] (1) {};
    \node[triangle, border rotated] (2) [below left = 1cm  of 1] {};
    \node[triangle, border rotated] (3) [below right = 1cm  of 1] {};
    \node[rectangular] (4) [below=3cm of 1] {};
    \node[square] (7) [below = 7cm of 1]{};
    \node[triangle] (5) [above left = 1cm  of 7] {};
    \node[triangle] (6) [above right = 1cm  of 7]{};

    \draw (2.35) -- +(0,0.2) -- (1);
    \draw (2.145) to [bend right=45] (5.215);
    \draw (3.145) -- +(0,0.2) -- (1);

\end{tikzpicture}
\end{document}

답변1

질문하신 3가지 사항을 제가 모두 이해했는지 확신할 수 없습니다. 예를 들어, '토큰'이 무엇을 의미하는지 잘 모르겠지만, 채워진 검은색 원은 추측하고 있습니다.

일반적으로 상대 위치 지정을 사용하면 나중에 코드를 수정하기가 더 쉽습니다. 예를 들어, 다이어그램에 새로운 항목을 추가하고 다른 항목을 자동으로 조정하는 것이 더 쉽습니다. 그러나 실제로는 특정 경우에 무엇이 가장 잘 작동하는지에 대한 문제입니다. 예를 들어, 절대 위치 지정은 코드의 유연성을 떨어뜨리지만 일회성으로 수행하는 것이 더 빠른 경우가 많습니다.

모양 을 덮어쓰지 않도록 이름을 triangle로 바꿨습니다 .triangulartriangle

아래 코드는 다음을 수행하는 한 가지 방법을 보여줍니다.

  • 적절한 지점에서 삼각형을 연결하십시오.
  • 삼각형을 적절한 지점에서 직사각형에 연결합니다.
  • 직사각형에 검은색 원을 추가합니다.
  • 라벨이 있는 곡선 화살표를 추가합니다 s'.

이를 통해 이미 가지고 있는 것을 더욱 발전시킬 수 있기를 바랍니다.

\documentclass[tikz,multi,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}
[
    triangular/.style = {regular polygon, regular polygon sides=3, draw=black, fill=green!60!black, inner sep=0pt, minimum size=2cm},
    border rotated/.style = {shape border rotate=180},
    rectangular/.style={fill=brown!80!black, rectangle, rounded corners = 5pt, draw=black, inner sep=0pt, minimum width=4.5cm, minimum height=1cm},
    square/.style={fill=blue!60!black, rectangle, draw=black, inner sep=0pt, minimum size = 1cm}
]

    \node[square] (1) {};
    \node[triangular, border rotated] (2) [below left = 1cm  of 1] {};
    \node[triangular, border rotated] (3) [below right = 1cm  of 1] {};
    \node[rectangular] (4) [below=3cm of 1] {};
    \node[square] (7) [below = 7cm of 1]{};
    \node[triangular] (5) [above left = 1cm  of 7] {};
    \node[triangular] (6) [above right = 1cm  of 7]{};

    \draw (2.35) -- +(0,0.2) -- (1);
    \draw (2.145) .. controls +(-7.5mm,35mm) and +(-7.5mm,-35mm) .. (5.215);
    \draw (3.145) -- +(0,0.2) -- (1);
    \draw (5.-35) -- +(0,-0.2) -- (7);
    \draw (6.-145) -- +(0,-0.2) -- (7);
    \draw (3.35) .. controls +(7.5mm,35mm) and +(7.5mm,-35mm) .. (6.-35);
    \draw (2.south) -- (4.north -| 2.south) (3.south) -- (4.north -| 3.south) (4.south -| 5.north) -- (5.north) (4.south -| 6.north) -- (6.north);

    \path (2.south) -- node [fill, circle] {} (5.north);
    \path (3.south) -- node [fill, circle] {} (6.north);
    \draw [<-] (4.north west) [bend right] to ++(-10mm,10mm) node [anchor=south] {$s'$};

\end{tikzpicture}
\end{document}

사이

관련 정보