
Considere las siguientes dos matrices:
La matriz de la izquierda se representa con el código.
\left[
\begin{array}{rrrr}
1 & -32 & 0 & 15 \\
16 & -138 & -3 & 5 \\
4 & 14 & 11 & 19
\end{array}
\right]
El de la izquierda viene dado por:
\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}
Quiero que el de la derecha se parezca al de la izquierda. Algunas diferencias obvias son:
- Las columnas de la matriz de la izquierda están alineadas a la derecha.
- El espacio en blanco se distribuye de manera diferente en las dos matrices.
¿Qué puedo hacer para que la matriz de la derecha se parezca más a la matriz de la izquierda?
Respuesta1
Puedeutilizar eqparbox
para hacer los nodos igualmente anchosy alinear el contenido correctamente, digamos. El resto se puede hacer cambiando algunas claves. Si aún no lo ha hecho, eche un vistazo al nicematrix
paquete que ofrece una serie de opciones interesantes y bien documentadas.
\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}