对齐矩阵

对齐矩阵

抱歉,这个问题可能很平庸。我对 LaTeX 还不熟悉,在矩阵对齐方面遇到了问题。我试图实现这张图片中显示的内容,我尝试过使用环境align,但我发现它不能完全满足我的要求,因为我希望 和 的所有列都对齐ZV以及和的R所有行都对齐ZYX

有没有什么办法可以有效地做到这一点?

Z当然,理想情况下,括号内的YX会像常规矩阵符号一样跨越所有 5 行。

我已经用 excel 做过这个了,但这正是我想要的

答案1

实现布局目标的一种方法是使用pmatrix*环境(为了右对齐所有列)、\hphantom语句(根据需要加宽各个列)和\mkern指令(对齐、和矩阵/行向量的最左侧ZVR

如果您不习惯在环境中使用\hphantom指令,您可以加载包来定义宽度分别为 2、3 和 4 位的整数值列。在下面的示例中,我建议使用and而不是通常的and以避免矩阵周围的间距过大。请注意,指令将继续使用。pmatrix*siunitx\mleft(\mright)\left(\right)\mkern7.5mu

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools,siunitx,array,mleftright}
\newcolumntype{i}[1]{S[table-format=#1]} % columns of right-aligned integers
\begin{document}
First method:
\begin{align*}
Z &= \begin{pmatrix*}[r]
     \hphantom{000}0 & 70 & 0 & 30 & \hphantom{000}0 \\
     0 & 0 & 120 & 0 & 0 \\
     0 & 0 & 0 & 40 & 0  \\
     0 & 0 & 0 & 0 & 70  \\
     0 & 50 & 0 & 0 & 0  
     \end{pmatrix*} \qquad
 Y = \begin{pmatrix*}[r] 0 \\ 0\\ 80 \\ 0 \\ 20 \end{pmatrix*} \\
V &= \mkern7.5mu \begin{pmatrix*}[r] 
     \hphantom{0}100 & \phantom{0}0 & \phantom{00}0 & \phantom{0}0 & \hphantom{000}0 
     \end{pmatrix*} \\
R &= \mkern7.5mu\begin{pmatrix*}[r]
     5000 & \hphantom{0}0 & \hphantom{00}0 & \hphantom{0}0 & 2000  
     \end{pmatrix*}
\end{align*}

\bigskip
Second method:
\begin{align*}
Z &= \mleft( \begin{array}{@{}i{4}i{2}i{3}i{2}i{4}@{}}
     0 & 70 & 0 & 30 & 0 \\
     0 & 0 & 120 & 0 & 0 \\
     0 & 0 & 0 & 40 & 0  \\
     0 & 0 & 0 & 0 & 70  \\
     0 & 50 & 0 & 0 & 0
     \end{array} \mright) \qquad
 Y = \begin{pmatrix*}[r] 0 \\ 0\\ 80 \\ 0 \\ 20 \end{pmatrix*} \\
V &= \mkern7.5mu 
     \mleft( \begin{array}{@{}i{4}i{2}i{3}i{2}i{4}@{}}
     100 & 0 & 0 & 0 & 0
     \end{array} \mright) \\
R &= \mkern7.5mu 
     \mleft( \begin{array}{@{}i{4}i{2}i{3}i{2}i{4}@{}}
     5000 & 0 & 0 & 0 & 2000
     \end{array} \mright)
\end{align*}
\end{document} 

答案2

您可以使用矩阵图书馆蒂克兹以及定位库来实现这样的事情:

代码

\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{matrix, positioning}

\begin{document}

%\matrix (m) [matrix of math nodes,left delimiter=(,right delimiter=),
%  inner sep=2pt,outer sep=0pt]{
%  a & b & [1em] 0 \\
%  c & d & 1 \\ };

\begin{tikzpicture}
[   on grid,
    inner sep=2pt,
    outer sep=0pt,
    minimum width=9mm,
    every left delimiter/.style={xshift=3.5ex},
    every right delimiter/.style={xshift=-3.5ex}
]

\matrix (R) [matrix of math nodes]
{   A & B & C & D & E \\ };

\matrix (MZ) [matrix of math nodes, left delimiter=(, right delimiter=), below=1.5cm of R]
{ 400 & 0   & 0   & 0   & 0   \\
  0   & 0   & 0   & 0   & 700 \\
  0   & 0   & 200 & 0   & 0   \\
  0   & 300 & 0   & 0   & 0   \\
  0   & 0   & 0   & 500 & 0   \\
};

\node[left=2.8cm of MZ] (Z) {$Z=$};

\matrix (C) [matrix of math nodes, left=1.2cm of Z]
{   A \\ B \\ C \\ D \\ E \\ };

\node[right=3.3cm of MZ] (Y) {$Y=$};

\matrix (MY) [matrix of math nodes, left delimiter=(, right delimiter=), right=0.9cm of Y]
{   0 \\ 30 \\ 80 \\ 0 \\ 0 \\ };

\node[right=1.5cm of MY] (X) {$X=$};

\matrix (MX) [matrix of math nodes, left delimiter=(, right delimiter=), right=0.9cm of X]
{   70 \\ 0 \\ 10 \\ 90 \\ 0 \\ };

\matrix (MV) [matrix of math nodes, left delimiter=(, right delimiter=), below=2cm of MZ]
{   400 & 0 & 0 & 2000 & 0 \\ };

\node[left=2.8cm of MV] (V) {$V=$};

\matrix (MR) [matrix of math nodes, left delimiter=(, right delimiter=), below=1cm of MV]
{   4000 & 0 & 0 & 2000 & 7000 \\ };

\node[left=2.8cm of MR] (R) {$R=$};

\end{tikzpicture}

\end{document}

输出

在此处输入图片描述

答案3

由于 OP 问题中的输入看起来像电子表格,因此 OP 可能更喜欢tabular解决方案,而不是一组数学符号。唯一的调整是引入了\mybig{rows}{glyph}制作大括号的功能。

目前,列对齐是居中的,但可以轻松自定义。已编辑以合并\arraystretch

\documentclass{article}
\usepackage{scalerel}
\def\myvshft{\dimexpr+.5\ht\strutbox-.5\dp\strutbox}
\newcommand\mybig[2]{\smash{\raisebox{\myvshft}{\scaleto[2ex]{\raisebox{%
  -\myvshft}{#2}}{\arraystretch\dimexpr#1\normalbaselineskip}}}}
\begin{document}
\renewcommand\arraystretch{1.3}
\tabcolsep3pt
\begin{tabular}{cccccccccccccccccccc}
&&&&A&B&C&D&E\\
\\
A&&&&0&70&0&30&0&&&&&0&&&&&0\\
B&&&&0&0&120&0&0&&&&&0&&&&&0\\
C&&Z =&\mybig{5}{(}&0&0&0&40&0&\mybig{5}{)}&&
  Y =&\mybig{5}{(}&0&\mybig{5}{)}&&X =&\mybig{5}{(}&0&\mybig{5}{)}\\
D&&&&0&0&0&0&70&&&&&0&&&&&0\\
E&&&&0&50&0&0&0&&&&&20&&&&&20\\
\\
&&V =&(&100&0&0&0&0&)\\
\\
&&R =&(&5000&0&0&0&2000&)\\
\end{tabular}
\end{document}

在此处输入图片描述

相关内容