eSci.Ru logo
Данный ресурс создан для поддержания извечного стремления человека к сияющим вершинам разума
Главная > Статьи > Полет TeXнической мысли
Полет TeXнической мысли

Полет TeXнической мысли

Автор: Остапенко Денис aka Sharp

E-mail: sharp-c@yandex.ru

Однажды в конце 70-х годов XX века профессору Дональду Кнуту, знаменитому автору трехтомника «Искусство программирования», надоело, что Американское математическое общество (AMS, American Mathematical Society) коверкает присылаемые им статьи, и он взялся за дело. И это дело, выполненное Кнутом с присущей ему основательностью, стало одной из популярнейших издательских систем в мире. Имя ей — TeX.

TeX (произносится «тех»), мягко говоря, не очень похож на Word, OpenOffice или PageMaker. В нем нет WYSIWYG, в нем нет места использованию мыши в создании дизайна страницы, он не может нас порадовать ни обилием графических эффектов, ни красивыми панелями инструментов. Зато стилевого оформления, кроссплатформенности, автоматической генерации текстов и превосходного рендеринга математических формул там хоть отбавляй. Строго говоря, TeX, подобно HTML, представляет собой язык разметки и программу для его преобразования в такие универсальные форматы, как PS (PostScript), PDF (Portable Document Format) и т.п. Благодаря своим многочисленным достоинствам, TeX стал международным языком для обмена статьями по математике и физике, для примера, на сайте AMS (http://www.ams.org) содержится обширный архив математических статей именно в этом формате, огромное количество сайтов (в частности Wikipedia, http://lib.mexmat.net и этот сайт) используют TeX для добавления формул в текст.

Но обо всем по порядку. Для того, чтобы познакомится с TeX, нам нужно установить какой-нибудь пакет, включающий его и прочие нужные для издательского дела вещи — программы для преобразования форматов, шрифты, стили, дополнительные пакеты и документацию. Одним из наиболее часто используемых пакетов TeX является MikTeX (http://www.miktex.org). Как и положено всякой солидной программе, размер его внушает серьезные опасения невольным поклонникам диалапа — 255 МБ. Дальше в статье я буду рассматривать MikTeX 2.4.1445. Версии собственно TeX нумеруются знаками числа пи — самая ранняя имела номер 3, а включенная в рассматриваемый пакет уже 3.141592. Следует заметить, что все основные реализации TeX бесплатны.

Теперь, если вы скачали MikTeX, можно приступать к установке. Инсталляция почти ничем не отличается от обычной инсталляции Windows, нужно не забыть выбрать пункт Install, когда программа установки спросит, хотим ли мы установить MikTeX или только скачать. Затем на выбор будет предоставлены 3 возможных конфигурации: Small, которая потребует скачать 23 МБ и займет на диске 100 МБ, Large — 64/100 и Total — 143/500. Выберем Total, чтобы не иметь проблем с отсутствующими пакетами. Если же вы не имеете полного дистрибутива, тогда выбирайте то, что позволяет вам финансовая мощь и толщина Интернет-канала. После этого вы получите возможность выбрать, следует ли устанавливать MikTeX для всех пользователей или только для вас.

Перед тем как начнется установка, нужно еще выбрать, откуда и куда будут копироваться файлы. Можно довериться умолчаниям, а можно выбрать свой путь, но при этом не следует использовать в нем длинные имена файлов. Запаситесь кофе/пивом/чаем/лимонадом (нужное подчеркнуть) — инсталляция MikTeX не самый быстрый процесс.

Попутно вы можете скачать один из лучших текстовых редакторов для TeX — WinEdt (http://www.winedt.com). Я буду рассматривать версию 5.3 [Build: 20011213]. WinEdt распространяется shareware, регистрация стоит 40$, но без нее нам доступен 31-дневный испытательный срок, который будет уведомлять нас о том, что хорошо бы зарегистрироваться, всплывающими окнами, появляющимися с увеличивающейся частотой. Весьма полезной функцией WinEdt'а является проверка орфографии. Для того, чтобы он понимал русский язык, следует скачать с сайта программы соответствующий словарь и поместить его в папку WinEdt\dict. Для того чтобы WinEdt «увидел» словарь, зайдите в Options > Dictionary

Иногда, кроме этого, не помешает сменить шрифт на кириллический (например, Courier New Cyr).

Пока вы этим занимались, надеюсь, MikTeX уже установился. Нажав на долгожданную кнопку Finish, приступим к настройке. Для этого зайдем в меню «Пуск» и запустим программу MikTeX Options. На вкладке Languages снимем флажки с едва ли нужных нам french, german, ngerman и установим на russian

Теперь следует прописать переменную окружения PATH, включив в нее каталог texmf/miktex/bin:

I:\texmf\miktex\bin>PATH=i:\texmf\miktex\bin;%PATH%

I:\texmf\miktex\bin>path
PATH=i:\texmf\miktex\bin;D:\WINDOWS\system32;D:\WINDOWS;D:\WINDOWS\System32\Wbem

И вот, можно писать наш первый TeX-документ.

В файл 1.tex

\documentclass[11pt]{article}
\usepackage[russian]{babel}
\usepackage{amsfonts,amssymb,amsmath}
\begin{document}

\author{Остапенко Денис aka Sharp}
\title{Кое-что о квадратных уравнениях в \TeX}
\date{2005}
\maketitle{}

{\itshape Квадратным уравнением} называется уравнение вида $ax^2+bx+c=0$, где $x$ - неизвестное.

Для нахождения корней квадратного уравнения введем понятие {\bfseries дискриминанта}.

$$
D = b^2-4ac
$$

В зависимости от значения дискриминанта уравнение имеет 2 разных решения в действительных числах ($D>0$), 2 совпадающих решения в действительных числах ($D=0$) или 2 комплексных решения ($D<0$). Корни имеют следующий вид.

$$
x_{1,2} = \frac{-b \pm \sqrt{D}}{2a} = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
$$

\end{document}

Скомпилируем набранное в PDF-файл. Для этого следует набрать в консоли следующую команду.

latex 1.tex

LaTeX начнет выдавать разные непонятные строки, но если файл набран правильно, ничего не спросит и через некоторое время завершит работу. Если же во время компиляции произошла ошибка, он выведет строку, в которой она произошла, снабдив кратким описанием того, что ему не нравится в ней, после чего будет стоять вопросительный знак. Если вы хотите, чтобы LaTeX попытался обойти эту ошибку, просто нажмите Enter. В случае удачного завершения компиляции, в папке с TeX-файлом вы увидите DVI-файл (от DeVice Independent). Его уже можно просматривать, если, например, у вас есть GhostView, но лучше продолжить преобразования и получить готовый PDF-файл. Для этого вновь в консоли наберем

dvipdfm -o res.pdf 1.dvi

Ключ -o указывает, куда мы хотим вывести результат работы. Если и здесь не возникнет проблем, в том же каталоге будет создан файл res.pdf, который можно посмотреть, используя Adobe Reader (бывший Adobe Acrobat Reader).

Попробуем разобраться, что это мы такое написали. В TeX одним из основных понятий является команда. Это нечто, начинающееся на символ обратного слеша (\), и какие-нибудь слова после него, называемые именем команды. У команды могут быть параметры в фигурных (определяют еще и участок документа, к которым применяется команда) и квадратных (чаще всего содержат необязательные параметры) скобках. Команда заканчивается на фигурные скобки или на пробельный символ.

\documentclass[11pt]{article}

Эта строка должна идти самой первой в любом TeX-файле. Она задает класс документа и базовый размер шрифта. Кроме article, есть классы book, report, proc, letter и другие. Все это предопределенные часто используемые классы документов, в которых следует посылать статьи, письма и монографии в математические журналы.

\usepackage[russian]{babel}

В этой строке мы указываем, что будем использовать пакет babel, при чем не просто так, а с поддержкой русского языка. Эту строку тоже необходимо всегда добавлять в TeX-файлы, содержащий русский текст.

\usepackage{amsfonts,amssymb,amsmath}

Пакеты amsfonts, amssymb и amsmath содержат шрифты, символы и стили для математических документов, предназначенных для посылки в Американское Математическое Общество. Так получилось, что в этих пакетах содержится очень большое число нужных математических символов — если вы пишете текст, насыщенный формулами и значками для посвященных, эти пакеты вам пригодятся.

\begin{document}
...
\end{document}

Настроив и подключив все, что нужно, мы можем приступать к написанию самого текста. Текст, подобно тегу <BODY></BODY> в HTML, в TeX должен быть окружен командами \begin{document} и \end{document}.

\author{Остапенко Денис aka Sharp}
\title{Кое-что о квадратных уравнениях в \TeX}
\date{2005}

В этих трех строках мы рассказываем TeX, кто создал этот документ, как он называется, и когда произошло это знаменательное событие. Обратите внимание на команду \TeX — она выводит красиво «сфотографированное в прыжке» название системы TeX.

\maketitle{}

Команда \maketitle из сведений, почерпнутых у команд \author, \title и \date создает шапку для документа, выглядящую по-разному в зависимости от его класса. Таких автоматических генераторов текста в TeX довольно много, и они сильно облегчают работу над структурированным текстом. Как пример, можно привести команду \tableofcontents, которая на основании имеющихся в тексте команд \chapter и \section, выполняющих вполне понятную по их названиям роль, генерирует содержание. Следует отметить, что содержание обновляется не сразу, надо дважды перекомпилировать документ — файл с содержанием корректируется при первой компиляции и только при второй включается в результирующий документ.

{\itshape Квадратным уравнением} называется уравнение вида $ax^2+bx+c=0$, где $x$ - неизвестное.

Здесь мы выделили фрагмент текста фигурными скобками и применили к нему команду \itshape — как несложно увидеть на скриншоте результата, эта команда делает текст курсивным. А вот после этого следует то, за что TeX так любят математики и физики, а именно его несравненные возможности в области создания математических формул. Если формула идет непосредственно в тексте, она заключается в одинарные «кавычки» из знаков $, если отдельно, то в двойные — $$. Если же вам нужно получить просто знак $ или другой специальный знак TeX (% { } & # % ^ _ ~ \), следует поставить перед ним обратный слеш — \$. Знак ^ в математической формуле переводит символ за ним (или группу символов, если они заключены в фигурные скобки) в верхний индекс, а _ — в нижний. Обозначения TeX настолько удобны и мощны, что математики и студенты математических специальностей не обременяют себя рисованием формул и вставкой картинок на форумы и сайты, а непосредственно пишут их на языке TeX. Для непосвященного они, конечно, выглядят довольно странно, но с недавнего времени вы к ним не относитесь :). Надо сказать, что часто встречающееся на форумах представление формул в виде операторов языков программирования существенно уступает этому методу, хотя бы потому, что «лексикон» ЯВУ весьма беден. Это непременно приводит к недоразумениям в случае использования сколько-нибудь обширного математического арсенала. Ну а в случае логических высказываний, которые на TeX выглядят просто

\forall{x} \in \mathbb{N}\,\exists{y}: f(x, y) = 0

поклонникам ЯВУ-формул приходится обходиться словами. Здесь \forall — это символ квантора всеобщности, \in — символ принадлежности множеству, \mathbb изменяет начертание N на ажурный шрифт, которым пишутся общеупотребительные множества, вроде множества натуральных, рациональных или комплексных чисел, \, создает маленький пробел (иногда у TeX с этим проблемы), а \exists обозначает квантор существования.

Переходя к следующему абзацу, хочу обратить ваше внимание на то, как в TeX сделаны абзацы. Абзацы в TeX сделаны с помощью пустой строки — простой перевод строки будет заменен пробелом. Как и в HTML, форматировать исходный текст документа в TeX не нужно: и абзацные отступы и промежутки между словами, разделенными любым числом пробельных символов, получаются автоматически.

Для нахождения корней квадратного уравнения введем понятие {\bfseries дискриминанта}.

Команда \bfseries меняет начертание выделенного ей текста на полужирное. Злоупотреблять жирными и наклонными начертаниями весьма не рекомендуется — ведь если вы отмечаете, допустим, курсивом, все термины в вашем документе, а потом захотите сменить курсив на полужирное начертание, вам будет довольно тяжело, особенно если кроме терминов курсивом отмечено что-то еще.

\frac{-b \pm \sqrt{D}}{2a}

Команда \frac создает дробь, в которой числитель расположен над знаменателем. Она имеет следующий формат: \frac{числитель}{знаменатель}. Команда \pm вставляет в текст символ плюс-минус, а \sqrt заключает выделенный ей текст под знак квадратного корня. Если вам не нравятся квадратные корни, вы можете указать показатель степени в квадратных скобках перед фигурными:

\sqrt[4]{x}

Заметим, что подобно HTML, в TeX можно использовать комментарии. Комментарий начинается с неэкранированного символа % (т.е. перед ним нет обратного слеша) и кончается переводом строки, включительно.

Вот мы и разобрались с тем, что же было написано в нашем первом TeX-тексте. Вкратце упомянем прочие часто употребляемые возможности.

\begin{verbatim}
#include <iostream>

using namespace std;

int main(){
   cout << "Hello, world!" << endl;
   return 0;
}
\end{verbatim}

Текст внутри блока verbatim будет отображен на экране именно так, как он набран. Это нужно, например, для отображения листингов программ.

\begin{tabular}{|l|l|l|l|}
\hline
$A\alpha$        & альфа   & $B\beta$           & бэта    \\
$\Gamma\gamma$   & гамма   & $\Delta\delta$     & дельта  \\
$E\varepsilon$   & эпсилон & $Z\zeta$           & дзэта   \\
$H\eta$          & эта     & $\Theta\theta$     & тэта    \\
$I\iota$         & йота    & $K\kappa$          & каппа   \\
$\Lambda\lambda$ & ламбда  & $M\mu$             & мю      \\
$N\nu$           & ню      & $\Xi\xi$           & кси     \\
$Oo$             & омикрон & $\Pi\pi$           & пи      \\
$P\rho$          & ро      & $\Sigma\sigma$     & сигма   \\
$T\tau$          & тау     & $\Upsilon\upsilon$ & ипсилон \\
$\Phi\phi$       & фи      & $X\chi$            & хи      \\
$\Psi\psi$       & пси     & $\Omega\omega$     & омега   \\
\hline
\end{tabular}

Блок tabular предназначен для построения таблиц. Параметр {|l|l|l|l|} определяет, что в таблице содержится 4 колонки с выравниванием влево (r — вправо, c — по центру). Команда \hline вставляет горизонтальную линию, которой можно ограничить таблицу сверху и снизу, а можно и провести границу между элементами. Ячейки одной строки таблицы разделяются символом &, строки кончаются на два обратных слеша \\. В таблице приведены обозначения для греческих строчных и заглавных символов, символы, одинаковые по начертанию с символами латинского алфавита заменяют последними.

$$
\sin{x} = x - \frac{x^3}{3!} + \frac{x^5}{5!} + O\left( x^6\right) \approx x\left( 1-\frac{x^2}{6}\right)
$$

Здесь \sin — предопределенная функция, она отображается прямым шрифтом, отличающимся от курсива остальной формулы. \left( и \right) — это скобки, меняющие свой размер в зависимости от содержимого, а \approx — символ приблизительного равенства.

$$
\sum\limits_{i=1}^{100} i = 1+2+3+\ldots+100
$$
$$
M = \{\,x \in \mathbb{N} \mid x \le 5\,\}
$$

Вслед за символом суммы \sum идет команда \limits, которая служит для того, чтобы последующие параметры i=1 и 100 не были сдвинуты вправо, а располагались точно сверху и снизу. Аналогично сумме представляются произведение (\prod), интеграл (\int), объединение и пересечение множеств (\bigcup, \bigcap) и т.п. Команда \ldots вставляет троеточие снизу строки, \cdots посередине. Во второй формуле команда \mid вставляет вертикальную черту, отделяющую условие принадлежности элемента множеству в определяющем его выражении. Символ \le — это меньше или равно, аналогично \ge — больше или равно, \ne — не равно.

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

Вот собственно и все, что я хотел вам рассказать о замечательной издательской системе TeX. Если вы хотите ознакомиться с ней подробнее, рекомендую книгу С.М. Львовский «Набор и верстка в системе LaTeX». Ее можно без труда найти в Интернете.

Копирование материалов сайта допускается только с указанием ссылки