如何在同一棵树中获得不同的边缘样式

如何在同一棵树中获得不同的边缘样式

我正在使用forest来制作带有选项的树forked edges。我希望能够将其与 结合起来sn edges。这是我的 MWE:

\documentclass[landscape]{article}

\usepackage[edges,linguistics]{forest}

\begin{document}

\begin{forest}
forked edges, for tree={font=\sffamily}
[ABC
    [A1
        [A2]
        [A2]]
    [B1]
    [C1, sn edges
        [C2]
        [C2]]]
\end{forest}

\end{document}

因此,例如,我希望节点 C1 的子节点具有该sn edges选项,但显然forked edges开头的选项会强制整棵树具有该样式。

答案1

在我看来这确实很奇怪,但这个网站关心的是技术实施,而不是实施事物的智慧。

话虽如此,问题还是不太清楚。这只是我能想到的最好的解释。

最佳解释

如果我必须猜测您想要什么,而不是您说您想要什么,我猜您想要的是下面这样的东西。

最佳的揣测

\documentclass[border=10pt]{standalone}
\usepackage[edges,linguistics]{forest}
\forestset{%
  declare boolean={fork me}{false},
  fork my edges/.style={%
    for tree={fork me},
    before typesetting nodes={%
      where fork me={forked edge}{},
    },
  },
  fork me not/.style={%
    fork me=false,
    sn edges,
  },
}
\begin{document}
\begin{forest}
  fork my edges,
  for tree={font=\sffamily}
  [ABC
    [A1
      [A2]
      [A2]]
    [B1]
    [C1, fork me not
      [C2]
      [C2]]]
\end{forest}
\begin{forest}
  fork my edges,
  for tree={font=\sffamily}
  [ABC
    [A1
      [A2]
      [A2]]
    [B1]
    [C1, for descendants={fork me not}
      [C2]
      [C2]]]
\end{forest}
\end{document}

相关内容