如果在项目标签末尾使用右方括号,则其前面会添加空格。此问题出现在所有标准列表环境(itemize
、enumerate
和description
)中。如何避免这种情况?
\documentclass{article}
\begin{document}
\begin{enumerate}
\item[[Vpv]] For any\dots
\item[[V\(\lnot\)]] For any\dots
\end{enumerate}
\end{document}
答案1
您的解决方案绝对正确:如果内部内容包含,则需要用括号括起来
]
。我很确定我们遇到过一个与此问题有相同根本原因的问题,但我不知道该搜索什么,所以现在找不到它。如果它存在,它可能有一个完整的解释,但以防万一,这里是一个快速版本。
可选参数(例如命令的参数\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}