我正在尝试编写一个包含两个项目和一个分数的矩阵。我发现矩阵输出非常奇怪,因为行和列的间距不是相同的。
除此之外,分数似乎占用了太多空间,我尝试使用大小命令来减小字体,但它们似乎在数学模式下不起作用。我写的代码如下:
\begin{align*}
Q= \begin{pmatrix}
\dfrac{1}{\Delta \alpha^2_{\mathrm{max}}} & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & \dfrac{1}{\Delta h^2_{\mathrm{max}}}
\end{pmatrix}
\end{align*}
输出如下:
有什么想法可以提高产量吗?
答案1
首先,您可以使用\frac
而不是\dfrac
在矩阵环境中缩小分数。
一个选择是,受到启发这个答案,使用tabstackengine
包:
\documentclass{article}
\usepackage{tabstackengine}
\stackMath
\begin{document}
\[
\setstackgap{L}{1.1\baselineskip}
\fixTABwidth{T}
Q= \parenMatrixstack{
\frac{1}{\Delta \alpha^2_{\mathrm{max}}} & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & \frac{1}{\Delta h^2_{\mathrm{max}}}
}
\]
\end{document}
答案2
我建议增加\arraystretch
,并使用\mfrac
命令(中等大小的分数,约 的 80% \displaystyle
)nccmath
。如果您希望所有列都具有 qame 宽度,可以使用eqparbox
包来完成。另外,请注意\max
是一个数学运算符,因此您不需要编码_{\mathrm{max}}
:
\documentclass{article}
\usepackage{mathtools, array, nccmath, eqparbox}
\newcommand\eqmathbox[2][cw]{\eqmakebox[#1]{\ensuremath{#2}}}
\begin{document}
\[ \renewcommand\arraystretch{1.333}%
Q= \begin{pmatrix}
\mfrac{1}{\Delta h^2_{\max}} & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & \mfrac{1}{\Delta h^2_{\max}}
\end{pmatrix}
\]%
\vskip2ex
\[ \renewcommand\arraystretch{1.333}\setlength\arraycolsep{0pt}%
Q= \left(\begin{array}{cccc} \eqmathbox{\mfrac{1}{\Delta h^2_{\max}}} & \eqmathbox{0} & \eqmathbox{0} & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & 0\\
0 & 0 & 0 & \eqmathbox{\mfrac{1}{\Delta h^2_{\max}}}
\end{array}\right)
\]%
\end{document}