请允许我详细说明:我有一个方阵,通过在右列填充零,它就变成了非方阵。我想用一个零来表示零子矩阵,以理想地实现这一点:
我得到的却是这样的:
目前,我通过将 a 替换\ddot
为连续行中的两个点来伪造它,从而实现奇数行:
不用说,我不喜欢我的黑客行为。
有什么建议吗?
\documentclass{article}
\usepackage{bm,delarray}
\begin{document}
\[
\bm{\Sigma} =
\left[
\begin{array}{cccc|c}
\bm{\sigma}_1 & & & & 0 \\
& \bm{\sigma}_2 & & & 0\\
& & \ddots & & 0 \\
& & & \bm{\sigma}_m & 0
\end{array}
\right]
\]
\[
\bm{\Sigma} =
\left[
\begin{array}{ccccc|c}
\bm{\sigma}_1 & & & & & \\
& \bm{\sigma}_2 & & & & \\
& & . & & & 0 \\
& & & . & & \\
& & & & \bm{\sigma}_m &
\end{array}
\right]
\]
\end{document}
答案1
答案2
这边走?
\documentclass{article}
\usepackage{bm, delarray, multirow}
\begin{document}
\[
\bm{\Sigma} =
\left[
\begin{array}{cccc|c}
\bm{\sigma}_1 & & & & \multirow{4}{*}[-0.5ex]{\Large$ 0 $} \\
& \bm{\sigma}_2 & & & \\[-0.5ex]
& & \ddots & & \\[-0.5ex]
& & & \bm{\sigma}_m &
\end{array}
\right]
\]
\end{document}
答案3
一种快速解决方法:使用\smash
,因为它比其他数学符号的高度更大。当然,如果你不喜欢这个技巧,还有其他选择;例如,\ddots
可以通过增加行间空间,或者在没有 的情况下添加到所有其他行。\renewcommand{\arraystretch}{1.5}
\vphantom{\ddots}
\ddots
\documentclass{article}
\usepackage{bm,delarray}
\begin{document}
\[
\bm{\Sigma} =
\left[
\begin{array}{cccc|c}
\bm{\sigma}_1 & & & & 0 \\
& \bm{\sigma}_2 & & & 0\\
& & \smash{\vcenter{\hbox{$\ddots$}}} & & 0 \\
& & & \bm{\sigma}_m & 0
\end{array}
\right]
\]
\end{document}
答案4
还有一个解决方案,使用nicematrix
模仿@egreg 和@Bernard 答案的包:
\documentclass[margin=3mm,varwidth]{standalone}
\usepackage{bm}
\usepackage{nicematrix}
\begin{document}
\[ \setlength{\arraycolsep}{1pt}
\bm{\Sigma} =
\begin{bNiceArray}{cccc|c}[margin=1pt]
\bm{\sigma}_1
& & & & \Block{4-1}<\Huge>{0} \\
& \bm{\sigma}_2
& & & \\
& & \ddots
& & \\
& & & \bm{\sigma}_m
&
\end{bNiceArray}
\]
\end{document}