我喜欢用 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 的读取装置已经位于带有右括号的行,这就是它将显示错误的行。