qtree 未呈现左子树

qtree 未呈现左子树

我正在使用 qtree 包来尝试渲染一棵树。

\Tree [.+ [.+ 1 [.+ 2 3 ] ]
          \qroof{\Tree [.+ [.+ 2 4 ] 6 ] \qquad \Tree [.+ [.+ 3 5 ] 7 ] }.A
      ]

代码呈现下图。请注意,左([.+ 1 [.+ 2 3 ] ])子树完全不存在。

在此处输入图片描述

是我做错了什么吗或者这可能是 qtree 错误?

答案1

这个qtree包非常老旧,而且在大多数情况下,都有更好的包可用。但是该qtree \Tree命令并不打算以您在示例代码中所做的方式嵌入,所以我不会将您看到的行为称为错误。事实上,大多数树绘制包都不允许您以这种方式将一棵树嵌入另一棵树中。

如果要实现嵌入树的效果,可以使用\savebox预编译嵌入树。我已经使用 展示了使用该方法的解决方案qtree

不过,就我个人而言,我建议使用该forest包并手动绘制屋顶节点,而不是嵌入树(这两者都是不可能的forest。)

\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{qtree}
\newsavebox{\myA}
\newsavebox{\myB}
\begin{document}
\savebox\myA{\Tree [.+ [.+ 2 4 ] 6 ] }
\savebox\myB{\Tree [.+ [.+ 3 5 ] 7 ] }
\Tree [.+ [.+ 1 [.+ 2 3 ] ]
          \qroof{\usebox\myA\qquad\usebox\myB  }.A
      ]
\hfill
\begin{forest}
[+ [+ [1] [+ [2] [3] ] ]
           [A [+,name=A1 [+ [2] [4] ] [6] ]  [+,name=A2 [+ [3] [5] ] [7] ]
      ]]
\draw (A1.north)--(A2.north);
\end{forest}

\end{document}

代码输出

相关内容