不平衡的美元符号

不平衡的美元符号

我很好奇:为什么以下两个例子的行为不同?

示例 1:(有效,在 displaymath 模式下显示 xyz。)

\newcommand\weird{$$xyz$}
\weird$

示例 2:(错误,缺少插入 $。)

\newcommand\curious{$uvw$$}
$\curious

如果我\newcommand用替换,会出现同样的现象\def

引擎盖下发生了什么?

答案1

第一个例子:

\newcommand\weird{$$xyz$}
\weird$
  • \weird被扩展$$xyz$并处理;
  • $确定第一个之后,TeX 会搜索下一个,因为...和...的设置$方式有所不同;$$$$$$
  • TeX 找到后续的$,从而启动显示数学等式;
  • 处理完方程内部之后,寻找一个闭式$$
  • TeX 找到$(的一部分\weird)并像之前一样搜索后续的$
  • TeX 找到闭合值$(在 之外\weird)并关闭显示数学等式。

使用更像 LaTeX 的编码,扩展的解释类似于

\[xyz\]

第二个例子:

\newcommand\curious{$uvw$$}
$\curious
  • TeX 查找$并寻找以下内容,因为...和...的设置$方式有所不同;$$$$$$
  • 没有后续的$(实际上,下一个标记是\curious),因此 TeX 打开一个常规内联数学表达式;
  • TeX 扩展\curious$uvw$$
  • TeX 查找$(内部\curious)并关闭内联数学表达式;
  • TeX 流程uvw
  • TeX 查找$并寻找以下内容,因为...和...的设置$方式有所不同;$$$$$$
  • TeX 找到后续$并打开显示数学表达式;
  • $$未发现关闭— 错误。

使用更像 LaTeX 的编码,扩展的解释类似于

\(\)xyz\[

答案2

正如 TeXbook 第 24 章所解释的那样,(类别代码 3)$不能处于垂直模式:如果在 TeX 处于垂直模式时发现它,则会启动水平模式并$重新检查。

第 25 章规定

$。“数学移位”字符使 TeX 进入数学模式或以以下方式显示数学模式:TeX 查看以下标记而不展开它。如果该标记是 a$并且 TeX 当前处于不受限制的水平模式,则 TeX 会中断当前段落 […]。否则,TeX 会将查看的标记放回输入中,进入新的分组级别,插入标记\everymath,并处理“⟨数学模式材料⟩ $[…]”。

该条款无需扩大是理解你发现的内容的关键。

随着\weird$,TeX 不断扩展\weird,因此它看到$$weird$$

使用$\curious,以下标记$不是 $,因此 TeX 会启动内联数学模式,并且只有在启动后(插入标记后\everymath)才会扩展\curious,这会留$curious$$在输入流中。第一个$结束刚刚启动的数学模式,$$并将启动显示数学模式。

但是,\hbox{\weird$}和 都\hbox{$\curious$}不会引发错误,但在这种情况下xyzuvw会处于文本模式。为什么会这样?“如果 TeX 当前处于不受限制的水平模式”子句进入 action: 在 内部\hbox,TeX 处于受限制的水平模式:上述规则暗示在受限的水平模式下$$只是一个空的数学公式。

答案3

latex 中的所有命令都以 开头。 前面的任何符号都将成为文本的一部分。 开头的 $ 符号表示它是一个数学符号。

相关内容