我已经浏览过这个论坛,看起来我已经正确地设置了树,但我仍然收到这个错误,我有
\usepackage{tikz}
\usepackage{tikz-qtree}
在标题中。
以下是导致问题的代码:
\begin{tikzpicture}
\Tree
[.{Boolean Groups}
[.{Abelian Groups}
[.Groups]
]
[.{Class 3}
[.{Class 5}]
[.{Class 1}]
[.{Class 2}]
[.{Class 4}]
]
]
\end{tikzpicture}
答案1
习惯这个错误,这是一个常见的错误tikz-qtree
:tikz-qtree
需要在节点的内容和结束之前有一个空格]
。因此,您需要]
在树中的每个之前插入一些空格。
\Tree
[.{Boolean Groups}
[.{Abelian Groups}
[.Groups ] % Here
]
[.{Class 3}
[.{Class 5} ] % Here etc.
[.{Class 1} ]
[.{Class 2} ]
[.{Class 4} ]
]
]
如果您需要将树中的特定节点相互连接,则可以添加显式\node
命令,然后使用常规 TikZ 绘图命令来连接它们。要将“阿贝尔群”连接到“第 5 类”,请使它们成为每个节点:
\documentclass{article}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}
\Tree
[.{Boolean Groups}
[.\node (A) {Abelian Groups};
[.Groups ]
]
[.{Class 3}
[.\node (5) {Class 5}; ]
[.{Class 1} ]
[.{Class 2} ]
[.{Class 4} ]
]
]
\draw (A) -- (5);
\end{tikzpicture}
\end{document}
答案2
forest
允许您使用稍微直观的语法来绘制树,我认为:
不需要在结束括号前留空格,尽管这样做也没有问题;
不需要在新的子树前面加上点 - 只需使用嵌套的括号来表示树结构;
无需明确地将事物创建为 TikZ 节点来命名它们 - 所有节点都是 TikZ 节点,可以使用 赋予名称,
name=
并且如果需要,可以使用 赋予额外的名称alias=
。
在下面的代码中,我还使用了phantom
节点,以便将左下方的节点向外移动,以便abelian groups
和之间的连接class 5
显示得更自然。
\documentclass[tikz, border=5pt, varwidth, multi]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
parent anchor=south,
child anchor=north,
}
[Boolean Groups
[Abelian Groups, name=abelian groups
[Groups]
[, phantom]
]
[Class 3
[Class 5, name=class 5]
[Class 1]
[Class 2]
[Class 4]
]
]
\draw (abelian groups.south) -- (class 5);
\end{forest}
\end{document}