\left
我稍微修改了周围的间距\right
如这里所述。
\let\originalleft\left
\let\originalright\right
\renewcommand{\left}{\mathopen{}\mathclose\bgroup\originalleft}
\renewcommand{\right}{\aftergroup\egroup\originalright}
我更喜欢修改后的版本,除了紧接着\prod
或 的\sum
情况。在这种情况下,间距太紧,如下所示。
常规左侧
自定义左侧
代码
\vec z_k \sim p_k(\vec z_k) = p_0(\vec z_0) \ \prod_{i=1}^k
\left|
\det \frac{\partial f_i(\vec z_{i-1})}{\partial \vec z_{i-1}}
\right|^{-1}.
问:有没有办法只在这种情况下恢复到旧的间距,并保留其他地方的\left
更改?\right
答案1
您找到的链接已经很旧了。该链接中讨论的问题上升到左右包中提供了名为\mleft
和 的宏\mright
。总之,无需再手动修改\left
和。\right
我要么加载mleftright
包并使用\mleft\vert
,\mright\vert
要么加载mathtools
包并使用其\DeclarePairedDelimiter
宏来创建一个名为的宏\abs
(并且自动\abs*
生成自动调整“栅栏”大小的变体宏)。如以下屏幕截图中的前两行所示,这两种方法都产生了相同的输出,即紧凑的输出。
\mleft{<fence>}
最后,直接回答你的问题:如果你喜欢和\mright{<fence>}
在大多数情况下产生的外观,你可以\mleftright
在文档顶部发出指令;这会使\left
和默认\right
表现得像\mleft
和\mright
。如果你需要恢复 和 的“标准”行为\left
,\right
只需发出命令\mleftrightrestore
;这在本地(即 TeX 组中)也有效。例如,像这样:\begingroup \mleftrightrestore \left\vert <stuff> \right\vert \endgroup
。另请参阅屏幕截图的第三行及其相关的 LaTeX 代码。或者,如果出于某种原因你更喜欢不是使用该mleftright
包,而是希望使用您在查询中发布的代码来修改和的默认属性\left
,\right
只需使用\originalleft
和\originalright
即可访问\left
和的原始[双关语]工作原理\right
。
\documentclass{article}
\usepackage{mathtools} % for \DeclarePairedDelimiter utility macro
\DeclarePairedDelimiter{\abs}{\lvert}{\vert}
\usepackage{mleftright}
\mleftright % make \mleft and \mright the default
\begin{document}
\begin{align*}
\vec z_k \sim p_k(\vec z_k)
&= p_0(\vec z_0) \prod_{i=1}^k
\abs*{
\det \frac{\partial f_i(\vec{z}_{i-1})}{\partial\vec{z}_{i-1}}
}^{-1} \\
&= p_0(\vec z_0) \prod_{i=1}^k
\left\vert % remember that behavior of \left and \right has been changed
\det \frac{\partial f_i(\vec{z}_{i-1})}{\partial\vec{z}_{i-1}}
\right\vert^{-1}\\
&= p_0(\vec z_0) \prod_{i=1}^k
\begingroup \mleftrightrestore % restore behavior of \left and \right locally
\left\vert
\det \frac{\partial f_i(\vec{z}_{i-1})}{\partial\vec{z}_{i-1}}
\right\vert^{-1} \endgroup
\end{align*}
\end{document}