使用选项或参数是否会在环境开始处的末尾创建一个空格?

使用选项或参数是否会在环境开始处的末尾创建一个空格?

这:

\documentclass[12pt]{book}
\usepackage[T1]{fontenc}

\newenvironment*{testenvironment}[1][]{%
    #1 some%
}
{}

\begin{document}

\begin{testenvironment}
    text
\end{testenvironment}

\begin{testenvironment}[also]
    text
\end{testenvironment}

\end{document}

令人惊讶的是给出了这个:

在此处输入图片描述

当写 时\begin{testenvironment}{},空格会添加到“some”后面。(就像使用选项时一样。)但是,这是为什么呢?这似乎很奇怪。

答案1

这里要注意的是,LaTeX 并没有添加空格,只是有时它会忽略空格。

some您的环境代码以so结尾

\begin{testenvironment}text

产生一些文本

如果你添加一个空格,如

\begin{testenvironment} text

那么如果环境没有可选参数,这将产生一些文本,但它会产生一些文本。

原因是 latex 会跳过空白来寻找可选参数

\begin{testenvironment}[about]

或者

\begin{testenvironment}    [about]

都是有效的,所以环境之后的所有空格都会被忽略,然后 latex 会查看是否[存在表示该选项的空格,但无论哪种情况,空格都不会恢复。

你提到的情况

\begin{testenvironment}{} test

确实会产生空格,因为可选参数的扫描在 处结束,{因此测试前的空格会像往常一样产生单词空格。再次强调,这只是文档中使用的空格,环境不会添加空格:

\begin{testenvironment}{}test

会再次产生一些测试

相关内容