我对所添加的空间有疑问\right.
。
我读过了这关于该主题的回答,其中@egreg 提出了一个删除此空格的宏。但是,当我在自己的文档中使用它时,空格仍然会增加。我编写了一个 MWE,其中我将 的值设置\nulldelimiterspace
为10pt
以便清晰。MWE 是:
\documentclass{minimal}
\usepackage{amsmath}
\newcommand{\zerodel}{.\kern-\nulldelimiterspace}
\begin{document}
\setlength{\nulldelimiterspace}{10pt}
I$\left(\delta t;\delta t;\right.\delta t;\delta t$I
I$\left(\delta t;\delta t;\right\zerodel\delta t;\delta t$I
I$\left(\delta t;\delta t;\delta t;\delta t\right.$I
I$(\delta t;\delta t;\delta t;\delta t$I
\end{document}
其结果是:
您可以清楚地看到第二个分号(第 1 行)后面有一个 10pt 的大空格,\zerodel
使用 的地方有一个较小的空格(第 2 行),一个空格后数学(第 3 行)\right.
被移动到数学块之后,并且没有添加任何空格,\left
也没有\right
使用任何位置(第 4 行)。
第 4 行的外观是我想要的,但我希望有\left
/\right
自动间距。
为什么\zerodel
不工作?我该如何修复它?
谢谢!
答案1
让我们看一些变化,留到\right.
最后。我们将使用mleftright
H. Oberdiek 的包。
\documentclass{article}
\usepackage{amsmath,mleftright}
\newcommand{\zerodel}{.\kern-\nulldelimiterspace}
\begin{document}
\setlength{\nulldelimiterspace}{10pt} % just for experiment
I$\left(\delta t;\delta t\right\zerodel;\delta t;\delta t$I
I$\mleft(\delta t;\delta t\mright\zerodel;\delta t;\delta t$I
I$(\delta t;\delta t;\delta t;\delta t$I
I$\mleft(\delta t;\delta t\mright.;\delta t;\delta t$I
\end{document}
第一行。
\right\zerodel
和之间插入一个空格,因为和;
之间的子公式构成了一个“内部”原子。\left
\right
第二、三行
结果完全相同。请注意,分号必须放在后面\mright\zerodel
,否则其“标点符号原子”字符将被隐藏在子公式中。
第四行
无论如何都会插入\mleft.
字距\nulldelimiterspace
。对\mleft
–\mright
只是将“内部”字符移除到子公式中。
答案2
这既不需要乳胶也不amsmath
需要。这是基本的 tex 行为。
尝试使用 tex 而不是 latex:
I$\left(\delta t;\delta t;\right.\delta t;\delta t$I
\bye
结果如下:
(我知道这不是答案,但输出不能在评论中显示。)
在 中,knuth 调整了无方向性的、等plain.tex
命令后的空间,如下所示:\big
\Big
\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
\def\n@space{\nulldelimiterspace\z@ \m@th}
奇怪的是,如果在空间减少约一半\n@space
后插入等效项,但它并没有完全消失。因此似乎需要对附录 g 或 tex 本身进行探索。(但今天对我来说不是。)\right.
然而,这也是不盲目使用所有分隔符的另一个很好的\left
理由\right
。