绘制矩阵时强制 \array 保持正方形

绘制矩阵时强制 \array 保持正方形

我正在尝试在 LaTeX 中绘制一个块矩阵,这是我目前所得到的:

\begin{array}{|c|c|}
    \hline
    I_{r \times r} & 0 \\
    \hline
    0 & 0 \\
    \hline
\end{array}

这是渲染后的图片:

在此处输入图片描述

我该如何强制矩阵在渲染时为正方形?目前,由于I_{r \times r}放置在左上角的元素,它的宽度显然大于高度。此外,矩阵角落处的线的交叉点渲染不正确。您对如何修复此问题有什么建议吗?

答案1

单元格的宽度/高度是列类型的参数C

\documentclass{article}
\usepackage{array}
\newcolumntype{C}[1]{@{}>{\rule[0.5\dimexpr-#1+1.2ex]{0pt}{#1}\hfil$}p{#1}<{$\hfil}@{}}
\begin{document}     
\Huge
$\begin{array}{|C{2cm} | C{2cm} |}\hline
  I_{r \times r} & 0 \\\hline
               0 & 0 \\\hline
\end{array} $ 
$\begin{array}{|C{2.5cm} | C{2.5cm} |}\hline
  I_{r \times r} & 0 \\\hline
               0 & 0 \\\hline
\end{array} $ 
\end{document}

在此处输入图片描述

答案2

使用 tikz(还有其他使用 tikz 的方法,如矩阵等)

\documentclass{article}
\usepackage{tikz}    

\begin{document} 

\begin{tikzpicture}
  \foreach \x in {1,2}
    \foreach \y in {1,2}
    {
      \draw (\x,\y) +(-.5,-.5) rectangle ++(.5,.5);
      \draw (\x,\y);
    }
    \node at (1,2) {$I_{r \times r}$} ;
    \node at (1,1) {0} ; \node at (2,1) {0} ;\node at (2,2) {0} ;
\end{tikzpicture}

\end{document}   

在此处输入图片描述

或者您可以做类似的事情,但我不确定是否所有空格都被删除了。

 \def\vh{\vrule height 0.6cm depth 0.4cm width 0 cm}% 
 \newcommand{\sq}[2][1cm]{\hbox to #1{\hfil\vh#2\hfil}}%   
 $
\begin{array}{@{}|@{}c@{}|@{}c@{}|@{}}
   \hline
   \sq{$I_{r \times r}$}&\sq{0}\\
   \hline
   \sq{0} & \sq{0}\\
   \hline
\end{array} 
$

相关内容