Rambler's Top100 Service калинин.ru /  << 04.08.00 >>

Набор простейших документов

Сначала поговорим о том, чем является TeX. Сразу же оговорюсь, что произносится это слово не как "текс", а именно как "тех". Объясняется это (по словам автора, Дональда Кнута), тем, что TeX есть сокращение от греческого слова, от которого происходит слово technology (так же Кнут обращает внимание на то, что это греческое слово еще обозначает искусство). Поэтому X в слове TeX есть не "заглавное икс" а греческое "заглавное хи". Кроме того, буква E в слове TeX, если правильно записывать название программы, немного ниже букв T и X, т.е. на самом деле логотип выглядит примерно так: TEX. В случае, когда такой набор невозможен, используют запись "TeX". Я тоже буду придерживаться последнего набора, потому что TEX не так хорошо смотрится на web-страничке.

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

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

\header{Заголовок}

Обычный текст.

Не надо ждать от макроязыка TeX'а чего-то такого, что присуще настоящим языкам программирования, Кнут не ставил перед собой цель создать язык программирования. Поэтому этого всего-лишь макросы, т.е. средства для того, что бы сократить количество набираемых параметров. Тем не менее, эти макросы позволили применить к документу так называемую "ортогональную" разметку. Что это значит? Это значит, что можно описать каким-то образом в некотором, называемом стилевым, файле все макросы, которые имеют отношение к логической структуре документа. Т.е., заголовки, сноски, перечисления и т.д. Это позволит разделить оформление и непосредственное содержание документа, что и называется ортогональной разметкой документа.

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

Вообще, TeX занимается тем, что по исходным файлам, содержащим необходимые макроопределения и, собственно, исходный текст документа, строит так называемый dvi-файл, т.е. файл, готовый к отображению и не зависящий от вида устройства, на котором он будет отображаться. На самом деле, в формате этого файла некоторые моменты были упущены (например, цвет) и это пришлось вводить в виде специальных указаний к программам, которые dvi просматирвают или печатают. В итоге, появилось несколько семейств популярных специальных указаний и смысл dvi-файлов несколько потерялся. Вообще говоря, именно по этой причине на текущий момент непосредственно dvi практически уже не используется --- его заменили форматы ps (postscript) и pdf (portable document format) от Adobe. Существуют программы перевода dvi в эти форматы и варианты TeX'а, которые сразу же создают их. Кроме переносимости, использование pdf и ps дает возможность вставлять Type1 и TrueType шрифты в документы (в отличие от используемых в TeX растровых шрифтов, создаваемых из векторных программой METAFONT).

Кроме того, TeX дает возможность очень просто и удобно набирать математические формулы --- каждый, кто хоть раз пробовал пользоваться, к примеру, MS Equation, прекрасно понимает, что я имею в виду.

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

После того, как TeX установлен, надо произвести некоторые телодвижения для того, что бы он правильно понимал русские буквы. Надо сказать, что я не буду ничего упоминать про внутренности TeX'а и буду рассказывать только про LaTeX (а не Plain TeX), по той причине, что я считаю его более приспособленым к использованию большинством пользователей.

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

Для того, что бы настроить LaTeX версии 2e на то, что бы он понимал русский текст (в данном случае, все сводится к таблицам русских переносов), надо найти файл, который находится внутри дерева TeX (обычно называется texmf) по следующему пути: texmf/tex/generic/config/language.dat. В этом файле надо убрать комментарий (символ процента в начале строки) со строчки, содержащей

russian ruhyphen.tex

После этого надо будет перекомпилировать стилевые файлы. Обычно для этого достаточно набрать команду initexmf, но это может отличаться для конкертного дистрибутива --- смотрите документацию.

