作为解释衍射的绘图的一部分,我想绘制光束的“外射线”,并在其间绘制几条射线。下面显示了我如何进行此操作的 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}