为什么不在命令和参数之间加空格?

为什么不在命令和参数之间加空格?

我希望这只是一个品味问题,但是有什么理由不将命令与其第一个参数用空格分开吗?(或者用空格分隔多个参数。)

\chapter{Introduction}
\chapter {Introduction}

\setcounter{chapter}{2}
\setcounter {chapter} {2}

我更喜欢第二种。这让散文对我来说更具可读性。不过,我想知道这是否会给我带来麻烦。

答案1

命令名称后面的空格在解析命令名称时会被吸收,根本不会生成标记。 之间的空格} {会生成字符标记,但在查找宏参数时会跳过空格标记,因此如果您愿意,可以添加空格。

\setcounter {chapter} {2}

注意这些空间是有区别的;如果你去

\newcommand\foo{%
    \setcounter {chapter} {2}%
}

在这里,后面的空格\setcounter实际上并不存在于定义中,\foo但后面的空格{chapter}存在,因此有一个字符标记,因此 TeX 需要记录其值 (32) 和 catcode (10)(尽管我感觉它在某处优化了空格,毫无疑问有人会发布 tex.web 的确切行)无论如何,由于空格的存在,定义会大一到两个字节。您的文档不太可能大到多一个字节就会导致内存不足,但这在设计 LaTeX 时是一个真正的问题,这就是为什么如果您查看 latex 和大多数核心包的源代码,您会看到一种编码风格,其中所有可移除的括号和空格都被删除了。这并不一定意味着它现在是一种好的编码风格 :-)

相关内容