Runaway argument

Runaway argument? 表示某个命令的参数缺少闭合的 },因此 TeX 会不断吞入后续文本来寻找它。通常最后会出现 ! Paragraph ended before \cmd was complete! File ended while scanning use of \cmd。原因几乎总是花括号不匹配。

发生了什么

TeX 读到 \command{... 时,会等待匹配的 }。如果闭合的 } 一直不来,它就会继续吞入正文。错误会打印被吞入的文字(runaway text),其开头指向未闭合的 {。如果在不允许段落的“短”参数中出现空行,会得到 Paragraph ended before ... was complete;如果直到文件末尾都没有 },则会得到 File ended while scanning use of ...

原因

  • { 对应的 } 缺失(最常见)。
  • 不允许段落断开的参数中出现空行(例如 \section{...} 中的空行)。
  • \command{... 之后没有 }

解决方法

让花括号成对:runaway text 的开头通常指向未闭合的 { 附近。用编辑器的括号匹配功能快速查找。删除误入短参数的空行。如果某个参数确实需要包含段落(空行),该宏必须以 \long 定义(LaTeX 中许多接收这类内容的命令已经如此)。

latex
% NG: } を閉じ忘れ / missing closing }
\textbf{重要な点 …(ここで閉じ忘れ)
次の段落。

% OK
\textbf{重要な点}
次の段落。