Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №12/2008


Спецвыпуски

Подготовка математических текстов средствами TEX (LATEX)

Представляемый в данном разделе компьютерный пакет верстки математических текстов является, пожалуй, самым старейшим из всех известных на сегодняшний день. При этом он остается благодаря базовой идее широко распространенным и неизменно развивающимся. Многие издательства, специализирующиеся на научной литературе физико-математического содержания, используют его при подготовке макетов книг, брошюр и т.д. TEX задуман и реализован как кроссплатформенное средство: он одинаково хорош как в Windows, так и в UNIX, Linux и других операционных системах.

TEX — public domain продукт, т.е. каждый может его свободно использовать, модифицировать и делать с ним все, что захочется. Электронная документация, подготовленная в TEX, может быть воспроизведена практически в любых условиях — от домашнего компьютера до суперкомпьютеров.

ТEХ (произносится “тех”, пишется также “ТеХ”) — это созданная в конце 70-х годов прошлого столетия американским математиком и программистом Дональдом Кнутом (Donald Е. Knuth) система для верстки текстов с формулами. Сам по себе ТEХ представляет собой специализированный язык программирования (Кнут не только придумал язык, но и написал для него транслятор, причем таким образом, что он работает совершенно одинаково на самых разных компьютерах), на котором пишутся издательские системы, используемые на практике. Каждая издательская система на базе ТEХ'а представляет собой пакет макроопределений (макропакет) этого языка. LATEХ (произносится “латех” или “лэйтех”, пишется также “LATEХ”) — это созданная в 1984 году Лесли Лэмпортом (Leslie Lamport) издательская система на базе ТEХ'а.

LATEX гораздо более удобен в использовании, нежели базовый TEX. В данном случае уместно сравнение с программированием на ассемблере или языках программирования высокого уровня. Первая версия была выпущена в 1984 году, текущая версия — LaTeX2e, после создания в 1994 году испытывала некоторый период нестабильности, окончившийся к концу 90-х годов, а в настоящее время стабилизировалась.

Дональд Эрвин Кнут (англ. Donald Ervin Knuth, родился 10 января 1938 г.) — американский ученый, почетный профессор Станфордского университета и нескольких других университетов в разных странах, преподаватель и идеолог программирования, автор 19 монографий (в том числе ряда классических книг по программированию) и более 160 статей, разработчик нескольких известных программных технологий. Автор всемирно известной серии книг, посвященной основным алгоритмам и методам вычислительной математики, а также создатель настольных издательских систем TEX и METAFONT, предназначенных для набора и верстки книг, посвященных технической тематике (в первую очередь — физико-математических).

Большое влияние на юного Дональда Кнута оказали работы Андрея Петровича Ершова, впоследствии его друга.

“Это началось еще когда я был студентом последнего курса. Тогда только появилась книга Андрея “Программирование для БЭСМ”, и мы, группа студентов, смогли убедить преподавателя русского языка включить ее в курс в качестве одного из двух сборников текстов для изучения научной лексики”.

Профессор Кнут удостоен многочисленных премий и наград в области программирования и вычислительной математики, среди которых Премия Тьюринга (1974), Национальная научная медаль (1979) и AMS Steele Prize за серию научно-популярных статей, Премия Киото (1996) за достижения в области передовых технологий, Премия имени Грейс Мюррей Хоппер (1971).

(Материал с сайта ru.wikipedia.org)

Перечислим некоторые достоинства TEX'а [3]:

1) никакая из существующих в настоящее время издательских систем не может сравниться с TEX'ом в полиграфическом качестве текстов с математическими формулами;

2) система TEX реализована на всех современных компьютерных платформах, и все эти реализации работают одинаково;

3) благодаря этому TEX стал международным языком для обмена математическими и физическими статьями;

4) в Интернете существуют обширные “архивы препринтов”, в которые каждый может послать статью (в формате TEX);

5) основные реализации TEX для всех платформ распространяются бесплатно.

Можно отметить недостаток, который может показаться пользователям Word довольно серьезным: TeX не является системой типа WYSIWYG — работа с исходным текстом и просмотр того, как текст будет выглядеть на печати, — разные операции. Другим пользователям, которые создавали web-страницы и не пользовались при этом специализированными визуальными программами, а верстали эти страницы вручную, TEX не покажется чем-то необычным — создание исходного текста документа будет похоже на верстку средствами HTML. Еще об одном недостатке. Среди достоинств TEX’а была отмечена высокая переносимость текста с одной платформы на другую; для текстов, написанных на русском языке, это не всегда верно.

