如何在“ \forestset”中设置需要使用节点遍历的结果进行延迟计算的样式?

如何在“ \forestset”中设置需要使用节点遍历的结果进行延迟计算的样式?

将下面树的规范包装到my binomial定义的样式中的正确方法是什么\forestset?为什么?

以下代码可以正常工作:

\documentclass[tikz,border=10pt]{standalone}
\usepackage{forest}
\def\p{.25}
\begin{document}
  \begin{forest}
    before typesetting nodes={
      for tree={
        if level=0{
          content={1},
        }{
          content/.wrap pgfmath arg={#1}{content("!u")*\p},
        },
      }
    },
    [A
      [B
        [D
        ]
        [E
        ]
      ]
      [C
        [F
        ]
        [G
        ]
      ]
    ]
  \end{forest}
\end{document}

而以下则不然:

\documentclass[tikz,border=10pt]{standalone}
\usepackage{forest}
\forestset{
  my binomial/.style={
    before typesetting nodes={
      for tree={
        if level=0{
          content={1},
        }{
          content/.wrap pgfmath arg={#1}{content("!u")*\p},
        },
      }
    },
  },
}
\def\p{.25}
\begin{document}
  \begin{forest}
    my binomial,
    [A
      [B
        [D
        ]
        [E
        ]
      ]
      [C
        [F
        ]
        [G
        ]
      ]
    ]
  \end{forest}
\end{document}

具体来说,我遇到了一个Missing number, treated as zero \end{forest}错误。我推测这与扩展有关,而我对此知之甚少。如果可能的话,我想了解这个问题,不管是否有解决方法。

答案1

定义样式会创建另一个宏参数层,因此需要将 加倍#,如下所示:

content/.wrap pgfmath arg={##1}{content("!u")*\p},

相关内容