TikZ 中的倾斜网格作为宏吗?

TikZ 中的倾斜网格作为宏吗?

我正在尝试绘制一个带有倾斜网格的图表,有点像给出的 3D 效果http://www.texample.net/tikz/examples/3d-graph-model/

理想情况下,我想要一个宏,slantedgrid例如

\draw (10,12) \slantedgrid (7,5);

或者甚至可能只是

\slantedgrid{10}{12}{7}{5}

将绘制一个网格,其中所有垂直线均倾斜 45 度,左下角位于 (10,12),并有 5+1 条水平线和 7+1 条垂直(倾斜)线。

我第一次(也是目前唯一一次)尝试是用 LaTeX “newcommand” 将其定义为

\newcommand{\slantedgrid}[4]{%
  \foreach \x in {#1,#1+1,...,#1+#3} \draw (\x,#2) -- ++(#4,#4);%
  \foreach \y in {#2,#2+1,...,#2+#4} \draw (\y-#4,\y) -- ++(#3,0);%
 }

slantedgrid{10}{12}{7}{5}然而,当我进入环境时,所有这些都会产生大量错误 - “非法测量单位(插入pt)” tikzpicture

是否有任何简单的方法可以做这样的事情 - 特别是将参数从 a 传递newcommand到 TikZ foreach

答案1

如果您仍想传递计算参数,则foreach可以使用pgfmathtruncatemacro

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\newcommand{\slantedgrid}[4]{%
   \pgfmathtruncatemacro{\result}{#1+#3}
   \foreach \x in {#1,...,\result} \draw (\x,#2) -- ++(#4,#4);%
   \pgfmathtruncatemacro{\result}{#2+#4}
   \foreach \y in {#2,...,\result} \draw (#1+\y-#2,\y) -- ++(#3,0);%
 }
\slantedgrid{10}{12}{7}{5}
\end{tikzpicture}
\end{document}

在此处输入图片描述

附言:我foreach根据你所想的内容进行了第二次修改。

相关内容