← Back to blog

The article body for this language is not available yet; showing the other language.

Blog & updates

TikZ 少分号报错 Undefined control sequence?3 分钟定位 \draw 编译失败

2026-05-21

搜「tikz undefined control sequence draw」多半是上一行少分号。本文用最小示例说明原因、排查步骤,并推荐 DrawFig 可视化出图避免语法陷阱。

TikZ 少分号报错 Undefined control sequence?3 分钟定位 \draw 编译失败

报错类似下面这样,但 \draw 明明写对了?
! Undefined control sequence.
l.42 \draw (A) -- (B);
很多人会去改第 42 行的 \draw,真正的问题往往在第 41 行末尾少了一个分号 ;。这是百度上「tikz undefined control sequence draw」「tikz 少分号」类搜索里最高频的一类。
📌 完整 7 类报错总览: TikZ 编译失败怎么办?7 类高频报错排查与 DrawFig 替代方案

为什么少分号会让 \draw「未定义」?

在 TikZ 里,\node\draw\path 等命令通常要以 ; 结束一条路径或一个节点声明。TeX 是按行连续读入的:若上一句没结束,下一行的 \draw 会被当成「还在上一句里的非法 token」,于是报 Undefined control sequence,行号却指向 \draw 那一行。

错误示例

\begin{tikzpicture}
  \node (A) {A}          % ← 少了分号
  \draw (A) circle (5pt); % 报错常出现在这一行
\end{tikzpicture}

正确写法

\begin{tikzpicture}
  \node (A) {A};         % ← 必须有分号
  \draw (A) circle (5pt);
\end{tikzpicture}

3 步快速排查

  1. 看报错行的上一行 — 是否以 ; 结尾(% 注释行除外)。
  2. 用最小骨架试编译 — 只保留 \node + 一条 \draw,确认环境没问题后再加回复杂代码。
  3. 二分法注释 — 注释掉一半 tikzpicture 内容再编译,缩小到具体哪一句缺分号。
最小可编译骨架:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \node (A) at (0,0) {A};
  \draw (A) circle (3pt);
\end{tikzpicture}
\end{document}

还容易和「少分号」混淆的情况

现象 可能不是分号,而是
\end{tikzpicture} 未定义 同上,或环境没闭合
right=of 相关 \usetikzlibrary{positioning} → 见 缺少 tikzlibrary 专题
整篇 Overleaf 红一片 先看 Overleaf TikZ 编译失败排查

DrawFig 推荐:从根上少写「会忘分号的代码」

DrawFig 编辑器 里用拖拽或 AI 画图,不需要手写每条 \draw …;。定稿后 导出 → TikZ,再贴进论文做一次编译即可,把「分号笔误」从日常编辑里拿掉。 推荐流程: 画布编辑 → 导出 TikZ → standalone 试编译 → 并入主文档。

总结

  • undefined control sequence + draw,先查上一行有没有 ;
  • 报错行号经常误导,不要只盯着 \draw 改。
  • 需要系统对照其它报错类型,请看主文:7 类 TikZ 编译失败排查