奇怪的错误:在数组中使用 [ ]

奇怪的错误:在数组中使用 [ ]

感谢您的阅读。

当我尝试在数组中使用一些交换器时发现此错误:

!缺失数字,视为零。a l.9 [a] 这里应该是一个数字;我插入了“0”。(如果您不明白我为什么需要看到一个数字,请在 TeXbook 索引中查找“奇怪的错误”。)

!非法测量单位(插入 pt)。尺寸的单位可以是 em、ex、in、pt、pc、cm、mm、dd、cc、nd、nc、bp 或 sp;但您的单位是新的!我假设您指的是 pt,表示打印机的点。要从此错误中正常恢复,最好删除错误的单位;例如,键入“2”以删除两个字母。(请参阅 TeXbook 的第 27 章。)

!\ifdim 中缺少插入的 =。我原本以为会看到 '<'、'=' 或 '>'。但并没有。

使用以下代码:

\documentclass{article}

\usepackage[english]{babel}

\begin{document}

$$\begin{array}{c}
first ligne\\
[second ligne]
\end{array}$$

\end{document}

代码会创建一个 PDF,其中第二页有一些文本,右侧有一些黑色空间。当您删除左括号 [ 或在第一行使用括号时,它确实计算得很好。

这与连续两行上的 \\ [ 有关吗?

答案1

发生这种情况是因为该命令\\可以有一个可选参数:\\[<dimen>],其中<dimen>是需要跳过的垂直空间。

当下一行以 开头时[,TeX 认为其后面的是一个维度,因此是Missing number, treated as zero

您可以\\通过以下方式告知命令它没有可选参数\relax

\documentclass{article}

\usepackage[english]{babel}

\begin{document}

$$\begin{array}{c}
first ligne\\\relax
[second ligne]
\end{array}$$

\end{document}

egreg 最近在为什么xparse不接受新行上的可选参数,这正是原因。

答案2

 \\
 [second ligne] 

读作 \\[second ligne],然后被解释为附加垂直间距的长度规范,由 组成second ligne,当然,这里没有长度。这样解释的主要原因是这里之后没有真正的换行符\\

一种可能的解决方案:如果您的目的要求 ,那么在\\和之间插入一个空行。[[...]

更好的解决方案是将这[]对隐藏在宏中,这样还可以进行逻辑标记。

附注:不要使用$$...$$,因为这是近 25 年来弃用的语法。请改用\[...\]$...$

\documentclass{article}

\usepackage[english]{babel}

\begin{document}

$\begin{array}{c}
first ligne\\

[second ligne]
\end{array}$

\end{document}

更好的解决方案:

\documentclass{article}

\usepackage[english]{babel}

\newcommand{\bracketed}[1]{[#1]}

\begin{document}

$\begin{array}{c}
x^{2}\\
\bracketed{x^{3}}
\end{array}$

\end{document}

相关内容