Ошибка 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}

Я запускаю Texmaker 4.4.1 на MiKTeX 2.9. Моя pgfверсия — 3.0.1a, и я использую pdfTeX версии 3.1415926-2.5-1.40.14. Один реддитор смог запустить код на pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian).

Любопытно, что мне также удалось добиться успеха на моем MacBook, используя Texmaker 4.2, TeX Live 2014, pgf3.0.0. и 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и изменить ее 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 крыши в лингвистике

Обратите внимание, что это также изменяет якоря и, следовательно, внешний вид рёбер. Надеюсь, это то, что вам нужно, поскольку я считаю, что этот стиль является нормальным в лингвистике. Однако это означает, что ваши деревья будут выглядеть немного иначе, если ранее вы использовали стиль по умолчанию для якорей и рёбер.

Связанный контент