LaTex繪圖之forest巨集包繪製語法分析樹
阿新 • • 發佈:2022-03-25
在LaTeX中繪製語法分析樹的方法有多種,以前我介紹過使用qtree巨集包來繪製,但其功能有限,現在介紹功能更強的forest巨集包。
下面的示例圖案選自《編譯原理》第2版第2章圖2-5。完整示例程式碼如下:
% 部落格園,繁星間漫步,陸巍的部落格 \documentclass{article} % 注意巨集包順序,有可能會報錯 \usepackage{ctex}% 中文支援 \usepackage{geometry}% 用於頁面設定 \usepackage{longtable}% 支援長表格跨頁 \usepackage{qtree}% 繪製語法分析樹 \usepackage{forest}% 繪製語法分析樹 % 設定為A4紙,邊距適中模式(參考永中office) \geometry{ a4paper, left = 19.1mm, right = 19.1mm, top = 25.4mm, bottom = 25.4mm } % ------------------ 開始 ------------------- \begin{document} qtree巨集包繪製的語法分析樹 \begin{center} \Tree [.$list$ [.$list$ [.$list$ [.$digit$ 9 ]] - [.$digit$ 5 ] ] + [.$digit$ 2 ] ] \end{center} forest巨集包繪製的語法分析樹一 \begin{center} \begin{forest} [$list$, [$list$, [$list$ [$digit$ [9]]] [-] [$digit$ [5]] ] [+] [$digit$ [2]] ] \end{forest} \end{center} forest巨集包繪製的語法分析樹二 \begin{center} \begin{forest} [$list$, [$list$, [$list$ [$digit$ [9, tier = word]]] [-, tier = word] [$digit$ [5, tier = word]] ] [+, tier = word] [$digit$ [2, tier = word]] ] \end{forest} \end{center} forest巨集包繪製的語法分析樹三 \begin{center} \begin{forest} [$list$, s sep = 3em [$list$, s sep = 2em [$list$ [$digit$ [9, tier = word]]] [-, tier = word] [$digit$ [5, tier = word]] ] [+, tier = word, before computing xy={s/.average={s}{siblings}}] [$digit$ [2, tier = word]] ] \end{forest} \end{center} \end{document}
效果如下:
說明:
1、第一個例子使用的是qtree巨集包繪製的;
2、使用forest巨集包繪製的圖形有三幅,第一幅沒有做任何修飾,看上去與qtree繪製的差不多,只是節點和展開角度不一樣;第二幅為了更好的展示,使用了tier=word語句;第三幅是在第二幅的基礎上進行了角度上的調整,看上去就要美觀一些。
3、forest巨集包實際上是建立在tikz巨集包的基礎上。