
我想建立一個虛擬節點,它在樹的頂部不佔用任何空間,以便對齊,以便樹的第一個標記節點與範例編號對齊。設定l sep=0pt
顯然是不夠的。我還需要設定什麼才能實現這一目標?
微量元素:
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{expex}
\begin{document}
\ex\begin{forest}
[, phantom
[{Jane is ...}, tier=words]
[AjP
[Specifier
[very, tier=words]
]
[Aj'
[Aj
[fond, tier=words]
]
[PP
[{of Cheetah}, roof, tier=words]
]
]
]
]
\end{forest}\xe
\end{document}
答案1
我無法使用目前版本的 重現您的問題forest
。但在當前版本中,您可以新增baseline
到任何節點以使該節點成為樹的基線。
(不相關的語言學註釋:「說明符」是語法位置的名稱,而不是樹中的語法類別或節點,並且通常不應出現在樹中。)
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{expex}
\begin{document}
\ex
\begin{forest}
[,phantom,
[{Jane is ...}, tier=words]
[AjP,baseline
[Specifier
[very, tier=words]
]
[Aj'
[Aj
[fond, tier=words]
]
[PP
[{of Cheetah}, roof, tier=words]
]
]
]
]
\end{forest}
\xe
\end{document}
答案2
phantom
您實際上根本不需要根。您只需刪除第一個子項目的邊緣並指定根的對齊方式。
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{expex}
\begin{document}
\ex
\begin{forest}
where n children=0{tier=words}{}
[AjP, calign child=2
[Jane is \dots, no edge]
[Specifier
[very]
]
[Aj'
[Aj
[fond]
]
[PP
[of Cheetah, roof]
]
]
]
\end{forest}
\xe
\end{document}
答案3
在 v2.0.3 之前,只要使用 key,Forest 就會設定基線節點(錨點將與基線對齊的節點)baseline
,即使它是在phantom
不是由 TikZ 繪製的節點上使用的。人們本以為這會導致 TikZ 錯誤,但事實並非如此。
一旦在 TikZ 中創建了一個節點,它的名稱甚至在群組之外仍然存在(我猜這可以被認為是一個錯誤),「節點」位於(0,0)
,如下所示:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node(foo){};
\end{tikzpicture}
\begin{tikzpicture}
\draw[->] (-1,1) -- (foo.center) -- (1,1);
\end{tikzpicture}
\end{document}
將上述內容與 Forest 重用節點名稱(通常預設命名根)的事實結合起來node@2
,您就會遇到問題。如果您將基線節點設為根(就像語言學庫所做的那樣)並製作根幻像(就像排版並排樹通常所做的那樣),TikZ 會有效地將基線設為y=0
.結果由 OP 範例顯示。
現在,Forest 2.0.3(修正了 引入的問題draw tree method
)變得聰明,不再指示 TikZ 將基線節點設定為幻像節點(更準確地說,任何未繪製的節點)。因此,從這個版本開始,不再為並排語言樹設定基線。結果正如 TikZ 手冊所承諾的那樣,“圖片的下端放在周圍文字的基線上”,如下例所示。 (節點為draw
n 是為了更好地查看對齊情況。)
\documentclass{article}
\usepackage[linguistics]{forest}
\usepackage{gb4e}
\begin{document}
\begin{exe}
\ex\begin{forest}
for tree=draw
[,phantom
[VP[V][DP]]
[VP[V][DP]]
]
\end{forest}
\end{exe}
\end{document}
這是使用 Forest v2.0.3 - v2.1.4 編譯上述程式碼時所得到的結果。
絕對明確的是:我認為這是預期的行為。然而,這並不意味著它是想要的行為...這就是為什麼 v2.1.5 的語言學庫試圖變得更聰明:粗略地說,它將基線設置為“第一個非幻像節點”。在我們的範例中,這是左側副總裁,因此我們得到:
(臨時說明:Forest 2.1.5 已提交給 CTAN,也可在GitHub.)
現在,不可否認,在OP的範例中,所有這些都沒有任何幫助,因為「第一個非幻像節點」解析為Jane is ...
.語言學中的新基準預設值適用於並排樹的常見情況;對於任何不尋常的事情,只需設置baseline
手動設定即可,如艾倫的回答。