- Questo topic ha 10 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 13 anni, 12 mesi fa da
egreg9.
-
CreatoreTopic
-
17 Settembre 2012 alle 19:03 #78719::
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?
-
CreatoreTopic
-
AutoreRisposte
-
-
17 Settembre 2012 alle 19:19 #78720::
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
-
18 Settembre 2012 alle 6:13 #78721
-
18 Settembre 2012 alle 7:08 #78722
-
18 Settembre 2012 alle 7:25 #78723
-
18 Settembre 2012 alle 8:06 #78724::
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
-
18 Settembre 2012 alle 8:22 #78725::
`\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
-
18 Settembre 2012 alle 9:51 #78726::
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.
-
18 Settembre 2012 alle 10:26 #78727::
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
-
18 Settembre 2012 alle 14:48 #78728::
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 comunePerò 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.
-
18 Settembre 2012 alle 14:59 #78729::
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
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.