我收到错误:!段落在 \@@label 完成之前结束

我收到错误:!段落在 \@@label 完成之前结束

我已经浏览过这个论坛,看起来我已经正确地设置了树,但我仍然收到这个错误,我有

\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-qtreetikz-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}

森林树木

相关内容