** 错误 ** DVI 堆栈超出限制。使用 xelatex 中的 tikz-qtrees

** 错误 ** DVI 堆栈超出限制。使用 xelatex 中的 tikz-qtrees

我有一个片段,tikz-qtree它导致

** ERROR ** DVI stack exceeded limit.

使用 xelatex 编译时,但使用 pdflatex 可以正常工作。但我需要 xelatex,因为我的文档中有很多 unicode。

这是代码:

\documentclass[11pt]{article}
\usepackage{savetrees}
\usepackage{tikz-qtree, tikz-qtree-compat}
\tikzset{every tree node/.style={align=center, anchor=north}}
\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}
\tikzset{every tree node/.style={align=center, anchor=north}}
\Tree [.CP [.C' [.C\\ø ] [.TP [.T' [.T\\ed ] [.VP [.DP \edge[roof ];\\I ] [.V' [.V\\ask ] [.CP [.C' [.C ø ] [.TP [.T' [.T\\ed ] [.VP [.DP \edge[roof ];\\John ] [.V' [.V\\believe ] [.CP [.C' [.C ø ] [.TP [.T' [.T\\ed ] [.VP [.DP \edge[roof ];\\Mary ] [.V' [.V' [.V\\lie ] ] [.PP \edge[roof ];\\why ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]
\end{tikzpicture}
\end{document}

下载地址: http://sprunge.us/OaIO

答案1

这是来自的错误消息xdvipdfmx。这两个阶段可以通过以下方式调用:

xelatex -no-pdf test
xdvipdfmx test.xdv

后者显示更详细的警告:

** WARNING ** DVI need stack depth of 320,
** WARNING ** but DVI_STACK_DEPTH_MAX is 256.
** ERROR ** Capacity exceeded.

查看来源dvi.c

#define DVI_STACK_DEPTH_MAX  256u
...
if (dvi_info.stackdepth > DVI_STACK_DEPTH_MAX) {
  WARN("DVI need stack depth of %d,", dvi_info.stackdepth);
  WARN("but DVI_STACK_DEPTH_MAX is %d.", DVI_STACK_DEPTH_MAX);
  ERROR("Capacity exceeded.");
}
...
static struct   dvi_registers dvi_state;
static struct   dvi_registers dvi_stack[DVI_STACK_DEPTH_MAX];
static unsigned dvi_stack_depth = 0 ;  

这意味着,大小是硬编码的,无法在运行时更改。需要重新编译 XeTeX。

或者将图像生成为独立文档(pdfTeX,...)并将其作为 PDF 文件嵌入到您的 XeTeX 文档中。

相关内容