在以下情况下,我的文档出现错误:
- 使用
cleveref
包 - 以及
tikz-qtree
(用于绘制语法树的)包 - 在
enumerate
环境中
以下是 MWE:
\documentclass{article}
%\usepackage{cleveref} %Uncomment for crash
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{enumerate}
\item foo
\begin{tikzpicture}
\Tree [.Foo Bar ]
\end{tikzpicture}
\end{enumerate}
\end{document}
这是运行该文件(未注释)生成的日志的链接cleveref
:日志档案。第一个错误是:
! Package tikz Error: A node must have a (possibly empty) label text.
我已经验证了以下几点:
- 这不是 catcode 问题,即和的 catcode
.
都是[
12,无论是否加载cleveref
- 如果树没有嵌入枚举中,问题就会消失,即删除整个文档主体,并用
\begin{tikzpicture}...\end{tikzpicture}
- 如果您将问题更改
enumerate
为itemize
\traceon
我尝试使用该包运行示例trace
,但却陷入了五十万行输出中。
基于这些深奥的软件包组合,我不确定是否存在现成的答案,但希望有一位熟悉这些软件包核心内容的 TeX 专家能够发现我所无法发现的东西。
答案1
我押注名称冲突\@result
。有一个可疑的
\@call #1#2->\let \@cont =#2\bgroup \@result ={}#1
#1<-\@subtree
#2<-\@Tree
{\let}
{begin-group character {}
\@result ->
{the character =}
Missing character: There is no = in font nullfont!
{begin-group character {}
{end-group character }}
在日志中。现在还没有检查,我推测 TikZ 有一个同名的令牌寄存器,而 cleveref 将其用作宏。
答案2
一个办法 :
在 tikz-qtree.tex 中你可以替换\@result
为\qt@result