使用 xymatrix 绘制树

使用 xymatrix 绘制树

我想使用 xymatrix 绘制树木,但是例如使用

\xymatrix{\ar@{-}[dr] & & \ar@{-}[dl]\\ & \ar@{-}[d] & \\ & & }

返回图像

我的问题是边缘没有在中间连接。有没有办法纠正这个问题(可能不涉及传递给 tikz)?

答案1

有一个基于 的语言学树绘制包,xypic名为xyling。它可以做你想做的事,但由于大多数语言树都假设节点标签和向下的分支,因此向上绘制树会有点麻烦。主要语法使用xymatrix底层,并实现一些节点命令和一个\B创建分支的命令。该\B命令的可选参数是将节点向上扩展到上面的空节点的调整。

\documentclass{article}

\usepackage{xyling}
\begin{document}
\Tree{ \B{dr} & & \B{dl} \\
        &\B[6]{d}\\
        &  &\\
}

\end{document}

代码输出

答案2

以下是一个例子森林。一旦你定义了所需树种的样式,就可以直接应用它们。然后可以指定树极其简洁地。

在这种情况下,我们定义一种样式my tree,然后将其应用于树,如下所示:

\begin{forest}
  my tree
  [Aardvarks
    [Agglomeration
      [
        [
          [Aggrandisement]
          [Artificiality]
        ]
      ]
    ]
    [Anticipation
      [Ants]
      [Ant-Eaters, tikz={\draw [densely dashed, ->, red] (.parent anchor) [out=45, in=135] to (!s.parent anchor);}]
    ]
  ]
\end{forest}

生产

血牙血爪

最长的部分是箭头,表示食蚁兽正在吃蚂蚁。但如果你经常需要说明大自然是血腥的,你可以很容易地为此设置一种风格,例如

      [Ant-Eaters, tooth and claw]

达到相同的结果。但这可能不是语言树的标准特征,在这里没有必要。

\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\forestset{
  my tree/.style={
    for tree={
      parent anchor=north,
      child anchor=south,
      grow=90,
    },
    nice empty nodes up
  },
  nice empty nodes up/.style={% modified from page 52
    for tree={calign=fixed edge angles},
    delay={where content={}{shape=coordinate,for parent={for children={anchor=south}}}{}}
  }
}
\begin{document}
\begin{forest}
  my tree
  [Aardvarks
    [Agglomeration
      [
        [
          [Aggrandisement]
          [Artificiality]
        ]
      ]
    ]
    [Anticipation
      [Ants]
      [Ant-Eaters, tikz={\draw [densely dashed, ->, red] (.parent anchor) [out=45, in=135] to (!s.parent anchor);}]
    ]
  ]
\end{forest}
\end{document}

相关内容