![使用选项或参数是否会在环境开始处的末尾创建一个空格?](https://linux22.com/image/415845/%E4%BD%BF%E7%94%A8%E9%80%89%E9%A1%B9%E6%88%96%E5%8F%82%E6%95%B0%E6%98%AF%E5%90%A6%E4%BC%9A%E5%9C%A8%E7%8E%AF%E5%A2%83%E5%BC%80%E5%A7%8B%E5%A4%84%E7%9A%84%E6%9C%AB%E5%B0%BE%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%A9%BA%E6%A0%BC%EF%BC%9F.png)
这:
\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
会再次产生一些测试