LaTeX 错误不会抛出错误

LaTeX 错误不会抛出错误

我今天注意到

\documentclass{article}

\begin{document}
\[
\Big{(a + b \Big)}^2  % yikes, note the order of the brackets!
\]
\end{document}

编译为

在此处输入图片描述

怎么会这样?难道不应该吗

{\Big(a + b \Big)}^2

答案1

你没有提供测试文件,但你的片段可能处于数学模式,所以

\documentclass{article}

\begin{document}

$\Big{(a + b \Big)}^2$
\end{document}

\Big接受一个参数(旨在作为分隔符),但这里是(a + b \Big) 由于实现的偶然,传入多个标记不会出错,拉伸应用于第一个分隔符,然后排版后续标记。然后,在其中,被吸收以表示第一个参数,\Big) 它们不围绕表达式形成一个组,因此实际上只是附加到最后的)。{}\Big^

标记最好这样做

$\Bigl(a + b \Bigr)^2$

答案2

定义\Big为:

\def\Big#1{{\hbox{$\left#1\vbox to11.5pt{}\right.\n@space$}}}

因此,您的使用情况

\Big{(a + b \Big)}^2

(a + b \Big)#1并扩展为

{\hbox{$\left(a + b \Big)\vbox to11.5pt{}\right.\n@space$}}^2

第二个\Big带参数的函数)也会扩展。结果是

{\hbox{$\left(a + b{\hbox{$\left)\vbox to11.5pt{}\right.\n@space$}}\vbox to11.5pt{}\right.\n@space$}}^2 

从 TeX 的角度来看这是正确的。

答案3

从实用角度来说,如果你想要将其变成 TeX 可以捕获的错误,你可以将其定义为命令。例如:

\documentclass{article}
\usepackage{mathtools}

\DeclarePairedDelimiter\parens{\lparen}{\rparen}
\DeclarePairedDelimiter\bracks{\lbrack}{\rbrack}

\begin{document}

\[ \bracks[\big]{\parens{a + b^2}}
\]

\end{document}

这段代码不可能出现开始或结束分隔符的大小不匹配,也不可能出现以错误顺序结束分隔符的情况。如果开始和结束括号不匹配,编译器(和许多编辑器)会发现这种情况。

这是否就是您所寻找的呢?

相关内容