【问题标题】:Trees and macros with tikztikz 的树和宏
【发布时间】:2011-01-01 18:53:43
【问题描述】:

我正在尝试使用宏来构建我的树,但我没有得到我想要的结果。这是一个最小的例子:

\documentclass{文章} \使用包{tikz} \usetikzlibrary{树} \newcommand{\LeafNode}[1]{% 子{节点{#1}} } \newcommand{\InnerNode}[3]{% 子{节点{#3} #1 #2 } } \开始{文档} \开始{tikzpicture} \节点(A){A} \叶节点{B} \叶节点{C} ; \end{tikzpicture}% \hspace{2cm}% \开始{tikzpicture} \节点(A){A} \InnerNode{\LeafNode{D}}{\LeafNode{E}}{B} \叶节点{C} ; \结束{tikzpicture} \结束{文档}

我预计这会产生两棵树:

一个 / \ / \ B C B C / \ 德

但我得到了:

一种 | 甲乙 | | 乙丁 | | C C

我错过了什么还是没有办法做到这一点?

顺便说一句,如果我省略根节点上的标签,我会收到 PGF 错误:

!包 pgf 错误:没有已知形状命名。

--Tsf

【问题讨论】:

    标签: latex tikz pgf


    【解决方案1】:

    这不是您问题的直接答案,但您可以查看tikz-qtree package。它为创建树提供了更简单的语法。

    【讨论】:

    • 没错,但我已经有很多使用纯 tikz 的材料,不想混合两种风格。谢谢! -- tsf
    【解决方案2】:

    LaTeX 似乎隐含地对 \newcommand 的输出进行分组。所以,

    的结果
    \begin{tikzpicture}
     \node (A) {A}
        \LeafNode{B}
        \LeafNode{C}
     ;
    \end{tikzpicture}
    

    和这个是一样的:

     \begin{tikzpicture}
     \node (A) {A}
       {child {node {B}}}
       {child {node {C}}}
     ;
    \end{tikzpicture}
    

    TikZ 扫描显式的“子”关键字,当它隐藏在命令或块中时找不到。

    我不知道解决这个问题的任何方法,但我看不出您的宏使语法更容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多