Los anclajes no funcionan en nombres de nodos generados por cada uno: "Operador desconocido `c' o `ce' (en '0.center')."

Los anclajes no funcionan en nombres de nodos generados por cada uno: "Operador desconocido `c' o `ce' (en '0.center')."

Entonces trato de generar una imagen tikz para el Triángulo de Pascal. Este es mi código y resultado hasta ahora:

\begin{figure}
\centering
\begin{tikzpicture}
    \foreach \n in {0,...,7}{
        \foreach \k in {0,...,\n}{
            \pgfmathsetmacro\nten{\n * 8}
            \node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (a\k\n) at (\k-\n/2,7-\n) {$\binom{\n}{\k}$};
            \pgfmathsetmacro\currbinom{\xinttheiiexpr binomial(\n,\k)\relax}
            \node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (b\k\n) at (\k-\n/2+10,7-\n) {$\currbinom$};
        };
    };
    %verbindungen
    \foreach \n in {0,...,6}{
        \foreach \k in {0,...,\n}{
            \pgfmathsetmacro\kp{\k+1}
            \pgfmathsetmacro\np{\n+1}
            \draw[->] (a\k\n.center) -- (a\k\np);
        };
    };
    \node[rectangle] (eqsign) at (5,4) {$=$};
\end{tikzpicture}
\caption{Caption}
\label{fig:pascal-tri}
\end{figure}

Este es el resultado: Triángulo de Pascal, pero con flechas equivocadas

Sin embargo, quiero tener conexiones entre los centros, así que agregué ".center" para dibujar las líneas hasta el ancla central:

\begin{figure}
\centering
\begin{tikzpicture}
    \foreach \n in {0,...,7}{
        \foreach \k in {0,...,\n}{
            \pgfmathsetmacro\nten{\n * 8}
            \node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (a\k\n) at (\k-\n/2,7-\n) {$\binom{\n}{\k}$};
            \pgfmathsetmacro\currbinom{\xinttheiiexpr binomial(\n,\k)\relax}
            \node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (b\k\n) at (\k-\n/2+10,7-\n) {$\currbinom$};
        };
    };
    %verbindungen
    \foreach \n in {0,...,6}{
        \foreach \k in {0,...,\n}{
            \pgfmathsetmacro\kp{\k+1}
            \pgfmathsetmacro\np{\n+1}
            \draw[->] (a\k\n.center) -- (a\k\np.center);
        };
    };
    \node[rectangle] (eqsign) at (5,4) {$=$};
\end{tikzpicture}
\caption{Caption}
\label{fig:pascal-tri}
\end{figure}

Pero luego aparece el siguiente error: Error al agregar anclajes al segundo nodo

¿Cómo solucionarlo/qué está mal? ¿Por qué a\k\n.centerfunciona correctamente pero a\k\np.centerno?

Respuesta1

No quieres \pgfmathsetmacro, pero \pgfmathtruncatemacroobtener una representación entera. De manera similar, la macro para el valor del coeficiente binomial puede/debe definirse con \edef.

Por cierto, es mejor definir un estilo en lugar de repetir largas listas de opciones: mucho más manejable. Además, \foreachlos ciclos no son declaraciones PGF, por lo que no deben ir seguidos de punto y coma (recibes muchas advertencias sobre ;no existir en \nullfont).

\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{amsmath}
\usepackage[dvipsnames]{xcolor}
\usepackage{xintexpr}
\usepackage{tikz}

\begin{document}

\begin{figure}
\centering
\begin{tikzpicture}[
  rect/.style={rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten}
]
\foreach \n in {0,...,7}{
  \foreach \k in {0,...,\n}{
    \pgfmathsetmacro\nten{\n * 8}
    \node[rect] (a\k\n) at (\k-\n/2,7-\n) {$\binom{\n}{\k}$};
    \edef\currbinom{\xinttheiiexpr binomial(\n,\k)\relax}
    \node[rect] (b\k\n) at (\k-\n/2+10,7-\n) {$\currbinom$};
  }
}
%verbindungen
\foreach \n in {0,...,6}{
  \foreach \k in {0,...,\n}{
%    \pgfmathtruncatemacro\kp{\k+1}
    \pgfmathtruncatemacro\np{\n+1}
    \draw[->] ({a\k\n}.center) -- ({a\k\np}.center);
  }
}
\node[rectangle] (eqsign) at (5,4) {$=$};
\end{tikzpicture}
\caption{Caption}
\label{fig:pascal-tri}
\end{figure}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada