使用森林包在“树”中绘制一个循环

使用森林包在“树”中绘制一个循环

是否可以在包中为树添加循环forest?具体来说,我该如何排版右侧的图表?(忽略颜色,只需通常的白底黑字即可。)

在此处输入图片描述

左边的代码(没有红色的X)是:

\documentclass[border=10pt]{standalone}
\usepackage{forest}

\usepackage{mathtools}
\begin{document}
\begin{forest}
for tree={grow=north}
[$\oplus$
    [$\otimes$
        []
        []
    ]
    [$\otimes$
        []
        []
    ]
]
\end{forest}
\end{document}

答案1

右边的图不是树,因为一个子节点有多个父节点。因此,它不能在 Forest 中开箱即用地绘制。但是,您可以通过操作以下操作让 Forest 绘制循环:edge path、使用tikz或添加 Ti让 Forest 绘制循环Z 命令直接在forest环境内部。

\documentclass[border=10pt]{standalone}
\usepackage{forest}

\usepackage{mathtools}
\begin{document}
\begin{forest}
  for tree={
    grow=north,
  },
  where n children=0{tier=terminus}{},
  [$\oplus$
      [$\otimes$
          []
          [, phantom]
      ]
      [, edge path'={(!r1.parent anchor) -- (.child anchor) (!rl.parent anchor) -- (.child anchor)}, child anchor=south]
      [$\otimes$
          [, phantom]
          []
      ]
  ]
\end{forest}
\end{document}

非树砍法

如果你只需要奇数的非树位,这应该没问题。但是,如果你需要许多循环,你将需要使用对通用图的支持,避免使用专注于树的包和库。考虑 Ti在这种情况下提供 Z 图表。

相关内容