Для того, что бы работать с TeX'ом, нужно иметь текстовый редактор, который сохраняет файлы в естественном для них виде. Например, для Win32 notepad или редактор FAR'а; существуют специализированные редакторы, например, WeinEdt. Я же сам использую XEmacs для этой цели (да и не только для нее; XEmacs'ом я пользуюсь везде и для всего: редактирования программ, html, ...) WinWord, наверное, лучше не использовать. Хотя, быть может, и есть эстеты...

В этом редакторе надо набрать (или просто скопировать) следующий текст:

\documentclass{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\begin{document}
Привет, мир!
\end{document}

Первая строчка в этом файле задает класс документа --- это как раз и есть пример ортогональной разметки документа. В стандартной поставке, кроме article, есть еще такие классы, как, например, report и book. Они отличаются видом страниц, например, класс book адаптирован для печати на двух сторонах листа (т.е., у него отличаются колонтитулы на правых и левых страницах), в отличие от article (у которого колонтитулов вообще нет, кроме стандартной нумерации страниц).

Во второй строчке находится указание на использование некоторого пакета. В данном случае, оно обязательно, поскольку у русского языка существует много кодировок, поэтому необходимо выставить соответствие между буквами шрифта и символами входного потока. То, что находится внутри фигурных скобок --- название пакета; в данном случае это пакет, который изменяет кодировку (на самом деле, он делает немного другое, но это пока что не важно). В квадратных скобках --- параметры пакета. В данном случае, задает кодировку (cp1251, cp866, koi8-r и т.д.). В принципе, можно менять кодировку документа и внутри, используя для разных отрезков документа различную кодировку... наверняка, это вам не особенно понадобится, обычно эта возможность используется для включения в текст других файлов.

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

Третья строка (это опять использование пакета) задает язык документа. Это, во-первых, включает использование конкретной таблицы переносов и, во-вторых, задает различные национальные форматы (например, названия "Глава", "Содержание"). В принципе, аргумент может задавать несколько языков одновременно (например, русский и английский), но тогда надо будет явно указывать, какой текст является русским, а какой --- английским.

Пара \begin{...} и \end{...} задает "процедуру", как это написано в книгах по LaTeX'у. По-моему, неудачное название. Процедура задает некоторый логический атрибут содержащемуся внутри тексту. Например, процедура document должна содержать весь текст документа. Правила расстановки \begin{...} и \end{...} аналогичны правилам расстановки скобок в арифметических выражениях.

Текст на пятой строчке и есть документ. Теперь, после того, как будет запущена команда:

latex test

подразумевая, что файл был сохранен под названием test.tex, будет получен файл test.dvi (и еще несколько служебных файлов, но это не важно сейчас), который можно будет посмотреть имеющийся в вашем дистрибутиве программой (например, yap для MikTeX или xdvi для Unix-систем). Результат, поверьте, будет ошеломляющий ;)

Теперь о том, как набирать простые документы. Во-первых, абзацы разбиваются между собой пустыми строками, например:

Текст первого абзаца.

Текст второго абзаца.

Пустая строка говорит TeX'у, что в этом месте надо закончить один абзац, и начать второй. Обычно это заключается в том, что он пропустит некоторое расстояние по вертикали, сделает соответствующий отступ в начале следующей строки.

Во-вторых, надо запомнить названия логических атрибутов для заголовков. Вот они: \part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. Надо учитывать, что для некоторых классов документов нет некоторых из этих атрибутов. Например, у класса article отсутствуют атрибуты \part и \chapter. Таким образом, можно привести пример следующего документа с выделеной логической структурой:

\documentclass{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\begin{document}
\section{Первый раздел}

Первый абзац.

Второй абзац.

\section{Подраздел}

Привет, мир!

\section{Второй раздел}

Третий абзац.

Четвертый абзац.
\end{document}

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

В третьих, вам обязательно понадобятся титульная страница и содержание. Это тоже очень просто добавить в документ.

\documentclass{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\usepackage{indentfirst}
\begin{document}
\title{Название}
\autor{Автор, name@domen.ru}
\maketitle
\tableofcontents

.
.
.

\end{document}

Команды \title и \author идентифицируют документ. На месте \maketitle появится заголовок документа, соответствующий классу документа (для article это будет несколько строчек, набранных большим шрифтом и дата, для book это будет отдельная страница). На месте \tableofcontents появится содержание.

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

Особенно обращаю ваше внимание на четвертую строку примера выше --- она новая, по сравнению с предыдущими примерами. Это использование еще одного пакета, под названием indentfirst. Он заставляет LaTeX делать абзацный отсутуп в первом абзаце раздела, как это соответствует русским правилам набора (по американским правилам, первый абзац не содержит отступа).

В принципе, на этом можно закончить, но вас еще может интересовать, что еще можно сделать с полученым документом, кроме того, что бы его распечатать. Все дело в том, что хорошо бы иметь электронную версию документа, которую можно послать кому-нибудь по электронной почте и совершенно некультурно требовать от получателя знаний TeX'а. Поэтому я сразу же упомяну о двух утилитах, которые обычно включаются в состав дистрибутивов TeX'а: dvips и dvipdfm. Первая из них делает по dvi файлу ps аналог (который можно посмотреть ghostscript или распечатать на ps-принтере), вторая --- делает pdf файл, который можно просмотреть при помощи свободно распространяемой и присутствующей почти на всех операционных системах программой Acrobat Reader. Обе из этих программ запускаются следующим образом:

dvips test
dvipdfm test

После их выполнения будут получены файлы test.ps и test.pdf соответственно.

Резюме

TeX очень удобен и прост в использовании. Возможность использования ортогональной разметки сильно облегчает жизнь при наборе документов, а качество получаемых документов много выше, чем качество, например, WinWord. Хотя эти два продукта даже сравнивать нельзя: WinWord --- текстовый процессор, а TeX --- издательская система (наравне с Ventura Publisher и Adobe PageMaker). Кроме того, TeX --- свободно распространяемая программа. В общем, попробуйте TeX, возможно что он вам понравится.


Версия для печати


  Ссылки по теме:
http://www.tug.org
   Официальный сайт TeX Users Group.
http://www.miktex.org
   Наверное, лучшая реализация TeX для Win32.
http://www.xemacs.org
   Официальный сайт редактора XEmacs; им можно редактировать все и везде, включая исходники TeX-документов.
  Рядом в разделе:
В этом разделе только один материал
  Рядом по дате:
Мифический человеко-месяц (05.08.00)
   В принципе, эта книга для "ветеранов программирования" в комментариях не нуждается --- в свое время ее первое издание было очень популярно....   >>>>
www.absurd.org, стильный дизайн (03.08.00)
   Я давно хотел добавить к "комментариям" комментарий на этот сайт. Все дело в том, что комментировать там нечего, но дать хорошую...   >>>>
  Содержание:
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
   C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Просто так
Студенческое
Туризм
  Байки
Фотографии
Комментарии
   Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Благодарности
Форум
Хронология
 
  В этом разделе:
Набор простейших документов (04.08.00)
   Сначала поговорим о том, чем является TeX. Сразу же оговорюсь, что произносится это слово не как "текс", а именно как "тех"....   >>>>
Содержание раздела полностью...
   Примерно в тоже время
Мифический человеко-месяц (05.08.00)
   В принципе, эта книга для "ветеранов программирования" в комментариях не нуждается --- в свое время ее первое издание было очень популярно....   >>>>
www.absurd.org, стильный дизайн (03.08.00)
   Я давно хотел добавить к "комментариям" комментарий на этот сайт. Все дело в том, что комментировать там нечего, но дать хорошую...   >>>>
Хронология полностью...
   Содержание
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
  C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Туризм
  Байки
Фотографии
Комментарии
  Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Студенческое
Просто так
Благодарности
Форум
Хронология
© 2000-2008, Andrey L. Kalinin
mailto:andrey@kalinin.ru
Rambler's Top100