如何绘制漂亮的对角矩阵?

如何绘制漂亮的对角矩阵?

如何排版出美观的对角矩阵?我发现自己又一次摆弄幻影并运行 raisebox 以获得美观​​的效果。这种微观管理是不好的做法,但为什么默认看起来这么糟糕,有没有更好的方法?两个并排的对角矩阵

\documentclass{article}
\usepackage{mathtools}
\begin{document}

\begin{align*}
  \operatorname{diag} x &=
  \begin{bmatrix}
    x_1 & 0 & 0\\
    0 & \ddots & 0 \\
    0 & 0 & x_n
  \end{bmatrix}
  &
  \operatorname{diag} x &=
  \begin{bmatrix}
    x_1 & 0 & 0\\
    0 & \raisebox{-0.4ex}{\(\ddots\)}\rule[3.4ex]{0pt}{0pt} & 0 \\
    0 & 0 & x_n \rule[3.4ex]{0pt}{0pt}
  \end{bmatrix}
\end{align*}

\end{document}

答案1

TABstack 的替代品。

\documentclass{article}
\usepackage{mathtools,tabstackengine}
\TABstackMath% STACK MATRIX IN MATH MODE
\setstacktabbedgap{10pt}% INTER-COLUMN GAP SIZE
\setstackgap{L}{1.5\baselineskip}% INTER-ROW BASELINESKIP
\newcommand\cddots{\raisebox{-1pt}{$\ddots$}}
\begin{document}
\[  \operatorname{diag} x =
  \bracketMatrixstack{
    x_1 & 0 & 0\\
    0 & \cddots & 0 \\
    0 & 0 & x_n
  }
\]
\end{document}

在此处输入图片描述

虽然 OP 描述的对角矩阵类型不需要,但该包有一个\fixTABwidth{<T or F>}声明,将所有列宽固定为矩阵中的最大列宽。如果有宽矩阵条目,这会很有帮助:

\documentclass{article}
\usepackage{mathtools,tabstackengine}
\TABstackMath% STACK MATRIX IN MATH MODE
\setstacktabbedgap{10pt}% INTER-COLUMN GAP SIZE
\setstackgap{L}{1.5\baselineskip}% INTER-ROW BASELINESKIP
\newcommand\cddots{\raisebox{-1pt}{$\ddots$}}
\begin{document}
\fixTABwidth{T}
\[  \operatorname{diag} x =
  \bracketMatrixstack{
    x_1 & 0 & 12345\\
    0 & \cddots & 0 \\
    0 & 0 & x_n
  }
\]
\end{document}

在此处输入图片描述

答案2

如果您愿意,可以使用包nicematrix。在定义的许多选项之间nicematrix有一个列宽度,您可以在其中根据值将矩阵的两个括号放入其中。

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}
\usepackage{nicematrix}
\NiceMatrixOptions{transparent,nullify-dots}
\begin{document}
\[\operatorname{diag} x =\begin{bmatrix}[columns-width = 3mm]
x_1 & 0 & 0\\
0 & \ddots & 0 \\
0 & 0 & x_n 
\end{bmatrix}\]
\end{document}

另一种可能性是使用columns-width = auto

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}
\usepackage{nicematrix}
\NiceMatrixOptions{transparent,nullify-dots}
\begin{document}


\[\operatorname{diag} x =\begin{bmatrix}[columns-width = auto]
x_1 & 436436 & 67676\\
0 & \ddots & 0 \\
8778 & 0 & x_n 
\end{bmatrix}\]


\end{document}

相关内容