我正在尝试使用该forest
包制作一棵语言树,如第二个示例中所示此主题。我大部分能够生成树,但由于某种原因我无法绘制三角形。
这是我的 MWE:
\documentclass{article}
\usepackage{forest}
\usepackage{amsmath,amsfonts,amssymb}
\begin{document}
\begin{forest}
for tree={
if n children =0{
font=\itshape,
tier=terminal
}{},
}
[TP
[NP
[Det
[The]
]
[$\bar{N}$
[N
[ice]
]
]
]
[$\bar{T}$
[T
[+pst,font=\scshape]
]
[VP
[$\bar{V}$
[V
[melt]
]
]
[AdvP
[quickly,triangle]
]
]
]
]
\end{forest}
\end{document}
当我运行此程序时,出现以下错误:
! Package pgfkeys Error: I do not know the key '/tikz/triangle' and I am going to ignore it. Perhaps you misspelled it. See the pgfkeys package documentation for explanation. Type H for immediate help.... \end{forest}
我在 MiKTeX 2.9 上运行 Texmaker 4.4.1。我的pgf
版本是 3.0.1a,我使用的是 pdfTeX 版本 3.1415926-2.5-1.40.14。一位 redditor 能够在 pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) 上运行代码。
奇怪的是,我在 MacBook 上也成功使用了 Texmaker 4.2、TeX Live 2014、3.0.0 pgf
. 和 pdfTeX 3.1415926-2.6-1.40.15。
是否有办法降级我的版本pgf
?还是有其他错误?
答案1
您应该检查的第一件事是森林你有。如果如果您有版本 2,则以下答案适用。如果您仍有版本 1,则无关紧要。
假设您有版本 2...
新版本的森林引入了一些向后不兼容的变化。在这种情况下,我们关心的是其中两个:
某些选项集群现在被组织到库中,必须单独加载。
某些选项已重命名或不再存在。
triangle
不再作为选项存在。新选项是roof
。但是,要访问roof
,您需要加载linguistics
库。
从文档中看,这个过程不是很清楚。第一个问题是
texdoc forest
现在给您提供记录的代码,但不提供用户手册。
texdoc -l forest
您可以选择查看用户手册,目前位于forest-doc.pdf
。
第 20 页解释了加载库的机制。
本质上,
\useforestlibrary{<list of libraries>}
加载库列表并
\forestapplylibrarydefaults{<list of libraries>}
应用其默认设置,使任何附加选项等可用。
\useforestlibrary{}
,像\usepackage{}
和一样\usetikzlibrary{}
仅供在序言中使用。
\forestapplylibrarydefaults{}
可以在序言或文档中使用,并适用于当前 TeX 范围内。
另一种方法是在加载时将库的名称作为选项传递森林
\usepackage[<list of libraries>]{forest}
其作用是加载库并在整个文档中应用默认值。
注意
\forestapplylibrarydefaults{<libraries>}
除非已加载,否则无效<libraries>
。然而令人困惑的是,它不会给出错误。
无论如何,结果是我们需要加载并应用该linguistics
库并更改triangle
为roof
:
\documentclass[tikz, border=10pt, multi]{standalone}
\usepackage{forest}
\usepackage{amsmath,amsfonts,amssymb}
\useforestlibrary{linguistics}
\forestapplylibrarydefaults{linguistics}
\begin{document}
\begin{forest}
for tree={
if n children =0{
font=\itshape,
tier=terminal
}{},
}
[TP
[NP
[Det
[The]
]
[$\bar{N}$
[N
[ice]
]
]
]
[$\bar{T}$
[T
[+pst,font=\scshape]
]
[VP
[$\bar{V}$
[V
[melt]
]
]
[AdvP
[quickly,roof]
]
]
]
]
\end{forest}
\end{document}
请注意,这也会改变锚点,从而改变边缘的外观。希望这是你想要的,因为我相信这种风格在语言学中很正常。然而,如果你之前使用锚点和边缘的默认样式,那么你的树看起来会有点不同。