使用森林时TikZ / PGF出现错误

使用森林时TikZ / PGF出现错误

我正在尝试使用该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...

新版本的森林引入了一些向后不兼容的变化。在这种情况下,我们关心的是其中两个:

  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库并更改triangleroof

\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}

森林版本 2 语言学中的屋顶

请注意,这也会改变锚点,从而改变边缘的外观。希望这是你想要的,因为我相信这种风格在语言学中很正常。然而,如果你之前使用锚点和边缘的默认样式,那么你的树看起来会有点不同。

相关内容