当将内容包含在宏中时,LaTeX 会报告错误的错误行

当将内容包含在宏中时,LaTeX 会报告错误的错误行

我喜欢用 LaTeX C++ 风格编写

1 \mydisplay
2 {
3     \BoomUndefinedMacro \\
4     x + 1 = 2
5 }

但是 LaTeX,LaTeX 说错误在第 5 行,而不是第 3 行。
这没有用,因为在更复杂的用例中,显示的内容有上百行。

是否有办法编写封闭宏以便 LaTeX 给出正确的行号?

\documentclass{article}

\usepackage{amsmath}

\newcommand{\mydisplay}[1]{\begin{align} #1 \end{align}}

\begin{document}

\mydisplay
{
    \boomUndefinedMacro \\
    x + 1 = 2
}

\end{document}

答案1

你真的无能为力。当 TeX 吸收参数时,它不会扩展宏或查看它们是否已定义。因此,当\boomUndefinedMacro发现时(这发生在吸收参数的后期阶段),TeX 的读取装置已经位于带有右括号的行,这就是它将显示错误的行。

相关内容