我正在尝试使用宏构建我的树,但我没有得到我想要的结果。这是一个最小的例子:
\documentclass{article} \usepackage{tikz} \usetikzlibrary{trees} \newcommand{\LeafNode}[1]{% child {node {#1}} } \newcommand{\InnerNode}[3]{% child {node {#3} #1 #2 } } \begin{document} \begin{tikzpicture} \node (A) {A} \LeafNode{B} \LeafNode{C} ; \end{tikzpicture}% \hspace{2cm}% \begin{tikzpicture} \node (A) {A} \InnerNode{\LeafNode{D}}{\LeafNode{E}}{B} \LeafNode{C} ; \end{tikzpicture} \end{document}
我希望这能产生两棵树:
A A / \ / \ B C B C / \ D E
但我得到了:
A | A B | | B D | | C C
我错过了什么或没有办法吗?
BTW,如果我省略了根节点上的标签,我会收到PGF错误:
! Package pgf Error: No shape named is known.
- Tsf
答案 0 :(得分:1)
这不是您问题的直接答案,但您可以查看tikz-qtree package。它为创建树提供了更简单的语法。
答案 1 :(得分:1)
似乎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扫描明确的“子”关键字,并在隐藏在命令或块中时找不到它。
我不知道这方面的任何方法,但我没有看到你的宏使语法更容易。