Tikz-qtree 正确方向的线条与多行文本不直

Tikz-qtree 正确方向的线条与多行文本不直

我有以下 tex 文档:

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

我不知道为什么我一开始就没有想到这一点......

相关内容