Tikz 在 foreach 内部进行坐标计算

Tikz 在 foreach 内部进行坐标计算

作为解释衍射的绘图的一部分,我想绘制光束的“外射线”,并在其间绘制几条射线。下面显示了我如何进行此操作的 MWE:

\documentclass{standalone}
\usepackage{pgfplots,tikz}
\usetikzlibrary{calc}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[scale=1]
    \draw[black,semithick] (-3,1) -- (0,1);
    \draw[black,semithick] (-3,-1) -- (0,-1);
    \def \n {10}
    \foreach \s in {1,...\n-1}
    {
        \draw[lightgray,semithick] ($(-3,1)!\s/\n!(-3,-1)$) -- ($(0,1)!\s/\n!(0,-1)$);
    }
\end{tikzpicture}
\end{document}

这给了我以下错误:

Runaway argument?
\pgffor@stop \pgffor@@stop \expandafter \pgffor@dots@charcheck \pgffor@dotsvalue \ETC.
! File ended while scanning use of \pgffor@dots@stripcontext.

这些pgffor@dots东西让我怀疑问题可能出在范围规范上,\s但据我所知,这没什么问题。有人能告诉我吗?

答案1

您遗漏了,应该{1,...\n-1}注意{1,...,\n-1}后面,...。此外,我已将其定义\n-1为宏并将其置于循环之外(尽管这也可以使用的工具来完成\foreach)。

\documentclass{standalone}
\usepackage{pgfplots,tikz}
\usetikzlibrary{calc}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}[scale=1]
    \draw[black,semithick] (-3,1) -- (0,1);
    \draw[black,semithick] (-3,-1) -- (0,-1);
    \def \n {10}
    \pgfmathsetmacro{\tmp}{\n-1}
    \foreach \s in {1,...,\tmp}
    {
        \draw[lightgray,semithick] ($(-3,1)!\s/\n!(-3,-1)$) -- ($(0,1)!\s/\n!(0,-1)$);
    }
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容