使用宏定位标签树的边缘

使用宏定位标签树的边缘

在这棵树中,我希望边缘标签水平对齐,可能更靠近边缘。这棵树可能不是二叉树。

我还想通过以下方式减少混乱并节省打字时间:

  \edge node[auto=right] {1};

在宏中,但是\ee在我的 mwe 中失败了。

我希望有一个tikz-qtree解决方案,但这不是必需的。

在此处输入图片描述

平均能量损失

\documentclass{standalone}
\usepackage{tikz-qtree}
\newcommand{\ee}[1]{%
    \edge node[auto=right] {#1}
}
\begin{document}
\begin{tikzpicture}[every tree node/.style={draw,rectangle,align=center},
   level distance=1.5cm,sibling distance=1.0cm, 
   edge from parent path={(\tikzparentnode) -- (\tikzchildnode)}]
  \Tree [.root
%    \ee{1};
    \edge node[auto=right] {1};
          [.1
            \edge node[auto=right] {1}; 2
            \edge node[auto=right] {2}; 3
          ]
    \edge node[auto=right] {2};          
    [.2
            \edge node[auto=right] {1}; 3 
            \edge node[auto=right] {2}; 4
    ]
    ]
  ]
\end{tikzpicture}
\end{document}

答案1

@campa 关于宏和搜索的建议 node[midway,left] 很好地解决了我的问题。

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz-qtree}
\newcommand{\ee}[1]{%
    node[midway,left] {#1}
}
\begin{document}
\begin{tikzpicture}[every tree node/.style={draw,rectangle,align=center},
   level distance=1.5cm,sibling distance=0.7cm, 
   edge from parent path={(\tikzparentnode) -- (\tikzchildnode)}]
  \Tree [.root
    \edge \ee{1};
    [.1
      \edge \ee{1}; 2
      \edge \ee{2}; 3
    ]
    \edge \ee{2};          
    [.2
      \edge \ee{1};
            [.3
              \edge \ee{1}; 4
              \edge \ee{2}; 5                            
            ]
      \edge \ee{2}; 4
    ]
    ]
  ]
\end{tikzpicture}
\end{document}

相关内容