强制乳胶将方阵显示为正方形

强制乳胶将方阵显示为正方形

我如何强制乳胶在数学模式下将方阵打印为宽度和高度相等的方阵?

我也阅读了 amsmath 文档,但没有发现任何有用的帮助。

例如对于这个矩阵:

\documentclass{article}

\usepackage{amsmath}

\begin{document}
\[
\left[
\begin{matrix}
\times & \times & \times &&&&&&&\\
\times & \times &  & \times & \times & & & &\\
\times &  & \times & & \times & & & & \\
 & \times & & \times & & \times &&& \\
 & \times & \times & & \times & \times & \times & &&\\
 &&& \times & \times & \times && \times & \times\\
 &&&& \times && \times & \times & \\
 &&&&& \times & \times & \times & \times \\
 &&&&& \times && \times & \times 
\end{matrix}
\right]
\]
\end{document}

结果是:

在此处输入图片描述

那是一个长方形,不是正方形!

答案1

如果您愿意接受所有矩阵元素占据相同宽度的约束(尽管您的问题暗示这样的约束实际上可能是理想的要求),那么这个\sqmatrix[alignment]{content}宏将自动执行“平方”。

元素间间距(默认 0pt)可以用 指定\setstacktabbedgap{length}

\documentclass{article}
\usepackage{tabstackengine}
\stackMath
\makeatletter
\newcommand\sqmatrix[2][c]{%
  \fixTABwidth{T}%
  \setbox0=\hbox{$\tabbedCenterstack{#2}$}%
  \setstackgap{L}{\dimexpr\maxTAB@width+\tabbed@gap}%
  \tabbedCenterstack[#1]{#2}%
}
\makeatother
\begin{document}
\def\mymatrix{\sqmatrix{
\XXX & \times & \times &&&&&&\\
\times & \times &  & \times & \times & & & &\\
\times &  & \times & & \times & & & & \\
 & \times & & \times & & \times &&& \\
 & \times & \times & & \times & \times & \times & &&\\
 &&& \times & \times & \times && \times & \times\\
 &&&& \times && \times & \times & \\
 &&&&& \times & \times & \times & \times \\
 &&&&& \times && \times & \times%
}}
\def\XXX{\times}
$\left[ \mymatrix \right]$%
\setstacktabbedgap{1ex}%HORIZONTAL GAP BETWEEN ENTRIES
$\left[ \mymatrix \right]$

\small\def\XXX{(x\times x)}
\setstacktabbedgap{0ex}%HORIZONTAL GAP BETWEEN ENTRIES
$\left[ \mymatrix \right]$
\end{document}

在此处输入图片描述

答案2

调整\arraystretch为适当的因素:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\begin{document}
\[
  \renewcommand{\arraystretch}{1.3}
  \begin{bmatrix}
    \times & \times & \times &        &        &        &        &        &        \\
    \times & \times &        & \times & \times &        &        &        &        \\
    \times &        & \times &        & \times &        &        &        &        \\
           & \times &        & \times &        & \times &        &        &        \\
           & \times & \times &        & \times & \times & \times &        &        \\
           &        &        & \times & \times & \times &        & \times & \times \\
           &        &        &        & \times &        & \times & \times &        \\
           &        &        &        &        & \times & \times & \times & \times \\
           &        &        &        &        & \times &        & \times & \times 
  \end{bmatrix}
\]
\end{document}

答案3

您可以手动设置每行的高度,并在每行结束后的方括号中提供行高:

\times & \times & ... & \times\\[1ex]

要使所有行具有相同的高度,可以使用宏:

\documentclass{article}

\usepackage{amsmath}

\newcommand{\squarelineheight}{0.9ex}

\begin{document}
\[
\left[
\begin{matrix}
\times & \times & \times &&&&&&&\\[\squarelineheight]
\times & \times &  & \times & \times & & & &\\[\squarelineheight]
\times &  & \times & & \times & & & & \\[\squarelineheight]
 & \times & & \times & & \times &&& \\[\squarelineheight]
 & \times & \times & & \times & \times & \times & &&\\[\squarelineheight]
 &&& \times & \times & \times && \times & \times\\[\squarelineheight]
 &&&& \times && \times & \times & \\[\squarelineheight]
 &&&&& \times & \times & \times & \times \\[\squarelineheight]
 &&&&& \times && \times & \times 
\end{matrix}
\right]
\]
\end{document}

相关内容