想把一个IF I GOT LOCKED AWAY这句话的每个字母放在一个3×5的网格中,要用到arrayjob
这个宏包。
这个宏包有个比较confusing的地方,就是二维数组的 dataheight
跟 \normalindexfalse
(默认)、\normalindextrue
当 \normalindexfalse
(默认)的时候,dataheight
为5是5列 ,不是通常意义的高度。。。如果要做成通常意义的高度,就要指定\normalindextrue
,但是!!!这个时候元素的排列顺序就是竖着排了,这是很容易出错的一个地方。
\documentclass[tikz]{standalone}
\usepackage{pgffor}
\usetikzlibrary{calc}
\usepackage{arrayjob}
\newarray\Values
\readarray{Values}{I&F&I&G&O&T&L&O&C&K&E&D&A&W&A}
%\normalindextrue % 因为我要横着排列元素,所以指定为false
\dataheight=5 % 5列,并非5行
\begin{document}
\begin{tikzpicture}
\draw [ultra thin,color=gray,step=.5] (0,0) grid (5,3);
\foreach \x in {0,1,...,5} \draw (\x,-1pt)--node[fill=white,below]{$ \x $}(\x,1pt);
\foreach \y in {0,1,2,3} \draw (-1pt,\y)--node[fill=white,left]{$ \y $}(1pt,\y);
\foreach \r in {1,2,3}
\foreach \c in {1,2,3,4,5}
{
\node at (\c-0.5,3.5-\r) {\Values(\r,\c)};
}
\end{tikzpicture}
\end{document}
关于这个有个bug,就是我如果定义成一维数组,索引里面就得是\Values(\r*5-5+\c)
了,但是这样会出现格式混乱,看起来像是索引不支持数学运算?
关于这个问题我已经提问到TeX Exchange了 tikz pgf - How to use math operation in an array index created by the package arrayjob - TeX - LaTeX Stack Exchange 持续关注