tikz 有办法简化这个 ({\ii+\jj*0.5},{-\jj*0.8}) 吗?
我试了 declare function 和 tikz 的 math 好像都不能解析坐标?
! Package tikz Error: Cannot parse this coordinate.参考的 declare-function-for-tikzpicture
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[
declare function={
labelpos(\x,\y) = ({\x+\y*0.5},{-\y*0.8});
}]
\foreach \ii in {0, 1, ..., 5}{
\foreach \jj in {0, 1, ..., 4}{
\node at labelpos(\x,\y) {$(\ii,\jj)$};
}
}
\end{tikzpicture}
\end{document}
declare function看文档似乎只能允许一元的输出...
如果重复使用这个坐标就要写很多次了,虽然可以复制粘贴,但是不太优雅
我一般的做法是\pgfmathsetmacro:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \ii in {0, 1, ..., 5}{
\foreach \jj in {0, 1, ..., 4}{
\pgfmathsetmacro{\x}{\ii+\jj*0.5}
\pgfmathsetmacro{\y}{-\jj*0.8}
\node at (\x,\y) {$(\ii,\jj)$};
}
}
\end{tikzpicture}
\end{document}或者\fpeval?
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \ii in {0, 1, ..., 5}{
\foreach \jj in {0, 1, ..., 4}{
\def\x{\fpeval{\ii+\jj*0.5}}
\def\y{\fpeval{-\jj*0.8}}
\node at (\x,\y) {$(\ii,\jj)$};
}
}
\end{tikzpicture}
\end{document}