我正在尝试创建一个在每次迭代中绘制不同线条的代码,但如果我使用循环索引 -> \x,它不起作用。有什么建议吗?谢谢。
\documentclass[border=10pt,tikz]{standalone}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{ifthen}
\usepackage{verbatim}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (10,0) ; \draw (0,0) -- (0,10);
\draw (0,10) -- (10,10) ; \draw (10,10) -- (10,0);
\def\mx{10}; \def\n{5};
\def\xo{5}; \def\xoo{7};
\def\yo{0}; \def\yoo{10};
\coordinate (p0) at (\xo,\yo);
\coordinate (p1) at (\xoo,\yoo);
\draw [red] (p0) -- (p1) ;
\def\yn{\yoo};
\foreach \x in {1,..., \n} {
\draw [red] (p1) -- ((\x + 1 )*( \xoo - \xo ) + \xo ,10);
}
\end{tikzpicture}
\end{document}
答案1
看看,你是否喜欢获得以下图片:
\documentclass[border=10pt,tikz]{standalone}
\usepackage{amsmath}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (0,0) rectangle ++ (10,10);
\def\mx{10}; \def\n{5};
\def\xo{5}; \def\xoo{7};
\def\yo{0}; \def\yoo{10};
\coordinate (p0) at (\xo,\yo);
\coordinate (p1) at (\xoo,\yoo);
\draw [red] (p0) -- (p1) ;
\def\yn{\yoo};
\foreach \x in {1,..., \n}
\def\xn{{\x*(\xoo-\xo) + \xo}}; % Edited, additional
\def\yn{ { 10 - min(10,\yoo) } }; % Edited, additional
\draw [red] (p1) -- ({(\x + 1)*(\xoo - \xo ) + \xo},10);% <-- corrected
\draw [red] (p1) -- ({\xn},{\yn});% <---- I use this instead of % the above
\end{tikzpicture}
\end{document}
在上面的代码中,我以更简单的方式绘制矩形,并纠正循环中的行错误,正如我在评论中提到的那样。