![** 错误 ** DVI 堆栈超出限制。使用 xelatex 中的 tikz-qtrees](https://linux22.com/image/259782/**%20%E9%94%99%E8%AF%AF%20**%20DVI%20%E5%A0%86%E6%A0%88%E8%B6%85%E5%87%BA%E9%99%90%E5%88%B6%E3%80%82%E4%BD%BF%E7%94%A8%20xelatex%20%E4%B8%AD%E7%9A%84%20tikz-qtrees.png)
我有一个片段,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 文档中。