При подготовке документа средствами LATEX требуется повторять следующий алгоритм [3].

1. Для начала автор должен подготовить файл с текстом, оснащенным командами для LATEХ'а, который по традиции имеет расширение .teх.

2. Дальнейшая работа протекает в два этапа. Сначала надо обработать файл с помощью программы-транслятора; в результате получается файл с расширением .dvi (device independent — не зависящий от устройства).

3. Теперь полученный файл (его называют dvi-файлом) можно с помощью программ, называемых dvi-драйверами, распечатать на лазерном или точечно-матричном принтере, посмотреть на экране (текст будет в таком же виде, как он появится на печати) и т.д. (для разных устройств есть разные драйверы). Неудовлетворенный результатом, автор вносит изменения в исходный файл — и цикл повторяется.

На самом деле повторений цикла будет больше, так как при синтаксических ошибках в исходном тексте транслятор будет выдавать сообщения об ошибках, которые приходится исправлять.

Обсудим, каким образом осуществляется подготовка исходного текста, т.к. это и будет представлять основную сложность при работе в LATEX.

Исходный файл для системы LaTeX представляет собой собственно текст документа вместе со спецсимволами и командами, с помощью которых системе передаются указания касательно размещения текста. Этот файл можно создать любым текстовым редактором, но при этом необходимо, чтобы в итоге получился так называемый “чистый” текстовый файл. Это означает, что текст не должен содержать шрифтовых выделений, разбивки на страницы и т.п.

Исходный текст документа не должен содержать переносов (TeX сделает их сам). Слова отделяются друг от друга пробелами, при этом TEX не различает, сколько именно пробелов между словами. Конец строки также воспринимается как пробел. Соседние абзацы должны быть отделены друг от друга пустыми строками.

Большинство символов в исходном тексте прямо обозначают то, что будет напечатано. Следующие символы

{}, $, &, #, %, _, «, ^, \

являются спецсимволами. Печатное изображение знаков, соответствующих первым семи из них, можно получить, если в исходном тексте поставить перед соответствующим символом без пробела знак “\” (по-английски он называется “backslash”).

Знак “%” обозначает комментарий внутри TeX’овской разметки. Фигурные скобки ограничивают группы в исходном файле. Знак доллара ограничивает математические формулы. При наборе математических же формул используются знаки “_” и “^” (“знак подчеркивания” и “крышка”). Знак “~” обозначает “неразрывный пробел” между словами. Со знака “\” начинаются все TeX'овские команды. Знаки “#” и “&” используются в более сложных конструкциях TeX'а.

Структура исходного текста

