Re: matrici

#41559
Up
0
Down
::

Con amsmath esiste l’ambiente \bmatrix che crea matrici le cui colonne sono sempre centrate. Però, per esempio una matrice come questa`\begin{bmatrix}
1&0&-1\\2&1&3\\0&-1&1\end{bmatrix}` viene bruttina per gli allinementi a serpentina delle colonne.
Se uso `
\left[\begin{array} ecc \end{array}\right]
`
posso mettere a posto l’allineamento delle colonne, ma le parentesi risultano decisamente più lontane dalla matrice di quanto risultino con \bmatrix (ed esteticamente è meno bello).
Ho provato a guardare la definizione di \bmatrix nel file amsmath.sty, per vedere se si poteva modificare in modo da dare la possibilità di scegliere l’allineamento delle colonne, ma è troppo complicata.
Quindi l’unica via d’uscita che vedo è quella di usare l’ambiente array ma vorrei riuscire ad avvicinare le parentesi come nelle matrici create con \bmatrix.
Avete consigli?

Il primo è di non preoccuparti delle matrici con le celle centrate: si fa quasi sempre così; io trovo meno attraente l’allineamento a destra: prova con numeri di ordini di grandezza diversi e vedrai che serpentine! E se qualche cella contiene lettere, sei fritto.

Ci sono due modi per ottenere ciò che vuoi: il primo è di copiarsi la definizione dell’ambiente matrix di amsmath modificando ciò che serve, il secondo è forse più utile nel caso ti serva qualche matrice con allineamenti di colonne diversi.

Primo modo, potrai usare gli ambienti matrixr e bmatrixr come i soliti (eventualmente puoi definire altri ambienti in modo simile a bmatrixr):
`\makeatletter
\newenvironment{matrixr}
{\env@matrixr}
{\endarray \hskip -\arraycolsep}
\def\env@matrixr{\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\array{*\c@MaxMatrixCols r}}
\newenvironment{bmatrixr}
{\left[\env@matrixr}
{\endmatrixr\right]}
\makeatother`
Secondo modo:
`\newenvironment{varbmatrix}[1]
{\left[\array{@{}#1@{}}}
{\endarray\right]}`
Per l’ambiente varbmatrix devi specificare le colonne e i loro allineamenti; per esempio la tua matrice di esempio dovrebbe essere
`\begin{varbmatrix}{rrr}
1&0&-1\\2&1&3\\0&-1&1
\end{varbmatrix}`
L’ambiente varbmatrix diventa insostituibile se hai “matrici ripartite”, perché si possono specificare filetti verticali.

Ciao
Enrico

Go to top