Как сделать так, чтобы моя матрица tikz больше походила на массив?

Как сделать так, чтобы моя матрица tikz больше походила на массив?

Рассмотрим следующие две матрицы:

введите описание изображения здесь

Матрица слева визуализируется с помощью кода

\left[
  \begin{array}{rrrr}
    1  & -32  & 0  & 15 \\
    16 & -138 & -3 & 5  \\
    4  & 14   & 11 & 19
  \end{array}
\right]

Тот, что слева, имеет вид:

\begin{tikzpicture}
  \matrix[
  , matrix of math nodes
  , left delimiter = {[}
  , right delimiter = {]}
  ] (m)
  {
    1  & -32  & 0  & 15 \\
    16 & -138 & -3 & 5  \\
    4  & 14   & 11 & 19 \\
  };
\end{tikzpicture}

Я хочу, чтобы тот, что справа, выглядел так же, как тот, что слева. Несколько очевидных отличий:

  1. Столбцы матрицы слева выровнены по правому краю.
  2. Пробелы распределены по-разному в двух матрицах.

Что можно сделать, чтобы матрица справа была больше похожа на матрицу слева?

решение1

Ты можешьиспользуйте eqparbox, чтобы сделать узлы одинаково широкими, и выровнять содержимое правильно, например. Остальное можно сделать, изменив некоторые ключи. Если вы еще этого не сделали, взгляните на пакет, nicematrixкоторый предлагает ряд хороших и хорошо документированных опций.

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{eqparbox}
\newbox\eqnodebox
\tikzset{r/.style={execute at begin
    node={\setbox\eqnodebox=\hbox\bgroup$},
    execute at end node={$\egroup\eqmakebox[#1-\tikzmatrixname-\the\pgfmatrixcurrentcolumn][r]{\copy\eqnodebox}}},
    r/.default=R}
\begin{document}
\begin{tikzpicture}
  \matrix[matrix of nodes,cells={nodes={r,inner sep=2pt}},
  inner xsep=0pt,inner ysep=1pt,%<- controls the distance and height of the delimiters
  column sep=1.5pt,
  left delimiter = {[},right delimiter = {]}] (m)
  {
    1  & -32  & 0  & 15 \\
    16 & -138 & -3 & 5  \\
    4  & 14   & 11 & 19 \\
  };
\end{tikzpicture}
\end{document}

введите описание изображения здесь

Связанный контент