Notación gráfica de Penrose con TikZ

Notación gráfica de Penrose con TikZ

¿Cómo puedo dibujar una red tensorial como esta usando TikZ? ingrese la descripción de la imagen aquí

Quizás agregando algunas palabras sobre ellos.

ingrese la descripción de la imagen aquí

Me siento muy cómodo con LaTeX, pero todavía soy un novato en TikZ. Dibujaré este tipo de formas extensamente y espero conocer una plantilla para ellas. ¡Gracias!

EDITAR

Esto es lo que he hecho hasta ahora. No estoy seguro de cómo conectar la línea en el borde especificado, la forma correcta de colocar el nodo (¿posición relativa o coordenada?) y cómo colocar tokens en las posiciones especificadas.

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

Respuesta1

No estoy del todo seguro de entender los 3 puntos sobre los que preguntaste. Por ejemplo, no estoy seguro de a qué se refiere "fichas", aunque supongo que son círculos negros rellenos.

Generalmente, el posicionamiento relativo facilita la modificación del código más adelante. Por ejemplo, es más fácil agregar elementos nuevos al diagrama y hacer que otros se ajusten automáticamente. Pero en realidad se trata de qué funciona mejor en un caso particular. A menudo, el posicionamiento absoluto es más rápido de realizar para una sola vez, por ejemplo, aunque hace que el código sea menos flexible.

Le cambié el nombre trianglea triangularpara evitar sobrescribir la triangleforma.

El siguiente código muestra una forma de:

  • conecta los triángulos desde los puntos apropiados;
  • conecte los triángulos al rectángulo desde/hacia los puntos apropiados;
  • agrega círculos negros al rectángulo;
  • agregue una flecha curva con la etiqueta s'.

Con suerte, esto debería permitirle desarrollar más lo que ya tiene.

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

conexiones

información relacionada