tikzpicture 尺寸太大!

tikzpicture 尺寸太大!

我有一个在 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}

右边 左边

相关内容