Crear un comando que use \foreach para usar en un cs baricéntrico

Crear un comando que use \foreach para usar en un cs baricéntrico

Estoy intentando crear un comando que se usará en un archivo barycentric cs:.

Usaré barycentric csmucho tiempo para conseguir un nodo en medio de otros, así que estoy tratando de que sea menos doloroso para mí. También se usará en otro comando que use una lista como parámetro.

Digamos que tengo este código:

\documentclass[border=5mm]{standalone}

\usepackage{tikz}

\usetikzlibrary{matrix}
\usetikzlibrary{positioning}

\begin{document}
    \tikzset{
        basic/.style={
            draw, 
            rounded corners=2pt, 
            thick, 
            text width=8em, 
            align=flush center, 
            node distance=2em
        }
    }
    \begin{tikzpicture}
        \matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
            \node(a){text}; & \node(c){text}; \\
            \node(b){text}; & \node(d){text}; \\
            % Loads of other nodes
        };
    \end{tikzpicture}
\end{document}

Estoy intentando crear un comando para que, en lugar de usar \node (bc#) at (barycentric cs:a=1,b=1,c=1,d=1,<...>) {text};, solo tenga que escribir \node (x) at (baricentric cs:\listforbarycentrics{a,b,c,d}) {text};.

Probé con este código de comando:

\newcommand{\listforbarycentrics}[1]{\foreach \n in {#1}{
        \n=1,
    };
}

Sin embargo, no funciona. Puede deberse a que una coma al final de la lista barycentric cs:(como esta barycentric cs:a=1,b=1,c=1,d=1,) crea un error, sin embargo, no estoy seguro.

Respuesta1

¿Algo como esto?

\documentclass[border=5mm]{standalone}

\usepackage{tikz}

\usetikzlibrary{matrix}
\usetikzlibrary{positioning}

\begin{document}
    \tikzset{
        basic/.style={
            draw, 
            rounded corners=2pt, 
            thick, 
            text width=8em, 
            align=flush center, 
            node distance=2em
        },
        barycentric setup/.code={\foreach \X [count=\Y] in {#1}
        {\ifnum\Y=1
         \xdef\baryarg{\X=1}
        \else
         \xdef\baryarg{\baryarg,\X=1}
        \fi}},
        barycentric list/.style={barycentric setup={#1},insert path={%
        (barycentric cs:\baryarg)}}
    }
    \begin{tikzpicture}
        \matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
            \node(a){text}; & \node(c){text}; \\
            \node(b){text}; & \node(d){text}; \\
            % Loads of other nodes
        };
        \path[barycentric list={a,b,c,d}] node {center}; 
    \end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada