定义具有多个参数的图片并在 for 循环中使用它们

定义具有多个参数的图片并在 for 循环中使用它们

我画了这个:

在此处输入图片描述

使用此代码:

\documentclass{article}
\usepackage{tikz}
\tikzset{pics/message/.style={code={
\draw (0,0) rectangle (4,1);
\draw foreach \X in {1,2,3} {(\X,0) -- (\X,1)}; 
}}}
\begin{document}
\begin{tikzpicture}
\pic at (0,0) {message};
\end{tikzpicture}
\end{document}

现在我想用作为参数传递的数字来填充每个方块(目前它只有 1..4,但没有顺序。

所以我想要一些类似的东西

\draw pic[0,0] {message=1/2/3/4};

正如在这个问题中看到的:TikZ 3.0——`pic` 的多个参数 但是我用 for 循环绘制每个正方形,保留这个 for 循环会很有趣,以便将来能够绘制具有更多正方形和更多参数的更长的矩形。因此类似于:

\draw foreach \X in {1,2,3} {(\X,0) -- (\X,1) node[pos= 0.5, right] {param #X+1}}; 

在使用#1参数绘制矩形时声明第一个标签以获得类似的效果:

在此处输入图片描述

如果我像这样调用该函数:

\draw pic[0,0] {message=1/2/3/4}; 

答案1

我可能会做这样的事情:

\documentclass{article}
\usepackage{tikz}
\tikzset{pics/message/.style={code={
\draw (0,0) rectangle (4,1);
\draw foreach \X in {1,2,3} {(\X,0) -- (\X,1)}; 
\foreach \X [count=\Y,evaluate=\Y as \Z using {\Y-0.5}] in {#1}
{\node at (\Z,0.5) {\X};
\ifnum\Y=4
\breakforeach % make sure that the entries do not overshoot
\fi}
}}}
\begin{document}
\begin{tikzpicture}
\pic at (0,0) {message={1,A,F,2}};
\pic at (0,-2) {message={1,...,4}};
\pic at (0,-4) {message={3,...,14}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容