
Я пытаюсь создать лингвистическое дерево с помощью 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, pgf
3.0.0. и 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}
Обратите внимание, что это также изменяет якоря и, следовательно, внешний вид рёбер. Надеюсь, это то, что вам нужно, поскольку я считаю, что этот стиль является нормальным в лингвистике. Однако это означает, что ваши деревья будут выглядеть немного иначе, если ранее вы использовали стиль по умолчанию для якорей и рёбер.