Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 33
Текст из файла (страница 33)
Они производят последовательность выключныхформул, выровненных в трёх колонках. Тело процедур должно быть подготовлено, как для процедуры array9 с аргументом rcl. Оно состоит из последовательности строк, разделённых командами \\, а каждая строка состоит из трёх колонок,разделённых при помощи служебного символа &. В первой и третьей колонкахматематические выражения форматируются в стиле D, как в однострочных выключных формулах, а в средней колонке — в стиле T , как в формулах внутриабзаца (в ней обычно ставят знак равенства или другой оператор сравнения).В отличие от процедуры array, которая используется в математической моде,процедуры eqnarray и eqnarray* работают только в текстовой моде, так как онисами переводят LATEX в математическую моду.
В процедуре eqnarray каждаястрока нумеруется, если в ней отсутствует команда\nonumberкоторая подавляет нумерацию:9Однако команду \multicolumn (глава 12) использовать нельзя.154Глава 6. От арифметики до высшей математики\begin{eqnarray}x& = & 21y\\y& < & a+b+c+ \nonumber \\&& d - e\end{eqnarray}x =y<(6.2)21ya+b+c+d−e(6.3)Ссылку на любую строку уравнения, как обычно, можно сделать при помощикоманды \label.
Её целесообразно размещать либо в начале, либо в конце соответствующей строки. В *-форме процедуры eqnarray нумерация отсутствует.Если при расщеплении формулы на несколько строк новая строка должна начинаться со знака бинарной операции (+, - и т. д.), то перед ним полезно вставитькоманду \mbox{}, иначе LATEX будет рассматривать знак бинарной операции какобычный символ и удалит дополнительный пробел после него. При форматировании очень длинных формул полезной оказывается также команда\lefteqn{math}Её используют обычно в левой колонке, помещая весь текст в её аргумент math.Он будет сформатирован обычным образом, но LATEX будет считать, что длинаформулы в колонке равна нулю. Поэтому колонка будет сделана предельно узкой.Если в многострочной формуле используются большие скобки, увеличенные припомощи \left и \right, то в каждой строке эти команды должны использоватьсяпопарно.
Следующий пример иллюстрирует все сказанное.\begin{eqnarray*}\lefteqn{x+y+z=}\\& & \left(a+b+2c\right. \\& & \left.\mbox{}-d+m\right)\end{eqnarray*}x+y+z =(a + b + 2c− d + m)Здесь команда \mbox использована, чтобы «оттянуть» знак минус от первогослагаемого в начале последней строки. Поскольку всё познается в сравнении,покажем, что получается с тем же уравнением без применения «ухищрений» ввиде команд \lefteqn и \mbox:\begin{eqnarray*}x+y+z &=\\& & \left(a+b+2c\right. \\& & \left.-d+m\right)\end{eqnarray*}x+y+z=(a + b + 2c−d + m)Вместо eqnarray можно порекомендовать процедуры из раздела 8.6, которыевводит пакет amsmath. Если нашему Читателю часто приходится иметь дело сгромоздкими формулами в своих публикациях, он должен получить второе высшее математическое образование, прочитав главу 8.1556.9.
Позиционирование в формулах6.9.Позиционирование в формулахВыполним обещание, данное в разделеи расскажем, как сделать одина√ 6.4.3,√√ковыми знаки корня в формуле a + d + g. Ответ в принципе прост: нужнозаставить LATEX «думать», будто высота подкоренного выражения везде одинакова. Для этого достаточно вставить в подкоренное выражение невидимый символдостаточно большой высоты и глубины. Высота — это расстояние, на котороесимвол или целое выражение возвышается над невидимой осевой линией.
Соответственно, глубина — это расстояние от осевой линии до нижнего края выражения. В математической формуле осевая линия проходит горизонтально там, гденаходится или мог бы находиться знак минус. В данном случае самой высокойбуквой является d, а ниже всего от осевой линии спускается «хвостик» буквы g.Обычная круглая скобка чуть выше, чем d, и опускается чуть «глубже», чем g,а команда\mathstrutкак раз вставляет невидимый символ, имеющий высоту круглой скобки и нулевую ширину. Такие невидимые символы называются стратами.
Так что искомоерешение может быть таким:,,,$ \sqrt{a\mathstrut} +a+ d+ g\sqrt{d\mathstrut} +\sqrt{g\mathstrut} $В общем случае вместо \mathstrut можно использовать команду\vphantom{math}Она создаёт страту, которая простирается вверх и вниз от осевой линии на такиеже расстояния, как и формула {math}; сама формула при этом не печатается.Обратите внимание, что в следующем примере знак корня увеличивается тольковверх, но не вниз.√√$ \sqrt{a\vphantom{d}} + \sqrt{d}a+ dВ многострочных формулах взаимное расположение выражений в разныхстроках может быть отрегулировано при помощи команды\phantom{math}Она создаёт пробел с шириной, равной ширине невидимой формулы, набраннойв виде {math} (вместе с фигурными скобками).\begin{eqnarray*}W &=& \sum a_i+E+F\\& & \phantom{\sum a_i}+G\end{eqnarray*}W=ai + E + F+G156Глава 6.
От арифметики до высшей математикиЗадачу, обратную \phantom и \vphantom, решает команда\smash{math}Она форматирует формулу {math}, но заставляет LATEX думать, будто та имеетнулевую высоту и глубину. Мы ещё поговорим о её усовершенствованном варианте, который имеется в пакете amsmath (раздел 8.11.12).6.10.Параметры настройки\jot — высота пробела между строками в процедурах eqnarray и eqnarray*. Нерастяжимая длина.\mathindent — расстояние между левой границей окружающего текста и левым краемформулы при использовании в \documentclass опции fleqn, которая устанавливает выравнивание выключных формул по левому краю страницы, а не по центру строк.
Нерастяжимая длина.\abovedisplayskip — дополнительный вертикальный пробел над длинными выключнымиформулами, которые начинаются левее конца предыдущей строки. Если выключные формулы выравниваются по левому краю страницы, взамен \abovedisplayskip используется\topsep. Растяжимая длина.\belowdisplayskip — дополнительный пробел под длинными выключными формулами.Не работает с опцией fleqn, использующей команду \topsep. Растяжимая длина.\abovedisplayshortskip — дополнительный пробел над короткими выключными формулами, которые начинаются правее того места, где окончилась предыдущая строка.
Не работает с опцией fleqn, использующей команду \topsep. Растяжимая длина.\belowdisplayshortskip — дополнительный пробел под короткими выключными формулами. Не работает с опцией fleqn, использующей команду \topsep. Растяжимая длина.Сведений, изложенных в этой главе, более чем достаточно для подготовкиматематически очень сложных текстов. Если же наступит день, когда что-то неудастся сделать изложенными здесь методами,— обратитесь к главе 8, посвящённой коллекции пакетов AMS-LATEX. Пока же мы прервём урок математики и вследующей главе займемся конструированием новых команд и процедур.Если всё иное бесполезно,читайте инструкцию.Аксиома КанаГлава 7Программируйте самиПодготовка печатного документа из рутинного дела может стать увлекательнымзанятием, если включить на полную мощь такой универсальный инструмент, какпрограммирование команд и процедур.
Мы коснёмся этой темы лишь настолько,насколько программирование способно облегчить участь рядового пользователяLATEX’а. Например, в предыдущей главе мы писали, что длинные названия математических символов можно сократить, введя команды-синонимы, хотя мы самиэтого никогда не делаем, предпочитая ясность краткости. Для тех, кто владеетанглийским, длинные имена математических команд даже удобны, так как обычно совпадают с названиями математических символов. Однако более сложнуюструктуру, которая часто повторяется, действительно бывает полезно представить в виде команды с кратким удобным именем, проясняющим её назначение.LATEX позволяет переопределять существующие и создавать новые команды ипроцедуры.
Данная глава рассказывает, как это следует делать. В разделе 7.3вводится новое понятие — теорема. Это особая процедура, которая автоматически печатает заголовок, общий для всех теорем одного вида, и порядковый номер.Так в учебниках по математике обычно оформляются теоремы, леммы и другиеподобные утверждения.7.1.Определение новых командЕсли в документе часто используется одно и то же словосочетание, например«Г-н Председатель», то с помощью \newcommand можно определить коротенькуюкоманду, которая будет генерировать этот незамысловатый текст:\newcommand{\boss}{Г-н Председатель}\boss\ заявил, что не может быть двухмнений относительно плюрализма мнений.\boss\ также сказал то, что думает.Г-н Председатель заявил, что не может быть двух мнений относительноплюрализма мнений.
Г-н Председатель также сказал то, что думает.Очень часто декларация \newcommand используется для сокращения записи математических формул:158\newcommand{\gn}{$\alpha_{v}$}.Пусть \gn\ есть число мух в единицеобъёма, причём при подсчёте \gn\учитываются особи только мужского пола.Глава 7. Программируйте самиПусть αv есть число мух в единицеобъёма, причём при подсчёте αv учитываются особи только мужского пола.Нововведённая команда \gn используется здесь для сокращения записи математических формул, заменяя собой символ α с индексом v. Напомним, что пробелпосле имени команды игнорируется.
Поэтому после \gn вставлена команда \␣,принудительно создающая пробел. В конце этого раздела мы покажем, как создать команду, которая не игнорирует пробелы после себя, хотя существованиеподобной команды противоречило бы практике программирования для LATEX’а.Приведённый пример иллюстрирует общую проблему с созданием новых команд.