У меня есть следующий текстовый документ:
\documentclass[10pt]{article}
\ExpandArgs{c}\newcommand{new@fontshape}{anything}
\usepackage{linguex}
\usepackage[russian,indonesian]{babel}
\usepackage[none]{hyphenat}
\usepackage{geometry}
\usepackage{setspace}
\usepackage{amssymb}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{gb4e}
\primebars
\let\emptyset\varnothing
\geometry{
a4paper,
total={170mm,257mm},
left=20mm,
top=20mm,
}
\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\begin{document}
\noindent {\LARGE \bf Uraian pohon sintaksis}\\
\begin{exe}
\ex{{\bf (RU)}
\tikzset{grow'=right}
\tikzset{every tree node/.style={align = left, anchor=base west}}
\tikzset{frontier/.style={distance from root=170pt}}
\tikzset{execute at begin node=\strut}
\Tree [.K [.FN {\?{\it Путин}\\ Putin} ] [.FV [.V {\?{\it опроверг}\\ membantah} ] [.FN [.FN [. N {\?{\it дискриминацию}\\ diskriminasi\textsc{.aku}} ] [.N {\?{\it геев}\\ gay\textsc{.jam.gen}} ] ] [.FV [.P {\?{\it в}\\ di} ] [.N\textsc{.part} {\?{\it России}\\ Rusia\textsc{.prep}} ] ] ] ] ] }
\end{exe}
\end{document}
Все шло хорошо, пока строки не встретились с многострочными словами. Как мне улучшить документ, чтобы слова были распределены равномерно, а строки были прямыми?
Я хочу, чтобы линии были прямыми, вот так:
Я пробовал \tikzset{sibling distance=18pt}
аргументировать, но это только увеличивало расстояние, а не делало линии прямыми:
решение1
[РедактироватьСм. tikz-qtree
решение ниже. Но forest
более гибко.]
В forest
, легко отформатировать дерево по вашему желанию. Если это имеет значение, вот решение forest
. Обратите внимание, что на моей машине ваш код использует mf
шрифты, а не масштабируемый формат, что, возможно, не то, что вам нужно, но это может быть функцией минимизации примера. Я еще больше минимизировал код для целей этого вопроса.
Синтаксис не отличается от qtree
/ tikz-qtree
, но точек нет, а дочерним элементам нужны квадратные скобки даже при отсутствии ветвления.
\documentclass[border=10pt,10pt]{standalone}
\usepackage[russian,indonesian]{babel}
\usepackage[linguistics]{forest}
\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\begin{document}
\begin{forest}
for tree={%
grow=0,
anchor=base west,
},
where n children=0{%
tier=terminus,
calign with current edge,
align=left,
}{%
font=\scshape,
},
[K
[FV
[FN
[FV
[P [\?{\itshape в}\\ di] ]
[N.part [\?{\itshape России}\\ Rusia\textsc{.prep}] ]
]
[FN
[N [\?{\itshape геев}\\ gay\textsc{.jam.gen}] ]
[N [\?{\itshape дискриминацию}\\ diskriminasi\textsc{.aku}] ]
]
]
[V [\?{\itshape опроверг}\\membantah] ]
]
[FN [\?{\itshape Путин}\\ Putin ] ]
]
\end{forest}
\end{document}
Я также обновил устаревшие команды шрифтов.
Я не буду публиковать фото, потому что ошибка в последней версии Okular на X приводит к тому, что все мои фото выглядят ужасно, независимо от фактического результата, так что смысла в этом нет. Извините за упущение.
РЕДАКТИРОВАТЬ
Если вы хотите использовать tikz-qtree
, anchor=west
то вместо anchor=base west
этого подойдет установка :
\documentclass[10pt]{article}
\usepackage{linguex}
\usepackage[russian,indonesian]{babel}
\usepackage{tikz-qtree}
\usepackage{gb4e}
\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\begin{document}
\begin{exe}
\ex{{\bfseries (RU)}
\tikzset{%
grow'=right,
every tree node/.style={anchor=west,align=left},
frontier/.style={distance from root=170pt},
execute at begin node=\strut,
}
\begin{tikzpicture}
\Tree [.K [.FN {\?{\itshape Путин}\\ Putin} ] [.FV [.V {\?{\itshape опроверг}\\ membantah} ] [.FN [.FN [. N {\?{\itshape дискриминацию}\\ diskriminasi\textsc{.aku}} ] [.N {\?{\itshape геев}\\ gay\textsc{.jam.gen}} ] ] [.FV [.P {\?{\itshape в}\\ di} ] [.N\textsc{.part} {\?{\itshape России}\\ Rusia\textsc{.prep}} ] ] ] ] ]
\end{tikzpicture}%
}
\end{exe}
\end{document}
Не знаю, почему я не подумал об этом сразу...