![方程内的矩阵](https://linux22.com/image/276808/%E6%96%B9%E7%A8%8B%E5%86%85%E7%9A%84%E7%9F%A9%E9%98%B5.png)
我在让它正确显示方面遇到了一些困难。
\begin{equation}
{\bf H} = -{\bf \mu} \cdot {\bf B} = - \gamma B_o {\bf S}_z = -\frac{\gamma B_o\hbar}{2}
\begin{bmatrix} 1&0\\0&-1 \end{bmatrix}.
\end{equation}
如下所示,
我希望矩阵高度与方程的其余部分一致。
答案1
\documentclass{article}
\usepackage{amsmath}
\usepackage[nodisplayskipstretch]{setspace}
\doublespacing
\everydisplay\expandafter{\the\everydisplay\setstretch{1}}% return to singlespacing
\begin{document}
\begin{equation}
\mathbf{H} = -\mathbf\mu \cdot \mathbf{B} = -\gamma B_o \mathbf{S}_z = -\frac{\gamma B_o\hbar}{2}
\begin{bmatrix} 1&0\\0&-1 \end{bmatrix}.
\end{equation}
\end{document}
答案2
我会修改\env@matrix
所有矩阵构造所基于的命令;
\documentclass{article}
\usepackage{amsmath,bm}
\usepackage{setspace}
\usepackage{lipsum} % just for this example
\makeatletter
\def\env@matrix{\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\linespread{1}\selectfont
\renewcommand{\arraystretch}{1.2}%
\array{*\c@MaxMatrixCols c}}
\makeatother
\doublespacing
\begin{document}
\lipsum*[2]
\begin{equation}
\mathbf{H} =
-\bm{\mu} \cdot \mathbf{B} =
- \gamma B_o \mathbf{S}_z = -\frac{\gamma B_o\hbar}{2}
\begin{bmatrix} 1&0\\0&-1 \end{bmatrix}.
\end{equation}
\lipsum[3]
\end{document}
还可以尝试不带\renewcommand{\arraystretch}{1.2}
,我添加 是为了将行间隔开一点,这样似乎更好\doublespacing
。
实际上,使用 来改进某些东西非常困难\doublespacing
,这会破坏任何良好排版的尝试。
这与 Mico 和 Herbert 的方法有何不同?
Mico 的解决方案只适用于equation
。Herbert 的解决方案则将单倍行距应用于全部显示环境,例如align
,减少对齐方程之间的行距。这可能是可取的,也可能不是,这取决于你。
请注意,{\bf H}
不应使用,而应使用\mathbf{H}
。此外,您会注意到,{\bf \mu}
不会加粗 mu;使用\bm{\mu}
并加载bm
包,就像在我的代码中一样。
答案3
您可以使用该etoolbox
包并使用其\AtBeginEnvironment
命令将间距重置为环境\singlespacing
的开始位置equation
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{setspace} % per the OP's information provided in a comment
\doublespacing
\usepackage{etoolbox}
\AtBeginEnvironment{equation}{\singlespacing}
\begin{document}
\begin{equation}
\mathbf{H} = -\boldsymbol{\mu} \cdot \mathbf{B} = - \gamma B_o \mathbf{S}_z = -\frac{\gamma B_o\hbar}{2}
\begin{bmatrix} 1&0\\0&-1 \end{bmatrix}.
\end{equation}
\end{document}
equation
备注:如果只需要固定环境,则此方法非常简单;如果文档中出现许多不同的显示数学环境,则它很快就会变得乏味。
答案4
嗯,我以为会有一个简单的(不优雅的)答案,而且确实有!只需切换到单倍行距并添加一些\vspace
即可让一切变得完美!
Text here. . .Magnetic resonance imaging blah blah Hamiltonian. . .
\vspace{-0.5cm}
\singlespacing
\begin{equation}
{\bf H} = -{\bf \mu} \cdot {\bf B} = - \gamma B_o {\bf S}_z = -\frac{\gamma B_o\hbar}{2}
\begin{bmatrix} 1&0\\0&-1 \end{bmatrix}.
\vspace{0.5cm}
\end{equation}
\doublespacing
感谢 egreg 的评论!注:egreg警告说,这可能会导致公式移到下一页的顶部,这是大忌。因此,这种快速解决方案可能不是所有人的解决方案。