使用 forest 包返回树

使用 forest 包返回树

从精神上来说,这是一棵树,就是我想要的:用箭头向下,用红色或蓝色向上(蓝色边缘有标签)。

\begin{forest}
  for tree={parent anchor=children,edge={->}}
  [AAA
    [BBB
      [D]
      {\draw[->,blue] () to[out=north,in=south west,edge label=foo] (!u);}
      [E]
      {\draw[->,red] () to[out=north,in=south east] (!u);}
    ]
    {\draw[->,blue] () to[out=north,in=south west,edge label=bar] (!u);}
    [CCC
      [F]
      [G]
    ]
    {\draw[->,red] () to[out=north,in=south east] (!u);}
  ]
\end{forest}

我有几个问题:

  1. 我怎样才能定义宏——比如说,upredupblue{label}——这样我就不必重复太多次了?
  2. 树上的一些箭头乱了。为什么?
  3. 树太紧凑了。怎样才能松一点呢?

任何帮助都将不胜感激,尤其是第一点。

谢谢,

国会议员

答案1

我可能完全误解了这个问题。假设您希望用蓝色或红色绘制箭头,具体取决于它们是在左侧还是右侧,您可以简单地修改edge path

\documentclass{article}
\usepackage{forest}
\begin{document}
\begin{forest}
 for tree={parent anchor=children,
 where n=1{edge path={%
 \noexpand\draw[-latex] (!u.parent anchor)--(.child anchor);
 \noexpand\draw[-latex,blue] (.child anchor) to[out=90,in=-135] \forestoption{edge
 label} (!u.-130);
 }}{edge path={%
 \noexpand\draw[-latex] (!u.parent anchor)--(.child anchor);
 \noexpand\draw[-latex,red] (.child anchor) to[out=90,in=-45] \forestoption{edge
 label} (!u.-50);
 }}
 },
  [AAA
    [BBB,edge label={node[midway,left=1pt]{foo}}
      [D,edge label={node[midway,left=1pt]{bar}}]
      [E]
    ]
    [CCC
      [F]
      [G]
    ]
  ]
\end{forest}
\end{document}

在此处输入图片描述

通过指定适当的端点(锚点)可以解决不正确的箭头问题。

相关内容