matrici

  • Creatore
    Topic
  • #41558
    ernded
    Partecipante
      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?
      ciao
      Ernesto

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #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

      • #41560
        ernded
        Partecipante
          Up
          0
          Down
          ::


          Grazie Enrico

      Visualizzazione 1 filone di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top