cleveref + enumerate + tikz-qtree 错误

cleveref + enumerate + tikz-qtree 错误

在以下情况下,我的文档出现错误:

  1. 使用cleveref
  2. 以及tikz-qtree(用于绘制语法树的)包
  3. 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}
  • 如果您将问题更改enumerateitemize

\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

相关内容