为什么在 `\long\def\bold#1{{\bf#1}}` 中使用双花括号

为什么在 `\long\def\bold#1{{\bf#1}}` 中使用双花括号

我正在阅读 Knuth 的《TeXbook》。

第 205 页有

如果你确实想要一个控制序列允许带有 \par 标记的参数,你可以通过在 '\def' 之前加上 '\long' 来将其定义为“长”宏。例如,由以下代码定义的 \bold 宏

\long\def\bold#1{{\bf#1}}

能够将几个段落设置为粗体...

我尝试只使用一组花括号。它没有任何问题。

\long\def\bold#1{\bf#1}

\bold{Hello

world}

为什么 Knuth 在 中写了两组花括号{{\bf#1}}。是否存在特殊情况?

答案1

根据定义

\long\def\bold#1{\bf#1}

\bold{hello world}只是扩展为\bf hello world,因此\bf不仅适用于 的参数\bold,还适用于后续内容。事实上,请考虑以下示例。

\documentclass{article}
\long\def\bold#1{\bf#1}
\begin{document}
\bold{Hello

world}

Hello world
\end{document}

这输出 这显然不是预期的结果。

添加第二对花括号可以限制\bf为的参数\bold

相关内容