以下代码适用于整数\myArray
,但不适用于浮点数。如何让此代码适用于浮点数?
\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[y={(0, -1)}, rotate=-45]
\path (0.5, -0.5) node{1} ++(1, 0) node{2}
++(1, 0) node{3} ++(1, 0) node{4}
++(1, 0) node{5} ++(1, 0) node{6};
\path (-0.5, 0.5) node{1} ++(0, 1) node{2}
++(0, 1) node{2} ++(0, 1) node{3}
++(0, 1) node{4} ++(0, 1) node{5};
\def\myArray{{{1,5,3,4,5,6},
{1,2,3,4,5},
{1,2,3,4},
{1,9.2,3},
{1,2},
{1}}}
\foreach \y in {0,...,5} {
\foreach \x in {0,...,\y} {
\pgfmathtruncatemacro{\r}{\myArray[\x][\y-\x]}
\draw (\x, \y - \x) rectangle +(1, 1);
\node at (\x + 0.5, \y - \x + 0.5) {\r};
}
}
\end{tikzpicture}
\end{document}
答案1
使用\pgfmathsetmacro
而不是\pgfmathtruncatemacro
。来自 PGF 手册的第 89.1 节“解析表达式的命令”(\pgfmathtruncatemacro 上方两三行)
\pgfmathsetmacro{hmacroi}{hexpressioni}
将 hmacroi 定义为 hexpressioni 的值。结果为无单位的十进制数。\pgfmathtruncatemacro{hmacroi}{hexpressioni}
将 hmacroi 定义为 hexpressioni 的截断值。
我只尝试了一位小数。
\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[y={(0, -1)}, rotate=-45]
\path (0.5, -0.5) node{1} ++(1, 0) node{2}
++(1, 0) node{3} ++(1, 0) node{4}
++(1, 0) node{5} ++(1, 0) node{6};
\path (-0.5, 0.5) node{1} ++(0, 1) node{2}
++(0, 1) node{2} ++(0, 1) node{3}
++(0, 1) node{4} ++(0, 1) node{5};
\def\myArray{{{1.1,5.1,3.2,4.3,5.4,6.3},
{1,3.2,3,4,5.2},
{0.1,2,3,4},
{1,9.2,3},
{3.1,2},
{1}}}
\foreach \y in {0,...,5} {
\foreach \x in {0,...,\y} {
\pgfmathsetmacro{\r}{\myArray[\x][\y-\x]}
\draw (\x, \y - \x) rectangle +(1, 1);
\node at (\x + 0.5, \y - \x + 0.5) {\r};
}
}
\end{tikzpicture}
\end{document}