
Рассмотрим следующие две матрицы:
Матрица слева визуализируется с помощью кода
\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
Ты можешьиспользуйте 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}