Tex: подробное описание С. М. Львовский
Download 1.51 Mb. Pdf ko'rish
|
LaTeX-Lvovsky
3.2. Набор матриц
Чтобы набрать с помощью L A TEXа матрицу, надо воспользоваться окружением array. Пре жде, чем описывать, как это окружение работает, разберем такой пример: a 11 a 12 . . . a 1n a 21 a 22 . . . a 2n .. . .. . . .. .. . a n1 a n2 . . . a nn $$ \begin{array}{cccc} a_{11}& a_{12} &\ldots & a_{1n}\\ a_{21}& a_{22} &\ldots & a_{2n}\\ \vdots& \vdots &\ddots & \vdots\\ a_{n1}& a_{n2} &\ldots & a_{nn} \end{array} $$ II.3. ОДНО НАД ДРУГИМ 46 Посмотрим, как устроен исходный текст, давший на печати эту матрицу. Всякая матрица состоит из строк и столбцов; строки матрицы разделяются с помощью команды \\ (по следнюю строку заканчивать командой \\ не надо), а элементы внутри одной строки, отно сящиеся к разным столбцам, отделяются друг от друга с помощью символа &. Далее, по сле \begin{array}, открывающего окружение, должна следовать (в фигурных скобках, по скольку это параметр окружения array) так называемая преамбула матрицы, описываю щая, сколько и каких столбцов должно быть в матрице. В нашем случае преамбула предста вляет собой четыре буквы cccc. Это значит, что в матрице 4 столбца (по букве на столбец), и что содержимое каждого из этих столбцов должно быть расположено по центру столбца (поскольку каждая из букв — буква c). Кроме c, в преамбуле может стоять буква l, озна чающая, что соответствующий столбец будет выровнен по левому краю, или r, означающая, что столбец будет выровнен по правому краю. В третьей строке матрицы мы использовали вертикальное многоточие, генерируемое ко мандой \vdots, и диагональное многоточие, генерируемое командой \ddots. Эти команды можно использовать не только внутри окружения array, но и в любом месте в математиче ских формулах. Интересно, что в стандартном L A TEXовском наборе не предусмотрено команды для «диагональ ного многоточия » . . . , направленного в противоположную по сравнению с demoddots сторону, хотя создать такую команду с помощью TEXовских средств ничуть не сложнее, чем команду \ddots. Нашей матрице не хватает еще скобок; чтобы их создать, надо перед \begin{array} на писать \left( , а после \end{array} написать \right) (см. раздел 2.5). Исходный текст, генерирующий на печати нашу матрицу, расположен таким образом, что бы одной строке исходного текста соответствовал одна строка матрицы. Такое расположение мы выбрали только для удобства чтения, но, вообще говоря, оно совершенно не обязательно: бывает, что на протяжении нескольких строк приходится тянуть текст, который пойдет в од ну строку на печати, а иногда в одной строке исходного текста помещается несколько строк матрицы. Повторим еще раз, что в L A TEXе разбиение текста на строки роли не играет: конец строки воспринимается просто как пробел. Окружение array можно, разумеется, использовать не только для верстки матриц в ма тематическом смысле этого слова: фактически это окружение создает таблицы, состоящие из строк и столбцов. Вот, например, как можно напечатать треугольник Паскаля: 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 Исходный текст для него выглядит так: $$ \begin{array}{ccccccccccc} &&&& 1 && 1\\ &&& 1 && 2 && 1\\ && 1 && 3 && 3 && 1\\ & 1 && 4 && 6 && 4 && 1\\ 1 && 5 && 10 && 10 && 5 && 1 \end{array} $$ II.3. ОДНО НАД ДРУГИМ 47 Как видите, если какая-то графа в нашей таблице должна быть пуста, то между (или перед, если эта графа — первая в своей строке) соответствующими знаками & нужно просто ничего не писать (или оставить сколько угодно пробелов). Если после того, что Вы написали в стро ке, до конца строки идут только пустые графы, то можно не дописывать до конца значки &, а сразу написать \\. Разберем еще один типичный пример: верстку системы уравнений с помощью окруже ния array. Посмотрите, как получается такая система уравнений: ( x 2 + y 2 = 7 x + y = 3. $$ \left\{ \begin{array}{rcl} x^2+y^2&=&7\\ x+y & = &3.\\ \end{array} \right. $$ Мы отвели по одному столбцу на левую часть каждого уравнения, на знак равенства и на правую часть. При этом мы попросили, чтоб левые части уравнений были выровнены по пра вому краю (отсюда r в преамбуле), правые части выровнены по левому краю (l в преамбуле), а знак равенства располагался по центру своей колонки (поэтому вторая буква в преамбуле — буква c). Для создания фигурной скобки, охватывающей всю систему, мы воспользова лись командами \left и \right, причем при команде \right стоит «пустой ограничитель» — точка (см. раздел 2.5). Если необходимо, чтобы отдельные уравнения в системе были пронумерованы, можно воспользоваться окружением eqnarray. Оно работает так же, как окружение array с пре амбулой rcl в вышеприведенном примере, но при этом у каждого уравнения автоматически печатается его номер (подобно тому, как автоматически печатается номер у выключной фор мулы, созданной с помощью окружения equation — см. раздел 2.1). Если пометить како е-либо уравнение с помощью команды \label, то в дальнейшем можно на него ссылаться с помощью команды \ref (тогда автоматически напечатается номер уравнения) или \pageref (тогда автоматически напечатается номер страницы, на которую попало это уравнение). По поводу \ref и \pageref см. раздел I.2.11. Итак, пример: 2 × 3 = 6 (2) 2 + 3 = 5 (3) На стр. 47 приведено глупое уравнение 3 . \begin{eqnarray} 2\times3&=&6\\ 2+3&=&5\label{silly} \end{eqnarray} nA STR.~\pageref{silly} PRIWEDENO GLUPOE URAWNENIE~\ref{silly}. Обратите внимание, что фигурной скобки, охватывающей систему уравнений, окружение eqnarray не создает. В этом примере символ ~ между «стр.» и \pageref поставлен, чтобы слово «стр.» и номер страницы не попали на разные строки (см. стр. 60 ); для аналогичных целей мы ис пользовали этот символ и вторично. При использовании окружения eqnarray не надо писать знаков $$ (подобно тому, как не надо их писать при пользовании окружением equation). Если Вы хотите нумеровать не все уравнения, надо уравнения, которые Вы нумеровать не будете, пометить командой \nonumber (непосредственно перед \\): II.3. ОДНО НАД ДРУГИМ 48 Z ∞ −∞ e −x 2 dx = √ π √ 576 = 24 (4) \begin{eqnarray} \int_{-\infty}^\infty e^{-x^2}dx & = & \sqrt{\pi}\nonumber\\ \sqrt{576} & = & 24 \end{eqnarray} Наконец, если Вы вообще не хотите нумеровать уравнения, то можно воспользоваться «ва риантом со звездочкой » — окружением eqnarray* вместо eqnarray . Окружение array можно использовать не только в выключных, но и во внутритексто вых формулах, хотя результат при этом обычно выглядит некрасиво. Окружения eqnarray и eqnarray* создают только выключные формулы. Давайте теперь подумаем, как с помощью окружения array можно набирать так называ емые «коммутативные диаграммы» такого, например, вида: 0 −→ E 0 f −→ E g −→ E 00 −→ 0 ↓ p ↓ q ↓ r 0 −→ F 0 f −→ F g −→ F 00 −→ 0 Разумно реализовать эту диаграмму как таблицу с тремя строками и девятью столбцами (по столбцу на каждую горизонтальную стрелку и на каждый нуль или букву). Как создать буквы над горизонтальными стрелками, мы тоже уже говорили: с помощью \stackrel (см. стр. 44 ). Осталось понять, как получить буквы справа от вертикальных стрелок. Для экономии попро буем сначала нарисовать диаграмму с одной вертикальной стрелкой. Вот первая попытка: E ↓ q F $$ \begin{array}{c} E\\ \downarrow q\\ F \end{array} $$ Вроде бы получилось, но не совсем то, что нужно: стрелка расположена не по центру. Не улучшит положения, если в преамбуле написать r вместо c ; если написать l , то будет чуть лучше, но стрелка все равно будет не в центре. Чтобы всего этого избежать, надо вместо q на писать \lefteqn{q}: после этого столбцы нашей таблицы будут отцентрированы так, словно во второй строке есть только стрелка (команда \downarrow), а буква q при этом центрирова нии принята во внимание не будет (но будет напечатана)! В результате получится именно то, чего мы и хотели. Для интересующихся объясним механизм действия этого приема. В процессе верстки текста TEX учитывает только, сколько места надо оставить на каждую букву, но не учитывает, как именно эта буква будет выглядеть на печати и сколько места она реально будет занимать. В обычных условиях на каждый символ оставляется именно столько места, сколько он занимает на самом деле, однако в TEXе предусмотрены и специальные команды, позволяющие отвести тексту меньше или больше ме ста, чем он займет фактически. В частности, команда \lefteqn печатает формулу, являющуюся ее аргументом, но при этом сообщает TEXу, что по горизонтали эта формула не занимает места вооб ще. Стало быть, с точки зрения TEXа ширина элемента, стоящего во второй строке нашей таблицы, определяется только шириной стрелки, и при центрировании текст располагается так, чтобы именно стрелка была на равном расстоянии от краев, сколь бы длинна на самом деле не была формула — аргумент \lefteqn. Теперь можно сделать и всю коммутативную диаграмму целиком. Держитесь: II.3. ОДНО НАД ДРУГИМ 49 $$ \begin{array}{ccccccccc} 0&\longrightarrow & E’ & \stackrel{f}{\longrightarrow}& E & \stackrel{g}{\longrightarrow} & E’’ & \longrightarrow & 0\\ &&\downarrow\lefteqn{p}&&\downarrow \lefteqn{q}&&\downarrow\lefteqn{r}\\ 0&\longrightarrow & F’ & \stackrel{f}{\longrightarrow}& F & \stackrel{g}{\longrightarrow} & F’’ & \longrightarrow & 0 \end{array} $$ Как видите, писанины очень много. Если Вам реально нужно печатать такие вещи, посмо трите уже сейчас начало главы VII : там объяснено, как можно значительно сократить длину таких записей. Возможности окружения array далеко не исчерпываются тем, что было рассказано в этом разделе, однако сказанного в большинстве случаев хватает; полное описание возмож ностей этого окружения будет дано позже, в главе VI . Download 1.51 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling