3. Matrici e ambienti simili
Esistono numerosi ambienti per la composizione di strutture simili a matrici definiti nel pacchetto amsmath. Sono tutti simili all’ambiente standard di LaTeX array per sintassi e layout. In generale, un’ampia varietà di strutture matematiche bidimensionali e layout tabulari può essere descritta come array.
Tre ambienti — cases, matrix e pmatrix — sostituiscono i comandi del LaTeX standard. I comandi standard utilizzano una notazione diversa, quindi non possono essere utilizzati insieme agli ambienti discussi qui. Il pacchetto amsmath produrrà un messaggio di errore se viene utilizzato uno dei vecchi comandi. Al contrario, se si tenta di utilizzare gli ambienti di amsmath senza caricare il pacchetto, molto probabilmente si riceverà il seguente messaggio di errore: "Misplaced alignment tab character &".
3.1. L’ambiente “cases”
L’ambiente cases viene utilizzato per gestire costruzioni in cui una singola equazione presenta diverse varianti. Tali costruzioni sono molto comuni in matematica. Produce un array con due colonne, entrambe allineate a sinistra.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{equation}
4P_{r - j} = \begin{cases}
5 0 & \text{if $r - j$ is odd,} \\
6r! \, (-1)^{(r - j)/2} & \text{if $r - j$ is even.}
7\end{cases}
8\end{equation}
Notate l’uso del comando \text e della “modalità matematica incorporata” nelle stringhe di testo.
3.2. Gli ambienti di matrice
Gli ambienti di matrice, a differenza dell’array di LaTeX, non accettano un argomento che specifichi il formato delle colonne. Forniscono invece un formato predefinito: fino a 10 colonne centrate. Anche la spaziatura differisce leggermente dal valore predefinito in array. I seguenti esempi illustrano gli ambienti matrix, pmatrix, bmatrix, Bmatrix, vmatrix e Vmatrix.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{gather*}
4\begin{matrix} 0 & 1 \\ 1 & 0 \end{matrix} \quad \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \\
5\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \quad \begin{Bmatrix} 1 & 0 \\ 0 & -1 \end{Bmatrix} \\
6\begin{vmatrix} a & b \\ c & d \end{vmatrix} \quad \begin{Vmatrix} i & 0 \\ 0 & -i \end{Vmatrix}
7\end{gather*}
Il contatore MaxMatrixCols determina il numero massimo di colonne in un ambiente di matrice. È possibile modificarlo usando il comando standard di LaTeX. Il valore del parametro di lunghezza \arraycolsep determina la quantità di spazio tra le colonne. Proprio come negli array standard, non viene aggiunto spazio su entrambi i lati dell’array. Un numero maggiore di colonne renderà il lavoro di LaTeX più oneroso e richiederà più risorse. Tuttavia, è possibile impostare MaxMatrixCols a 20 o superiore senza un notevole calo delle prestazioni, poiché con le tipiche implementazioni odierne di TeX tali limiti sono meno rilevanti.
1\usepackage{amsmath}
2\setcounter{MaxMatrixCols}{20}
3% -------------------------------------------------------------------------------
4\[
5\begin{Vmatrix}
6\,a&b&c&d&e&f&g&h&i&j &\cdots\,{} \\
7&a&b&c&d&e&f&g&h&i &\cdots\,{} \\
8& &a&b&c&d&e&f&g&h &\cdots\,{} \\
9& & &a&b&c&d&e&f&g &\cdots\,{} \\
10& & & &\ddots&\ddots&\hdotsfor[2]{5}\,{}
11\end{Vmatrix} \]
In questo esempio il comando \hdotsfor viene utilizzato per produrre una riga di puntini in una matrice, estendendosi su un determinato numero di colonne. Il parametro opzionale (qui 2) può essere utilizzato per specificare un moltiplicatore per lo spazio predefinito (3 unità matematiche) tra i puntini. Lo spazio sottile e il gruppo di graffe \, {} alla fine di ogni riga migliorano semplicemente il layout; insieme producono due spazi sottili, circa 6mu o 1/3em.
Per produrre una piccola matrice inline nel testo, è possibile utilizzare l’ambiente smallmatrix.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3To show the effect of the matrix on surrounding lines inside a paragraph, we put it here:
4$ \left( \begin{smallmatrix}
51 & 0 \\ 0 & -1
6\end{smallmatrix} \right) $
7and follow it with enough text to ensure that there is at least one full line below the matrix.
Si noti che le righe di testo non vengono distanziate ulteriormente, anche se la riga precedente la piccola matrice contiene lettere con tratti discendenti.
3.3. Impilamento in pedici e apici
A volte potrebbe essere necessario comporre diverse righe all’interno di un pedice o di un apice. Per fare ciò, si può usare il comando \substack con \\ come delimitatore di riga.
L’ambiente subarray è una struttura leggermente più generale che consente di allineare le righe a sinistra o a destra, anziché centrarle.
1\usepackage{amsmath}
2% -------------------------------------------------------------------------------
3\begin{gather}
4\sum_{\substack{0 \le i \le m \\ 0 < j < n}} P(i, j) \\
5\sum_{\begin{subarray}{l}
6i \in \Lambda \\
70 \le i \le m \\
80 < j < n
9\end{subarray}} P(i, j)
10\end{gather}
Si noti che entrambi gli ambienti devono essere racchiusi tra parentesi graffe quando appaiono come apice o pedice.
3.4. Diagrammi commutativi
Il pacchetto amscd definisce alcuni comandi per la produzione di semplici diagrammi commutativi basati su array. Esistono alcune utili forme abbreviate (shorthand) per specificare frecce decorate e altri connettori. Tuttavia, presenta delle limitazioni: ad esempio, questi connettori possono essere solo orizzontali o verticali.
Nell’ambiente CD, le notazioni @>>>, @<<<, @VVV e @AAA producono rispettivamente frecce verso destra, sinistra, il basso e l’alto. L’esempio seguente mostra anche l’uso del comando \DeclareMathOperator.
1\usepackage{amsmath,amscd}
2\DeclareMathOperator\add{add}
3\DeclareMathOperator\cf {cf}
4\DeclareMathOperator\cov{cov}
5\DeclareMathOperator\non{non}
6% -------------------------------------------------------------------------------
7\[ \begin{CD}
8\cov (L) @>>> \non (K) @>>> \cf (K) \\
9@VVV @AAA @AAA \\
10\add (L) @>>> \add (K) @>>> \cov (K) \\
11\end{CD} \]
Vediamo come vengono specificate le decorazioni. Per le frecce orizzontali, il materiale tra il primo e il secondo simbolo > o < sarà composto come apice, mentre quello tra il secondo e il terzo come pedice. Allo stesso modo, il materiale tra il primo e il secondo, o tra il secondo e il terzo, A o V delle frecce verticali sarà composto come “side-script” a sinistra o a destra. Vedremo l’uso di questo formato nel prossimo esempio.
Le notazioni @= e @| producono doppie linee orizzontali e verticali.
Invece di una freccia visibile, si può usare una “freccia nulla” (@.) per riempire l’array dove necessario.
1\usepackage{amsmath, amscd}
2\DeclareMathOperator{\End}{End}
3% -------------------------------------------------------------------------------
4\[ \begin{CD}
5S^{W_\Lambda}\otimes T @>j>> T \\
6@VVV @VV{\End P}V \\
7(S \otimes T)/I @= (Z\otimes T)/J
8\end{CD} \]
Un layout simile può essere prodotto nel LaTeX standard, ma il risultato non è altrettanto buono.
1\[\begin{array}{ccc}
2S^{\mathcal{W}_\Lambda}\otimes T & \stackrel{j}{\longrightarrow} & T \\
3\Big\downarrow & & \Big\downarrow\vcenter{\rlap{$\scriptstyle{\mathrm{End}}\,P$}} \\
4(S\otimes T)/I & = & (Z\otimes T)/J
5\end{array}\]
Questo esempio mostra chiaramente quanto siano migliori i risultati prodotti dal pacchetto amscd: la notazione è più semplice, le frecce orizzontali sono più lunghe, la spaziatura tra gli elementi è notevolmente migliorata. Pacchetti più specializzati aiuteranno a ottenere risultati ancora più belli.
3.5. Delimitatori che circondano un array: il pacchetto delarray
In questa sezione discuteremo di un’utile estensione generale del pacchetto array. Utilizzando questa estensione, l’utente può specificare delimitatori estensibili di apertura e chiusura per circondare un ambiente array in modalità matematica. Vediamo l’esempio:
1\usepackage{delarray}
2% -------------------------------------------------------------------------------
3\[ \mathcal{Q} =
4\begin{array}[t] ( {cc} ) X & Y \end{array}
5\begin{array}[t] [ {cc} ] A & B \\ C & D \end{array}
6\begin{array}[b] \lgroup{cc}\rgroup L \\ M \end{array}
7\]
Si noti che il pacchetto
delarrayè indipendente daamsmath, ma carica automaticamente il pacchettoarrayse necessario.
I delimitatori sono posizionati su entrambi i lati di {cc}.
Questo esempio illustra anche la caratteristica più utile del pacchetto delarray: l’uso degli argomenti opzionali [t] e [b], che non sono consentiti con gli ambienti di matrice di amsmath. Questi mostrano che l’uso della sintassi di delarray non è equivalente al circondare l’ambiente array con \left e \right, poiché i delimitatori vengono sollevati insieme all’array stesso.