3. Матричні та подібні середовища | Матриця LaTeX
Існує кілька середовищ для набору матричних структур, визначених у пакеті amsmath
. Усі вони подібні до стандартного середовища масиву
LaTeX за синтаксисом і макетом. Загалом, широкий спектр двовимірних математичних структур і табличних макетів можна описати як масиви.
Три середовища - cases
, matrix
і pmatrix
- замінюють команди стандартного LaTeX. Стандартні команди використовують іншу нотацію, тому їх не можна використовувати разом із формами середовища, про які тут йдеться. Пакунок amsmath
видасть повідомлення про помилку, якщо використовується одна зі старих команд. І навпаки, якщо ви спробуєте використати форми середовища amsmath
без завантаження пакета, ви, швидше за все, отримаєте таке повідомлення про помилку: "Неправильне вирівнювання символу табуляції &"
.
3.1. Середовище cases
Середовище case
використовується для обробки конструкцій, де одне рівняння має кілька варіантів. Такі конструкції дуже поширені в математиці. Він створює масив із двома стовпцями, обидва вирівняні за лівим краєм.
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}
Зверніть увагу на використання команди \text
і “вбудованого математичних режимів” у текстових рядках.
3.2. Матричні середовища
Матричні середовища, на відміну від масиву
LaTeX, не приймають аргумент, який визначає формати стовпців. Натомість вони надають формат за замовчуванням: до 10 стовпців по центру. Інтервал також дещо відрізняється від стандартного в array
. Наступні приклади ілюструють середовища matrix
, pmatrix
, bmatrix
, Bmatrix
, vmatrix
і 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*}
Лічильник MaxMatrixCols
визначає максимальну кількість стовпців у середовищі матриці. Ви можете змінити його за допомогою стандартної команди лічильника LaTeX. Значення параметра довжини \arraycolsep
визначає відстань між стовпцями. Так само, як у стандартних масивах, але з обох сторін масиву не додається пробіл. Більше стовпців змусить LaTeX працювати важче та потребуватиме більше ресурсів. Однак встановлення MaxMatrixCols
на 20 або вище можливе без помітного зниження продуктивності, оскільки в сучасних типових реалізаціях TeX такі обмеження менш важливі.
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} \]
У цьому прикладі команда \hdotsfor
використовується для створення ряду точок у матриці, що охоплює задану кількість стовпців. Необов’язковий параметр (тут 2) можна використовувати для визначення множника для інтервалу за замовчуванням (3 математичні одиниці) між крапками. Тонкий пробіл і фігурні дужки \,{}
в кінці кожного рядка просто покращують макет; разом вони створюють два тонких простору, приблизно 6mu або 1/3em.
Щоб створити маленьку вбудовану матрицю для використання в тексті, ви можете використовувати середовище 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.
Зауважте, що рядки тексту не розходяться, навіть якщо рядок перед малою матрицею містить літери з нижніми знаками.
3.3. Укладання в нижніх і верхніх індексах
Іноді може знадобитися набрати кілька рядків у нижньому чи верхньому індексі. Для цього можна використати команду \substack
з розмежуванням рядків \\
.
Середовище «субмасив» — це дещо загальніша структура, яка дозволяє вирівнювати лінії ліворуч або праворуч, а не центрувати їх.
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}
Зауважте, що обидва середовища мають бути в дужках, коли вони відображаються як нижній або верхній індекс.
3.4. Комутативні діаграми
Пакет amscd
визначає деякі команди для створення простих комутативних діаграм на основі масивів. Існує кілька корисних скорочених форм для вказівки прикрашених стрілок та інших сполучних елементів. Однак він має обмеження - наприклад, ці роз’єми можуть бути тільки горизонтальними або вертикальними.
У середовищі CD
позначення @>>>
, @<<<
, @VVV
і @AAA
створюють стрілки вправо, вліво, вниз і вгору відповідно. У наступному прикладі також показано використання команди \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} \]
Подивимося, як задаються прикраси. Для горизонтальних стрілок матеріал між першим і другим символами «>» або «<» буде набраний як верхній індекс, а матеріал між другим і третім буде набраний як нижній індекс. Подібним чином, матеріал між першою та другою, або другою та третьою літерами «A» або «V» вертикальних стрілок буде набраний як лівий або правий «бічний сценарій». Ми побачимо використання цього формату в наступному прикладі.
Позначення @=
і @|
позначають горизонтальні та вертикальні подвійні лінії.
Замість видимої стрілки ви можете використовувати «нульову стрілку» (@.
), щоб заповнити масив, де потрібно.
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} \]
Подібний макет може бути створений у стандартному LaTeX. Але це виглядає не так добре.
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}\]
Цей приклад досить чітко показує, наскільки кращі результати дає пакунок amscd
: нотація простіша, горизонтальні стрілки довші, відстань між елементами значно покращена. Більш спеціалізовані пакети допоможуть вам досягти ще кращих результатів.
3.5. Роздільники навколо масиву: пакет delarray
У цьому розділі ми обговоримо корисне загальне розширення пакета array
. Використовуючи це розширення, користувач може вказати відкриваючі та закриваючі розширювані роздільники, щоб оточувати математичний масив. Давайте розглянемо приклад:
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\]
Зауважте, що пакунок
delarray
не залежить відamsmath
, але він автоматично завантажує пакунокarray
, якщо необхідно.
Роздільники розміщуються по обидві сторони від {cc}
.
Цей приклад також ілюструє найкориснішу функцію пакета delarray
: використання необов’язкових аргументів [t]
і [b]
, які не дозволені в матричних середовищах amsmath``. Вони показують, що використання синтаксису
delarrayне еквівалентно оточенню середовища
array
\leftі
\right`, оскільки роздільники піднімаються, а також сам масив.