这是我的 MWE:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\cell}{256}
\draw [help lines] (0,0) grid (\cell,\cell);
\foreach \i in {0,8,...,\cell} {
\draw[thick,blue!50] (0,\i) -- (\cell,\i);
\draw[thick,blue!50] (\i,0) -- (\i,\cell);
}
\draw[line width=20pt] (10,10) to (246,10) to (246,246) to[bend left] (10,246) -- cycle;
\end{tikzpicture}
\end{document}
当我尝试编译此代码时,出现以下错误:
<recently read> \pgf@xa
l.25 ...46,10) to (246,246) to[bend left] (10,246)
-- cycle;
?
当我删除时,[bend left]
错误消失了。奇怪的是,如果我enter
在遇到错误时按下,代码就会正确编译。但是,我不知道问题是什么。
答案1
您的问题中缺少错误消息本身,但它基本上是不言自明的:您要求 TeX 处理超过其可以处理的最大值的尺寸 - 大约 19'。
令人困惑的是,虽然你的图表很大(超过 2.5 米 x 2.5 米),但它似乎并不那大的。
问题是,为了绘制曲线,TeX 必须进行一些计算。这些计算涉及超出最大值的尺寸,即使最终图像的尺寸没有超出最大值。
当您忽略错误时,代码可以编译但不正确。要正确编译,如果 TeX 没有最大尺寸,并且其最大尺寸超过了执行计算所需的最大尺寸,则需要生成您期望的输出。这是不可能的,因此它会尝试尽可能接近。结果是一条曲线,但不完全是所要求的曲线。
这是一个经过修改的示例,其尺寸更加合理:
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\cell}{10}
\draw [help lines] (0,0) grid (\cell,\cell);
\foreach \i in {0,8,...,\cell} {
\draw[thick,blue!50] (0,\i) -- (\cell,\i);
\draw[thick,blue!50] (\i,0) -- (\i,\cell);
}
\draw[line width=2pt] (.1,.1) to (9.9,.1) to (9.9,9.9) to[bend left] (.1,9.9) -- cycle;
\end{tikzpicture}
\end{document}
编译无误,产生以下内容。
为了发现代码的结果并不正确,我们可以扩展示例来展示曲线随着维度的增加如何变化。
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\cell}{20}
\draw [help lines] (0,0) grid (\cell,\cell);
\foreach \i in {0,8,...,\cell} {
\draw[thick,blue!50] (0,\i) -- (\cell,\i);
\draw[thick,blue!50] (\i,0) -- (\i,\cell);
}
\foreach \i [evaluate=\i as \j using int(19-\i)] in {0,...,9}
\draw[line width=2pt] (\i.1,\i.1) to (\j.9,\i.1) to (\j.9,\j.9) to[bend left] (\i.1,\j.9) -- cycle;
\end{tikzpicture}
\end{document}
现在想想如果图像宽度超过 2.5 米,曲线会是什么样子......