括号的垂直不对称尺寸变化

括号的垂直不对称尺寸变化

我在 LaTeX 中编写公式时遇到的一个困难是,可变大小运算符(括号等)的标准大小调整工具没有分别考虑“高”符号和“低”符号。因此,例如,如果你写类似

\[ \left(
\sum_{\substack{
0\le i\le m \\ 0<j<n}}
P(i,j)
\right) \]

其中(使用amsmath包裹) 产生一个带有两行下标的求和符号,然后括号的顶部延伸到文本顶部之上:

示例渲染

如果您尝试将交换图括在括号中,情况会变得更加糟糕。

有什么方法可以让大小不对称变化吗?括号应该能够向下延伸而不必向上延伸,反之亦然。

答案1

可能有一个包可以做到这一点……但与此同时,这里有一种方法可以保持基线正确。它会在开括号之前将线降低指定的量,然后将其提升回它应该在的位置。然后它在另一端再次执行相同的操作。可以添加其他选项,让一个命令处理所有样式的括号并处理内联与显示样式(这是针对显示样式的)——我会等着看是否有包再解决这个问题!这样做的缺点是你必须自己决定“下降”应该是多少。更复杂的方法会为你计算出来。

\documentclass{article}
\usepackage{amsmath}

\newcommand{\lowerparen}[2]{%
  \raisebox{-#1}{\(\displaystyle\left(\raisebox{#1}{\(\displaystyle #2\)}\right)\)}}

\begin{document}
\[
  Y = \lowerparen{6pt}{\sum_{\substack{0 \le i \le m \\ 0 < j < m}}X}
\]

\end{document}

这是一个稍微全面的解决方案,基于上述内容,但在数学模式方面具有更多的灵活性(感谢这个问题在数学模式上)。

\documentclass{article}

\newlength{\parenheight}
\newlength{\parendepth}
\newlength{\parendrop}

\newcommand{\paren}[4]{%
\settoheight{\parenheight}{\(#4 #2\)}%
\settodepth{\parendepth}{\(#4 #2\)}
\addtolength{\parendepth}{.5ex}
\addtolength{\parenheight}{-.5ex}
\addtolength{\parenheight}{\parendepth}
\addtolength{\parendepth}{-.5\parenheight}
\setlength{\parendrop}{-.5\parenheight}
\addtolength{\parendrop}{.5ex}
\raisebox{-\parendepth}{\(#4
\left#1%
\rule[\parendrop]{0pt}{\parenheight}%
\right.\)}
#2
\raisebox{-\parendepth}{\(#4
\left.%
\rule[\parendrop]{0pt}{\parenheight}%
\right#3\)}
}

\def\myleft#1#2\myright#3{%
\mathchoice{%
\paren{#1}{#2}{#3}{\displaystyle}%
}{%
\paren{#1}{#2}{#3}{\textstyle}%
}{%
\paren{#1}{#2}{#3}{\scriptstyle}%
}{%
\paren{#1}{#2}{#3}{\scriptscriptstyle}%
}%
}

\begin{document}


\(
  \myleft(\prod_{{s = 0 \atop s \ne 3}} X_s\myright)^2 \left(A\right) \left(x\right)
\)

\[
  \myleft(\prod_{{s = 0 \atop s \ne 3}} X_s\myright)^2 \left(A\right) \left(x\right)
\]

\end{document}

我还没有进行太多测试。我怀疑我编写的“左右”匹配方式可能会出现问题。重点是让高度对齐。

(由于这个答案已被接受,我觉得我不应该简单地用这个新答案替换原来的答案,但这只是对原来的答案进行了一点发展,所以不值得一个新的答案。所以我将它作为附录发布。)

答案2

另一个选择是,nath无需任何用户干预,就可以完成“正确的事情”

\documentclass{article}
\usepackage{nath}

\begin{document}
\begin{equation}
( \sum_{0\le i\le m\\ 0<j<n} P(i,j)) 
\end{equation}
\end{document}

注意,没有\left \right标签,没有\substack,即使这样你也会得到正确的分隔符的缩放。不幸的是,nath 与 amsmath 配合得不好。我希望有人能将 nath 的“优点”与 nath 显示数学功能分开,以便前者可以与 amsmath 配合使用。

答案3

使用大批环境将是实现垂直居中对齐的简单方法:

\[
\left(\begin{array}{c}\displaystyle%
\sum_{\substack{ 0\le i\le m\\ 0<j<n}} P(i,j)%
\end{array}\right)
\]

相关内容