# Difference between revisions of "Matrix in maths"

In order to type matrices in math formulas, there is the command \definemathmatrix. Once a certain type of matrix is defined, one can also add a simple command in order to type matrices in a Matlab or Scilab format.

Here are a few examples

%% defining matrix with parentheses
\definemathmatrix[pmatrix]
[matrix:parentheses]
[simplecommand=pmatrix]

%% defining matrix with brackets
\definemathmatrix[bmatrix]
[matrix:brackets]
[simplecommand=bmatrix]

%% defining determinant with bars
\definemathmatrix[determinant]
[matrix:bars]
[simplecommand=thedeterminant]
\starttext
Let $A$ be the matrix
\startformula
A :=
\startpmatrix
\NC 2 \NC 3 \NR
\NC 1 \NC 2 \NR
\stoppmatrix.
\stopformula
Show that
\startformula
{\rm det}(A) = \startdeterminant
\NC 2 \NC 3 \NR
\NC 1 \NC 2 \NR
\stopdeterminant = 1.
\stopformula
Compute the matrix $AB$ where $B$ is the matrix
\startformula
B := \pmatrix{2, -3 ; -1, 2}.
\stopformula
\stoptext


It is possible to have different delimiters on the left and on the right. For instance:

\definemathmatrix[pvmatrix]
[left={\left(\thinspace},
right={\thinspace\right|}]

\definemathmatrix[rpmatrix]
[left={\left.\thinspace},
right={\thinspace\right)}]

\starttext
\startformula
\startpvmatrix
\NC 11 \NC 12 \NC 13 \NR
\NC 21 \NC 22 \NC 23 \NR
\NC 31 \NC 32 \NC 33 \NR
\stoppvmatrix
\startrpmatrix
\NC  0 \NR
\NC  1 \NR
\NC  2 \NR
\stoprpmatrix
\stopformula

\stoptext


In ConTeXt LMTX beginning version 2020-11-27, it is possible to create « block » matrices where the blocks are separated by vertical or horizontal lines (respectively \VL and \HL). For instance the above example can be typeset more easily by the following (the output may be incorrect on this wiki: if this is the case copy the code below and typeset it on your machine with ConTeXt LMTX):

\definemathmatrix[mymatrix]
[left={\left\lparent\thinspace}, % instead of the left parenthesis, one can use any other fence
right={\thinspace\right\rparent}] % instead of the right parenthesis, one can use any other fence

\starttext
Here is $3 \times 3$ matrix with a column added to it
\startformula
\startmymatrix
\NC 11 \NC 12 \NC 13 \VL 0 \NR
\NC 21 \NC 22 \NC 23 \VL 1 \NR
\NC 31 \NC 32 \NC 33 \VL 2 \NR
\stopmymatrix
\stopformula
Here is a block matrix:
\startformula
\startmymatrix
\NC A \VL  B \NR
\HL
\NC C \VL  D \NR
\stopmymatrix
\stopformula


 TODO: regenerate examples after the wiki context has been updated (See: To-Do List)

The two commands \VL and \HL take an optional parameter which defines the thickness of the rule and its color. So \HL[3,red] will produce a red horizontal rule three times thicker than the default matrix rule. The rule thickness for a specific matrix is defined with the [rulethickness=] parameter of \definemathmatrix.

\definemathmatrix[mymatrix][matrix:parentheses][rulethickness=2pt]

\starttext
\startformula
\startmymatrix
\NC A \VL[3,green]  B \NR
\HL[10,red]
\NC C \VL D \NR
\stopmymatrix
\stopformula


A \VL counts as a hidden cell. To interrupt a vertical line, use an empty cell.

\definemathmatrix[mymatrix][matrix:parentheses]

\starttext
Weird matrix
\startformula
\startmymatrix
\NC A \VL B \NR
\HL[red]
\NC C \NC \NC D \NR
\stopmymatrix
\stopformula

This allows things like

\startformula
\startmymatrix
\NC A \VL B \NR
\HL
\NC \NC C \NC \NR
\stopmymatrix