当读取带有星号(\*)的反斜杠时会发生什么?

当读取带有星号(\*)的反斜杠时会发生什么?

我正在编写 TeX 教程,不小心输入了\*,然后发现编译器没有将其读取为错误。我知道添加*触发\ifstar条件,但我很好奇编译器如何处理\*

在 Overleaf 上,它不会产生任何错误或警告,但它也没有做任何可见的事情(甚至是一个很小的空间)。当编译器意识到控制序列标记是“ \*”时会做什么?

答案1

本身*不触发任何内容。只有一些命令会接受*变体,但它们以特殊方式定义。例如,在 LaTeX 中,我们有

% latex.ltx, line 6002:
\DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}

所以如果\vspace后面跟着*,LaTeX 就会执行\@vspacer(并吞噬星号),否则它就会执行\@vspace

在普通的 TeX 中没有*-variant(除非定义基础结构并做出特定定义)。

根据标记化规则,\*控制符号它在纯 TeX 和 LaTeX 中被定义为产生“自由乘法符号”:如果将其用于连字符,它将在行\textfont2尾产生一个细空格,后跟字符 2,通常是 ✕。它通常(但不经常)用于数学模式。

一个例子:

\documentclass{article}

\begin{document}

\parbox{0pt}{$x\*y$}

\end{document}

在此处输入图片描述

宽度\parbox为零的 将强制\discretionary使用。

相关内容