项目标签末尾的右方括号在其前面添加空格

项目标签末尾的右方括号在其前面添加空格

如果在项目标签末尾使用右方括号,则其前面会添加空格。此问题出现在所有标准列表环境(itemizeenumeratedescription)中。如何避免这种情况?

项目标签末尾的右方括号在其前面添加空格

\documentclass{article}

\begin{document}

\begin{enumerate}
  \item[[Vpv]] For any\dots
  \item[[V\(\lnot\)]] For any\dots
\end{enumerate}

\end{document}

答案1

  1. 您的解决方案绝对正确:如果内部内容包含,则需要用括号括起来]

  2. 我很确定我们遇到过一个与此问题有相同根本原因的问题,但我不知道该搜索什么,所以现在找不到它。如果它存在,它可能有一个完整的解释,但以防万一,这里是一个快速版本。

可选参数(例如命令的参数\item)的解析方式与强制参数不同。当 LaTeX 说“这里看起来像是一个可选参数”时,TeX 开始寻找它的结尾。结束由结束方括号表示。因此,TeX 会寻找与开始方括号处于同一分组级别的方括号。到目前为止,一切顺利。到目前为止,与括号(和)]一样。关键的区别在于,开始方括号不会{}不是打开一个新的 TeX 组。因此\item[[hello]]第一的 ]与开头处于同一级别[。第二个[不会影响这一点。因此,第一个]将被视为分隔符。

因此,当您输入 时\item[[hello]]\item命令 get[hello作为其参数。第一个[和第一个]被吃掉,然后项目的开头是第二个]。因此,空格是项目标签(即[hello)和项目文本(以 开头])之间的空格。

在这些情况下,解决方案是明确添加 TeX 分组级别,以便 TeX 看到正确的右方括号。这就是您的解决方案所做的。现在,它是第二 ]它与第一个匹配,因为它是第一个处于同一级别的。然后\item获取(在我的例子中)[hello]作为其参数,它是第二被吞下的支架。

答案2

我注意到将参数嵌套\item在花括号中很有帮助:

\documentclass{article}

\begin{document}

\begin{enumerate}
  \item[{[Vpv]}] For any\dots
  \item[{[V\(\lnot\)]}] For any\dots
\end{enumerate}

\end{document}

使用花括号作为 \item 参数可以纠正间距

相关内容