将 qtree 放入 A4 页面

将 qtree 放入 A4 页面

我有一个非常复杂的 qtree。

\Tree [.expr while 
             [.expr not 
                    [.expr 
                    ( 
                    [.expr 
                    [.ID a ] <-  [.expr [.ID z ] <- [.expr 0 ] ] ] ) ] ].expr 
             loop 
             [.expr [.ID y ] 
                    <- 
                    [.expr [.expr [.expr [.ID  z ] ] 
                                  + 
                                  [.expr [.expr [.Integer 2 ] ] 
                                         * 
                                         [.expr [.ID x ] ] ] ] + [.expr [.Integer 1 ] ] ] ] 
             pool ].expr

输出

我该如何让它适合 A4 页面?我尝试了!\qsetw{}几个小时,但失败了。

答案1

resizebox这是来自的一种可能性array包裹:

输出

代码:

\documentclass[a4paper]{article}
\usepackage[margin=0.5cm]{geometry}
\usepackage{tikz-qtree}
\begin{document}
\resizebox{0.9\textwidth}{!}{%
\begin{tikzpicture}
\Tree [.expr while 
             [.expr not 
                    [.expr 
                    ( 
                    [.expr 
                    [.ID a ] <-  [.expr [.ID z ] <- [.expr 0 ] ] ] ) ] ].expr 
             loop 
             [.expr [.ID y ] 
                    <- 
                    [.expr [.expr [.expr [.ID  z ] ] 
                                  + 
                                  [.expr [.expr [.Integer 2 ] ] 
                                         * 
                                         [.expr [.ID x ] ] ] ] + [.expr [.Integer 1 ] ] ] ] 
             pool ].expr
\end{tikzpicture}
}
\end{document}

如果景观是一种选择,请添加lanscapegeometry选项:

输出

答案2

您可以更改为forest它使用类似的语法并优化树元素之间的空间。

具有默认样式的树forest看起来像

在此处输入图片描述

当然,forest提供说明使其更宽或使某些元素与其他元素对齐等等。

绘制上图所用的代码是:

\documentclass[a4paper]{article}
\usepackage[margin=0.5cm]{geometry}
\usepackage{forest}
\begin{document}
\begin{forest}
[expr [while] 
      [expr [not] 
            [expr [(] 
            [expr [ID [a]] 
                  [<-]  
                  [expr [ID [z]] 
                        [<-] 
                        [expr [0]]]]
                  [)]]] 
       [loop] 
       [expr [ID [y]] 
             [<-] 
             [expr [expr [expr [ID [z]]] 
                        [+] 
                               [expr [expr [Integer [2]]] 
                                     [*] 
                                     [expr [ID [x]]]] 
                         [+] 
                         [expr [Integer [1]]]]]] 
       [pool]
       ]
\end{forest}
\end{document}

相关内容