LaTeX-файл должен начинаться с команды \ documentclass, задающей стиль оформления документа (в LaTeX'е 2e принято говорить “класс документа”).

Пример:

\documentclass{book}

Слово {book} в фигурных скобках указывает, что документ будет оформлен, как книга: все главы будут начинаться с нечетных страниц, текст будет снабжен колонтитулами некоторого определенного вида и т.п. Кроме класса book, в стандартный комплект LaTeX'а входят классы article (для оформления статей), report (нечто среднее между article и book, proc (для оформления изданий типа “труды конференции”) и letter (для оформления деловых писем так, как это принято в США). Чтобы задать оформление документа с помощью одного из этих классов, надо в фигурных скобках после команды \documentclass указать вместо {book} название требуемого класса. Стандартные классы можно менять.

После команды \documentclass могут следовать команды, относящиеся ко всему документу и устанавливающие различные параметры оформления текста, например, величину абзацного отступа. Далее должна идти команда \begin:

\begin{document}

Только после этой команды может идти собственно текст. Если вы поместите текст или какую-нибудь команду, генерирующую текст до \begin{document}, то LaTeX выдаст сообщение об ошибке. Часть файла, расположенная между командами \documentclass и \begin{document}, называется преамбулой.

Заканчиваться файл должен командой

\end{document}

Если после \end{document} в файле написано что-то еще, LaTeX это проигнорирует.

Следующий пример показывает LaTeX-файл, составленный по всем правилам.

\documentclass{article}

\begin{document}

Пример оформления текста средствами \LaTeX.

\end{document}

Результат

Пример оформления текста средствами

При работе в LaTeX очень часто используются группы, которые создаются с помощью фигурных скобок. Сами по себе фигурные скобки не генерируют никакого текста и не влияют на оформление; единственное, что они делают, — это ограничивают группу внутри файла. Как правило, задаваемые командами TeX'а изменения различных параметров действуют в пределах той группы, внутри которой была дана соответствующая команда; по окончании группы (после закрывающей фигурной скобки, соответствующей той фигурной скобке, что открывала группу) все эти изменения отменяются, и восстанавливается тот режим, который был до начала группы.

У команд могут быть параметры, изменяющие значения, заданные по умолчанию. Например, можно изменить длину абзацного отступа или отступа от верхнего края листа:

\parindent=1cm

\topmargin-2.5cm

Вообще в TeX’е используются такие единицы длины.

Набор формул

Общая рекомендация по набору формул такая: лучше всего учиться набирать формулы, рассматривая разнообразные примеры. Поэтому постараемся ниже привести как можно больше разнообразных примеров.

В документе, подготовленном с помощью TeX'а, различают математические формулы внутри текста и “выключные” (выделенные в отдельную строку). Формулы внутри текста окружаются знаками “$” (с обеих сторон). Выключные формулы окружаются парами знаков доллара “$$” с обеих сторон. Формулами считаются как целые формулы, так и отдельные цифры или буквы, в том числе греческие, а также верхние и нижние индексы и спецзнаки. Пробелы внутри исходного текста, задающего формулу, игнорируются: TeX расставляет пробелы в математических формулах автоматически. Пустые строки внутри текста, задающего формулу, не разрешаются. Если нужен пробел до или после внутритекстовой формулы, надо оставить его вне “$”. То же самое относится и к знакам препинания, следующим за внутритекстовой формулой: их также надо ставить после закрывающего формулу знака “$”. Каждая буква в формуле рассматривается как имя переменной и набирается шрифтом “математический курсив”.

Степени и индексы набираются с помощью знаков “^” и “_” соответственно. Если индекс или показатель степени — выражение, состоящее более чем из одного символа, то его надо взять в фигурные скобки.

Пример

Дроби, в которых числитель расположен над знаменателем, набираются с помощью команды \frac. Эта команда имеет два обязательных аргумента: первый — числитель, второй — знаменатель.

Пример

Команда \left перед открывающей скобкой в совокупности с командой \right перед соответствующей ей закрывающей скобкой позволяет автоматически выбрать нужный размер скобки.

Пример (здесь команда \displaystyle позволяет получать символы того же размера, что и в выключной формуле)

Квадратный корень набирается с помощью команды \sqrt, обязательным аргументом которой является подкоренное выражение; корень произвольной степени набирается с помощью той же команды \sqrt с необязательным аргументом — показателем корня.

Пример

Некоторые дополнительные символы, необходимые для набора формул

Ниже приведена таблица строчных греческих букв.

Заглавные греческие буквы получаются аналогичными командами, с единственным отличием — первая буква в названии команды должна быть заглавной. Например, \Psi.

Таблица знаков бинарных операций.

Таблица знаков бинарных отношений.

Стрелки.

Математические функции.

Операции суммы, произведения и другие. Чтобы верхние и нижние пределы записывались выше и ниже знака суммы, произведения и т.д., используется команда \limits, далее указываем пределы как соответствующие индексы.

Разные значки.

Теперь, когда мы рассмотрели большинство используемых при наборе математических формул команд, приведем ряд примеров.


Пример набора матриц:

$$\matrix{1&1&1&\ldots&1&1&1\cr

1&0&0&\ldots&0&0&1\cr

1&0&0&\ldots&0&0&1\cr

\vdots&\vdots&\vdots&\ddots&\vdots&\vdots&\vdots\cr

1&0&0&\ldots&0&0&1\cr

1&1&1&\ldots&1&1&1\cr}$$

Результат

Пример набора системы уравнений

$$\cases{a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=a_{1,n+1},\cr

a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=a_{2,n+1},\cr

\hskip3cm\ldots,\cr

a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=a_{n,n+1},\cr}$$

Результат

Некоторые приемы набора текста

Изменение размера шрифта

Каждый из доступных в LaTeX'е текстовых шрифтов характеризуется следующими четырьмя атрибутами: семейством (family), насыщенностью (series), начертанием (shape) и размером (size). Что такое размер, читатель разберется самостоятельно, а смысл остальных атрибутов следующий:

  • семейство означает примерно (но не в точности) то же, что отечественный термин “гарнитура”; в стандартной поставке определены семейства rmfamily (шрифты с засечками), sffamily (шрифты без засечек) и ttfamily (шрифты типа “пишущая машинка”);
  • насыщенность определяет ширину и жирность шрифта. В стандартной поставке возможны насыщенности средняя (mdseries) и полужирная (bfseries);
  • начертание бывает прямое ( upshape), курсивное (itshape), наклонное (slshape) и “капитель” ( scshape).
    Каждый из шрифтовых атрибутов можно менять независимо от остальных. Каждая из команд для изменения остальных атрибутов существует в LaTeX'е в двух вариантах:
  • в виде команды без аргументов, меняющей атрибут текущего шрифта вплоть до того момента, пока он не будет изменен другой командой (или пока не закончится группа, если атрибут менялся внутри группы);
  • в виде команды с одним аргументом (помещаемым, как водится, в фигурные скобки), меняющей атрибут шрифта только у своего аргумента (т.е. у текста в фигурных скобках).

Пример

Таблицы

Окружение {tabular} задает таблицу. Окружению необходимо задать обязательный аргумент — преамбулу таблицы. Преамбула, помещаемая в фигурных скобках непосредственно после \begin{tabular}, представляет собой, в простейшем случае, последовательность букв, описывающих структуру колонок таблицы (по букве на колонку). Буквы эти могут быть такими:

  • l означает колонку, выровненную по левому краю;
  • r означает колонку, выровненную по правому краю;
  • c означает колонку с центрированным текстом.
    Между \begin{tabular} (с преамбулой) и закрывающей окружение командой \end{tabular} располагается собственно текст таблицы. В нем команда \\ разделяет строки таблицы, а знак “&”, называемый “амперсендом”, разделяет колонки таблицы внутри одной строки (так что текст между двумя ближайшими амперсендами описывает “одну графу” таблицы). Пробелы в начале или конце “графы” таблицы игнорируются.

Пример

\begin{tabular}{|l|c|c|c|c|c|l|}

\hline

&в $Q_1$&в $Q_2$&в $Q_3$&\ldots&в $Q_k$&Отправлено\\

\hline

из $P_1$&$x_{11}$&$x_{12}$&$x_{13}$&\ldots&$x_{1k}$&\hskip1cm$a_1$\\

\hline

из $P_2$&$x_{21}$&$x_{22}$&$x_{23}$&\ldots&$x_{2k}$&\hskip1cm$a_2$\\

\hline

\enskip\enskip\enskip$\vdots$&$\vdots$&$\vdots$& $\vdots$&$\ddots$&$\vdots$&\hskip1cm$\vdots$\\

\hline

из $P_m$&$x_{m1}$&$x_{m2}$&$x_{m3}$&\ldots&$x_{mk}$&\hskip1cm$a_m$\\

\hline

Привезено&$b_1$&$b_2$&$b_3$&\ldots&$b_k$&\\

\hline

\end{tabular}

Результат

Таким образом, мы рассмотрели базовые понятия и команды, необходимые для оформления математических формул и текста в целом в LaTeX. Объем данной публикации не позволяет охватить все в полном объеме. К тому же работе в TeX, LaTeX посвящены солидные издания.

Рекомендуем читателю, который заинтересовался данной системой верстки математических текстов, [2, 3], [4].

Далее обсудим, как создать, обработать файл в формате LaTeX.

Загрузить TeX и настроить его в соответствии с описанием, данным в документации, можно на одном из указанных ниже ресурсов.

Как отмечалось ранее, файл в формате LaTeX должен представлять собой “чистый” текст, поэтому создавать его лучше всего с помощью простейшего редактора. Авторы публикации для этих целей обычно используют: в MS DOS — ME(MultiEdit) или редактор Far; в Windows — Блокнот.

Далее необходимо получить .dvi-файл. Для этого подается команда

latex имя файла с расширением .tex

При обработке файла возможны сообщения об ошибках, если внутри исходного файла нарушается синтаксис LaTeX. В принципе аналогичную ситуацию мы наблюдаем при компиляции программы. После исправления найденных ошибок нужно повторить обработку файла.

После завершения обработки полученный .dvi-файл можно просмотреть или вывести на печать. Просмотр на экране

xdvi имя файла с расширением .dvi

Имеется возможность сохранить результаты обработки в формате PostScript или PDF.

Конечно, современные пользователи привыкли работать в графических объектно ориентированных операционных системах и программах. Поэтому ряд таких программ создано и в поддержку TeX (LaTeX). Из всех программ мы выбрали как наилучшую Lyx (официальный сайт http://www.lyx.org/Home). Рассмотрим далее кратко работу с этой программой, которая является свободно распространяемой. Дистрибутив включает в свой состав собственно Lyx и реализацию MikTeX.

После запуска программы получаем следующий результат (если предварительно не были сгенерированы все необходимые файлы и библиотеки TeX'а, то это происходит именно при первом запуске, поэтому придется подождать — иногда довольно долго, это зависит от мощности ресурсов компьютера — когда программа запустится):

Обратим внимание на основные элементы программы, которые относятся именно к обработке LaTeX-файлов.

Панель инструментов редактора содержит инструменты, привычные по другим текстовым процессорам.

Интерес представляет инструмент

который, как видно из подсказки, позволяет вставить код TeX. При этом данный код может быть на стандартном TeX или любой версии LaTeX.

Для формирования и просмотра .dvi и других типов файлов можно использовать инструменты на панели справа.

Как видно, поддерживаются также форматы PostScript и PDF.

После нажатия на кнопку dvi для приведенного выше примера получаем результат

Вообще во всех приведенных выше примерах для получения .dvi-файла был использован LyX.

Наконец, сохранить файл можно либо во внутреннем формате LyX, либо, что более ценно, экспортировать его в один из форматов.

Сохранение результатов экспортирования осуществляется в заданных по умолчанию директориях.

Вот, собственно, элементы LyX, которые можно использовать для обработки кодов LaTeX. С другими возможностями редактора (а они, безусловно, имеются) можно познакомиться по обширному справочному материалу, включенному в состав редактора.

Литература и ресурсы Интернета

1. Дональд Е. Кнут. Все про TEX. / Пер. с англ. М.В. Лисиной. Протвино, АО RDTEX, 1993, 592 с., илл.

2. Львовский С.М. Набор и верстка в пакете LaTeX. М.: Космосинформ, 1994, 328 с.

3. Львовский С.М. Набор и верстка в пакете LaTeX. 3-е издание, испр. и доп. М.: МЦНМО, 2003, 448 с.

4. Гуссенс М., Ратц С. Путеводитель по пакету LaTeX и его web-приложениям: Пер. с англ. М.: Мир, 2001, 601 с., илл.

5. http://www.intuit.ru/department/publish/latex/ — книга С.М. Львовского [3] как учебный курс на сайте интернет-университета ИНТУИТ.

6. http://forum.ru-board.com/topic.cgi?forum=5&topic=4633&start=40.

7. http://www.nsc.ru/win/docs/TeX/LaTex2e/docs_koi.html.

8. http://xtalk.price.ru/tex/

9. http://www.miktex.org/

10. http://ts1.cemi.rssi.ru/cyrtug/files/cyremtex/

11. ftp://ftp.vsu.ru/pub/tex/

12. ftp://ftp.aiai.ed.ac.uk/pub/packages/tex2rtf/

13. http://www.kfa-juelich.de/isr/1/texconv/textopc.html.

14. http://www.paratype.ru/

15. ftp://ftp.dante.de/tex-archive/

16. ftp://ftp.tex.ac.uk/tex-archive/

17. ftp://ctan.tug.org/tex-archive/

18. ftp://ftp.radio-msu.net/tex-archive/

19. ftp://ftp.chg.ru/pub/TeX/CTAN/

20. ftp://tex.ihep.su/pub/TeX/CTAN/

21. ftp://ftp.usaaa.ru/pub/math/tex/

Т.. Н.. Катанова ;
А.. П.. Шестаков

TopList