如何用星号填充任意大小的矩阵?

如何用星号填充任意大小的矩阵?

我正在编写一份 latex 文档,并使用了大量矩阵示例,其中每个条目都是\ast。我想编写一个宏来自动为我创建这样的矩阵。因此,这看起来像

\newcommand{\myAsteriskMatrix}[2]{magic}

其中两个输入是行数和列数。

我碰巧正在使用这个nicematrix包,所以一个典型的矩阵看起来像这样:

\documentclass{standalone}

\usepackage{nicematrix}

\begin{document}

$
\begin{bNiceMatrix}[r]
  \ast & \ast & \ast \\
  \ast & \ast & \ast
\end{bNiceMatrix}
$

\end{document}

这个矩阵可以通过 生成\myAsteriskMatrix{2}{3},但我不知道如何编写这个宏!有什么想法吗?

答案1

与。\pAutoNiceMatrixnicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
$\pAutoNiceMatrix{7-7}{*}$
\end{document}

上述代码的输出

答案2

没有。如果您在 2020-10-01 版本之前运行 LaTeX,则nicematrix可能需要添加。\usepackage{xparse}

\documentclass{article}
\usepackage{amsmath}

\ExplSyntaxOn

\NewDocumentCommand{\automatrix}{O{*}mmm}
 {% #1 = symbol (default *), #2 = delimiter, #3 = rows, #4 = columns
  \int_compare:nT { #4 > \value{MaxMatrixCols} } { \setcounter{MaxMatrixCols}{#4} }
  \begin{#2matrix}
  \prg_replicate:nn { #3 }
   {
    {#1} \prg_replicate:nn { #4 - 1 } { & #1 } \\
   }
  \end{#2matrix}
 }

\ExplSyntaxOff

\begin{document}

\[
\automatrix{p}{2}{3}
\ne
\automatrix[+]{b}{3}{2}
\]

\end{document}

在此处输入图片描述

答案3

在 OpTeX 中,我们可以定义:

\def\repmatrix#1x#2 #3{
   \left(\vcenter{
      \table{#2c}{\fornum 1..#1 \do {\fornum 1..#2-1 \do{#3&}#3\cr}}}
   \right)
}

$$
  \repmatrix 2x3 {*} \not= \repmatrix 3x5 {*} \not= \repmatrix 2x2 {$Z$}
$$

\bye

答案4

如果您是 Emacs 用户,您可以创建一个 elisp 函数来为您选择的矩阵生成乳胶代码;(您可以使用任何算法语言执行相同的操作,但在 emacs 中嵌入了 Elisp)

(defun matrice(type symb nrows ncolumns)
  "compose a LaTeX matrice type TYPE filling symbol SYMB
number of rows NROWS number of columns NCOLUMS "
  (concat
   (format "\\begin{%s}\n" type)
   (mapconcat (lambda (j)(concat
                          (mapconcat
                           (lambda(i) (format " %s " symb))
                           (number-sequence 1 ncolumns)"&")
                          "\\\\") )
              (number-sequence 1 nrows)"\n")
   (format "\n\\end{%s}\n" type)))

要插入矩阵,只需在下一行输入(Cx Ce)

%(插入(矩阵'pmatrix'* 3 5))

\documentclass{article}
\usepackage{amsmath}

\begin{document}

% (insert(matrice 'pmatrix '* 3 5))

\[
\begin{pmatrix}
     * & * & * & * & * \\
     * & * & * & * & * \\
     * & * & * & * & * \\
\end{pmatrix}
\]

\end{document}

相关内容