我正在使用 Vscode 和 XeLatex 编写代码。运行下面的代码时,它起作用了,花费了大约 20 秒
\documentclass[border={0pt}]{standalone}
\usepackage{tikz,}
\begin{document}
\begin{tikzpicture}
[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
box/.style={rectangle,draw=black,thick, minimum size=28pt},
]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\foreach \y in {0,2,4,...,100}{
\foreach \x in {0,1,...,100}
\node[box,fill=black] at (\x,\y){};
}
\end{tikzpicture}
\end{document}
但是当涉及到这样的代码时(我假设这需要双倍的计算复杂度),它运行不会超过 30 秒并自动关闭。
\usepackage{tikz,}
\begin{document}
\begin{tikzpicture}
[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
box/.style={rectangle,draw=black,thick, minimum size=28pt},
]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\foreach \y in {0,2,4,...,100}{
\foreach \x in {0,1,...,100}
\node[box,fill=black] at (\x,\y){};
}
\foreach \y in {1,3,5,...,99}{
\foreach \x in {0,2,...,100}
\node[box,fill=red] at (\x,\y){};
}
\end{tikzpicture}
\end{document}
我该如何让它再运行 20 秒才能完成,还是只是我误解了 Tex 反馈的信息?如果有任何不清楚的地方请告诉我。谢谢您的帮助!!
答案1
评论:
仅用于绘制矩形的节点效率极低。有一个矩形运算符专门用于这项工作。
使用
\foreach
内部的一个\path
(或\fill
,\ draw`,...)比为每个循环迭代创建一个路径更有效(文件大小)。简单的条纹不需要嵌套循环。
运行时间和文件大小更佳的代码示例:
\documentclass[border=0pt, tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\fill[black]
\foreach \y in {0,2,4,...,100}{
(0, \y) rectangle +(101, 1)
}
;
\fill[red]
\foreach \y in {1,3,5,...,99}{
\foreach \x in {0,2,...,100}{
(\x, \y) rectangle +(1, 1)
}
}
;
\end{tikzpicture}
\end{document}
该示例可以进一步改进(留给读者练习):
- 首先绘制红色垂直条纹,然后在其上方绘制黑色水平条纹。这将消除红色框的嵌套循环。