我画了这个:
使用此代码:
\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}