我有一个非常复杂的 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}
如果景观是一种选择,请添加lanscape
到geometry
选项:
答案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}