我刚刚开始使用 latex,在互联网的帮助下,我弄清楚了如何自己做很多事情,但现在我陷入了困境。我该如何写出你们在图片中看到的东西?
谢谢您的帮助!!!
答案1
从最简单的角度来看,这可能是最简单的方法。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\underset{n\times 1}{\mathrm{Y}} = \underset{n\times p}{X} \times
\underset{p\times 1}{\theta} + \underset{n\times 1}{\varepsilon}
\end{equation}
\end{document}
正如 egreg 指出的那样,加入矩阵维度\scriptscriptstyle
可能会带来更好的外观。这可以添加到上述解决方案的每个下划线中(或者,正如他指出的那样,通过创建一个辅助宏),或者可以尝试这种替代stackengine
方法,这可以增加对下划线深度的控制。
\documentclass{article}
\usepackage{stackengine}
\stackMath
\begin{document}
\begin{equation}
\def\sss{\scriptscriptstyle}
\setstackgap{L}{8pt}
\def\stacktype{L}
\stackunder{\mathrm{Y}}{\sss n\times 1} = \stackunder{X}{\sss n\times p} \times
\stackunder{\theta}{\sss p\times 1} + \stackunder{\varepsilon}{\sss n\times 1}
\end{equation}
\end{document}
如果有人想对这个结果有更直观的解释,我会注意到这个相关问题,矩阵分解维度图
\documentclass{article}
\usepackage{stackengine}
\stackMath
\newlength\matfield
\newlength\tmplength
\def\matscale{1.}
\newcommand\dimbox[3]{%
\setlength\matfield{\matscale\baselineskip}%
\setbox0=\hbox{\vphantom{X}\smash{#3}}%
\setlength{\tmplength}{#1\matfield-\ht0-\dp0}%
\fboxrule=1pt\fboxsep=-\fboxrule\relax%
\fbox{\makebox[#2\matfield]{\addstackgap[.5\tmplength]{\box0}}}%
}
\newcommand\raiserows[2]{%
\setlength\matfield{\matscale\baselineskip}%
\raisebox{#1\matfield}{#2}%
}
\newcommand\matbox[5]{
\stackunder{\dimbox{#1}{#2}{$#5$}}{\scriptstyle(#3\times #4)}%
}
\parskip 1em
\begin{document}
$\renewcommand\matscale{.6}
\matbox{7}{2}{n}{1}{\mathrm{Y}} =
\matbox{7}{4}{n}{p}{X} \raiserows{1.5}{\matbox{4}{2}{p}{1}{\theta}} +
\matbox{7}{2}{n}{1}{\varepsilon}$
\end{document}
答案2
我以表格的形式添加了我的小答案(比数学答案要脏得多,但如果在表达式中添加了很多复杂性,可能会很有用)
\documentclass{article}
\begin{document}
\begin{tabular}{ccccccc}
Y & $=$ & $X$ & $\times$ & $\theta$ & $+$ & $\epsilon$ \\
$n\times 1$ & & $n\times p $ & & $p\times 1$ & & $n\times 1$
\end{tabular}
\end{document}