3. Матрица LaTeX | Руководство по LaTeX
Существует ряд сред для набора матричных структур, определенных в пакете amsmath. Все они похожи на стандартную среду массивов LaTeX по синтаксису и расположению. В общем, большое разнообразие двумерных математических структур и табличных структур можно описать как массивы.
Три среды — «кейсы», «матрица» и «pmatrix» — заменяют команды стандартного LaTeX. Стандартные команды используют другую нотацию, поэтому их нельзя использовать вместе с обсуждаемыми здесь формами среды. Пакет amsmath выдаст сообщение об ошибке, если будет использована одна из старых команд. И наоборот, если вы попытаетесь использовать формы среды amsmath
без загрузки пакета, вы, скорее всего, получите следующее сообщение об ошибке: "Неверный символ табуляции выравнивания &"
.
3.1. Среда «кейсов»
Среда 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 центрированных столбцов. Расстояние также немного отличается от значения по умолчанию в массиве. Следующие примеры иллюстрируют среды 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 математические единицы) между точками. Небольшое пространство и группа скобок \,{}
в конце каждой строки просто улучшают внешний вид макета; вместе они образуют два тонких пространства размером около 6 му или 1/3 ем.
Чтобы создать небольшую встроенную матрицу для использования в тексте, вы можете использовать среду 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
, поскольку разделители поднимаются так же, как и сам массив.