我正在尝试在 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}
$