我在 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)
\]