我有一个在 TikZ 中实现的大图,当前尺寸为 16042 × 457。如果我尝试添加更多节点并水平扩展该图,则会收到“尺寸太大!”错误,并且无法编译文档。有没有办法解决这个问题并使图更大?
我知道我没有提供 MWE,但这很棘手,因为该图有大约 300 个节点,没有它们我就无法复制错误。
编辑:这里有一个出现此错误的代码示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{calc}
\usepackage[paperwidth=\maxdimen,paperheight=\maxdimen]{geometry}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\begin{document}
\begin{tikzpicture}
\node[draw] at (0, 0) {tikz rectangle};
\node[draw] at (600, 0) {tikz circle};
\end{tikzpicture}
\end{document}
将 600 更改为 500 或更少,错误消失。
答案1
\maxdimen
<dimen>
是TeX 尺寸支持的最大合法尺寸 (±16383.99999pt)。
根据pgfmanual 56.1 Fixed Point Arithmetic Library Overview
此外,可以计算的值范围非常小:±16383.99999。相反,fp 包具有相当高的精度,并且可以在很宽的值范围内执行计算(约±9.999 × 1017),
而对于尺寸:
pgf数学引擎仍将用于评估长度,例如 10pt 或 3em,因此长度不可能超出 TEX-dimensions 支持的值范围 (±16383.99999pt),即使结果表达式在 fp 的范围内。例如,可以计算 3cm*10000,但不能计算 3*10000cm。
钛钾Z 库fpu
与之类似fp
,但准确率更高,速度更快,效率更高。所以我们可以用 进行一些测试fpu
。
\documentclass{article}
\usepackage{pgf}
\usepgflibrary{fpu}
\begin{document}
\pgfset{fpu, fpu/output format=fixed}
\pgfmathparse{1cm * 600}
\begin{tabular}{rcl}
\verb|\maxdimen| & is & \the\maxdimen.\\
600cm & is & \pgfmathresult pt.
\end{tabular}
% \pgfmathparse{600cm} % error!
\end{document}
答案2
您不需要缩小字体或尺寸,TikZ 不使用浮点数,因此,当您不设置单位时它可能会溢出。
通过为单位设置一个x
尺寸值,它将允许正常工作而无需缩小字体。y
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{calc}
\usepackage[paperwidth=\maxdimen,paperheight=\maxdimen]{geometry}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\begin{document}
\begin{tikzpicture}[x=0.2cm, y=0.2cm]
\node[draw] at (0, 0) {tikz rectangle};
\node[draw] at (600, 0) {tikz circle};
\end{tikzpicture}
\end{document}