这:
\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
会再次产生一些测试