Allineare elementi con segno “-” all’interno di una matrice

  • Creatore
    Topic
  • #78719
    Up
    0
    Down
    ::


    Salve, è possibile allineare i numeri presenti all’interno di una matrice scritta utilizzando bmatrix quando ci sono numeri negativi?
    mi spiego meglio, se ci sono numeri negativi il segno – causa disallineamento con gli altri numeri positivi (senza segno), è possibile allineare tutti i numeri lasciando lo spazio per eventuali segni?

Visualizzazione 9 filoni di risposte
  • Autore
    Risposte
    • #78720
      Up
      0
      Down
      ::

      Squall” post=77788Salve, è possibile allineare i numeri presenti all’interno di una matrice scritta utilizzando bmatrix quando ci sono numeri negativi?
      mi spiego meglio, se ci sono numeri negativi il segno – causa disallineamento con gli altri numeri positivi (senza segno), è possibile allineare tutti i numeri lasciando lo spazio per eventuali segni?

      Normalmente i numeri nelle matrici sono centrati. Che abbiano il meno davanti oppure no.

      Ciao
      Enrico

    • #78721
      Up
      0
      Down
      ::


      quindi non è possibile fare in modo che i numeri stiano tutti sulla stessa colonna lasciando a sinistra lo spazio per il segno che ci sia o meno?

    • #78722
      Up
      0
      Down
      ::

      Squall” post=77805quindi non è possibile fare in modo che i numeri stiano tutti sulla stessa colonna lasciando a sinistra lo spazio per il segno che ci sia o meno?

      Cioè tu vorresti qualcosa come questa?
      `
      1 1
      -1 -111
      `
      Escluderei. Il segno meno è parte del numero.

      Ciao
      Enrico

    • #78723
      Up
      0
      Down
      ::


      Sì..
      Io sono d’accordo con lei, ma me lo ha chiesto esplicitamente il professore..
      Potresti spiegarmi come si può fare?

    • #78724
      Up
      0
      Down
      ::

      Squall” post=77810Sì..
      Io sono d’accordo con lei, ma me lo ha chiesto esplicitamente il professore..
      Potresti spiegarmi come si può fare?

      Non è facile, ci sto pensando; di sicuro occorrono notevoli interventi manuali per ogni matrice.

      Intanto potresti fare una raccolta di buoni libri dove ci siano matrici e, con tatto, mostrarlo al reprobo.

      Ciao
      Enrico

    • #78725
      Up
      0
      Down
      ::


      `\documentclass[a4paper]{article}
      \usepackage{amsmath,array}
      \newcolumntype{M}{@{\hspace{1.5em}}c}
      \makeatletter
      \renewcommand\env@matrix[1][*\c@MaxMatrixCols c]{\hskip -\arraycolsep
      \let\@ifnextchar\new@ifnextchar
      \array{#1}}
      \makeatother
      \newcommand{\meno}{\llap{$-$}}

      \begin{document}
      \[
      \begin{bmatrix}[MMc]
      1 & 1 & 2\\
      \meno1 & \meno11 & 3
      \end{bmatrix}
      \]
      \end{document}`
      Se in una matrice compaiono segni meno, devi dichiarare le colonne in cui ci sono come M, come c le altre. Va bene qualsiasi ambiente, anche pmatrix e simili.

      Ciao
      Enrico

    • #78726
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        La risposta di Enrico risolve il problema mettendo un segno meno “senza dimensioni, per cui l’algoritmo di incolonnamento della matrice tratta un numero negativo conme se non avesse nessun segno; per ovviare al fatto che il segno meno, in realtà c’è ma con dimensioni orizzontali nulle, il descrittore di colonna allarga lo spazio a sinistra della colonna con i segni meno così dichiarati.

        Esiste un’altra possibilità, un po’ meno automatica, ma che consiste nel mettere un segno + invisibile, ma con le sue dimensioni prima dei numeri positivi. Il comando per mettere un segno invisibile, ma con le sue dimensioni, è [tt]\phantom{+}[/tt] — siccome è lunghetto da scrivere si può sempre definire un comando sostitutivo, come ha fatto Enrico con il comando \meno:`\newcommand\piu{\phantom{+}}`. Basta solo ricordarsi di scrivere \piu prima dei numeri positivi che sono in colonne che contengono anche numeri negativi, ma almeno non c’è bisogno di definire la colonna M; forse per questa via c’è da scrivere di più che seguendo la via indicata da Enrico.

        Si può anche dare temporaneamente il \mathcode “8000 al segno matematico + solo in matematica (cioè solo per scrivere una determinata matrice) per renderlo un carattere attivo e poi definirlo con lai definizione che ho indicato per il comando \piu; la matrice allora conterrà in modo molto naturale i numeri positivi con il segno +davanti (segno più che non comparirà nel file composto) e i numeri negativi con il segno meno davanti e la lettura del file sorgente ne sarà molto facilitata.

        Come sempre esistono diverse soluzioni; sta poi a ciascuno scegliere quella che trova più comoda per lui.

      • #78727
        Up
        0
        Down
        ::


        Non è proprio la stessa cosa. La centratura di “+1” con “+11” (e il + invisibile) avviene sulla dimensione globale e il risultato è diverso dalla centratura di “-1” con “-11” e il meno di ampiezza zero.

        Ma posso dire con una certa sicurezza che questo allineamento è, per essere cauti, molto poco comune.

        Ciao
        Enrico

      • #78728
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Infatti, avrebbe molto più sneso allineare i dati nella colonna con una colonna r, ma se si usa l’ambiente matrix di amsmath credo che non si possa fare, poicheé è, a dir poco, poco comune

          Però si può fare con l’ambiente array in cui si può sceglere l’allineamento di ciascuna colonna.

          A proposito: lo so che l’allineamento col più invisibile non è lo stesso dell’allineamento col meno senza dimensioni orizzontali; è soltanto un’altra soluzione per un problema non comune, richiesto/imposto da un prof che non ha molta dimestichezza con al tipografia.

        • #78729
          Up
          0
          Down
          ::

          OldClaudio” post=77837Infatti, avrebbe molto più sneso allineare i dati nella colonna con una colonna r, ma se si usa l’ambiente matrix di amsmath credo che non si possa fare, poicheé è, a dir poco, poco comune

          Però si può fare con l’ambiente array in cui si può sceglere l’allineamento di ciascuna colonna.

          A proposito: lo so che l’allineamento col più invisibile non è lo stesso dell’allineamento col meno senza dimensioni orizzontali; è soltanto un’altra soluzione per un problema non comune, richiesto/imposto da un prof che non ha molta dimestichezza con al tipografia.

          È abbastanza facile definire un argomento facoltativo per gli ambienti [tt]…matrix[/tt]:
          `\makeatletter
          \renewcommand\env@matrix[1][c]{\hskip -\arraycolsep
          \let\@ifnextchar\new@ifnextchar
          \array{*\c@MaxMatrixCols{#1}}}
          \makeatother`
          Così avrai
          `\begin{bmatrix} % allineamento usuale, centrato
          \begin{bmatrix}[r] % tutte le colonne allineate a destra
          \begin{bmatrix}[l] % tutte le colonne allineate a sinistra
          \begin{bmatrix}[>{\centering\arraybackslash}p{4em}] % tutte le colonne ampie 4em, con allineamento centrato`
          Vale per tutti gli ambienti [tt]…matrix[/tt], naturalmente. L’ultimo modo richiede array.

          Ciao
          Enrico

      Visualizzazione 9 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top