フォレスト使用時の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) でコードを実行することができました。

pgf興味深いことに、Texmaker 4.2、TeX Live 2014、3.0.0 、pdfTeX 3.1415926-2.6-1.40.15 を使用して、MacBook でも成功しました。

のバージョンをダウングレードする方法はあるのでしょうかpgf? それとも、何か他の原因でエラーが発生しているのでしょうか?

答え1

まず最初に確認すべきは、あなたが持っている。もしバージョン 2 をお持ちの場合は、次の回答が適用されます。バージョン 1 をお持ちの場合は、無関係です。


バージョン 2 をお持ちだと仮定します...

新しいバージョンの下位互換性のない変更がいくつか導入されています。この場合、次の 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}

森林バージョン2 言語学における屋根

これにより、アンカーも変更され、エッジの外観も変更されることに注意してください。このスタイルは言語学では標準的であると思われるため、これが希望どおりであることを願っています。ただし、以前にアンカーとエッジにデフォルトのスタイルを使用していた場合、ツリーの外観が少し変わることになります。

関連情報