MacSchool
Новости Почему Мак? Методика Работы учеников Макинтош SOS! Ссылки Об участниках

TeX/LaTeX на Макинтоше

Большинство читающих эту страницу, вероятно, знают ответ, но все же...

Что это за зверь и зачем он нам?

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

На первый взгляд, такой способ неудобен, и совершенно не понятно, ради чего стоит отказываться в его пользу от привычного Word'а или AppleWorks. Однако, множество людей в мире пользуются именно им; TeX реализован едва ли не на всех мыслимых компьютерных платформах, в том числе, в виде весьма недешевых коммерческих программ. В чем же дело?

TeX (читается, кстати, как "тех") был создан Доналдом Кнутом как средство для набора и печати текстов, насыщенных математическими формулами. Он предоставляет возможность чрезвычайно гибко управлять видом документа, однако его непосредственное использование требует очень высокой квалификации. Для упрощения использования TeX создавались различные макропакеты. Наиболее известны PlainTeX (создан самим Д.Кнутом), AMS-TeX (пакет Американского Математического Общества) и LaTeX Лесли Лампорта.

LaTeX ("латех" или "лейтех") выступает в роли профессионального технического редактора, который в строгом соответствии с полиграфическими правилами и традициями управляет работой верстальщика -- TeX'а. В результате, автор, не вдаваясь в тонкости издательского процесса, может подготовить издание чрезвычайно высокого полиграфического качества, с четкой структурой, грамотно оформленными сносками, автоматически созданными оглавлением, списками иллюстраций и таблиц, индексом и т.д. Очень легко набираются формулы (справедливости ради нужно заметить, что пока нет возможности полностью соблюдать некоторые правила оформления формул, традиционно принятые в России). Для подготовки исходного текста можно использовать любой самый примитивный редактор и, соответственно, самый старый компьютер (хоть Мак Плюс или PC/XT). Генерация шрифтов и верстка требуют уже гораздо больших ресурсов, однако выполняются автоматически, т.е. человек может в это время спокойно заниматься другими делами.

Пример исходного кода и сформированной LaTeX'ом формулы
n!=\underbrace{1 \cdot 2 \cdot 3 \cdot \cdots \cdot n}_{n}=
\prod_{i=1}^{n}i=
\left\{
\begin{array}{ll}
1, & n=0; \\
n \cdot (n-1)!, & n=1,2 \ldots
\end{array}
\right.
Пример формулы

Естественно, в верстке плаката, рекламной листовки или иллюстрированного журнала LaTeX не помощник. Но при подготовке учебных пособий, методичек, статей он -- вне конкуренции. В конце концов, даже если Вы еще сомневаетесь, кто мешает попробовать?

Итак...

К началу страницы

Что нужно, чтобы установить на Макинтош TeX/LaTeX

Во-первых, естественно, нужен собственно сам TeX. Наиболее удачной (для нас) реализацией оказался OzTeX. Он предоставляет достаточно удобную среду для работы. Он не предъявляет слишком больших требований к аппаратуре (Все компоненты, кроме OzTtH -- программы, генерирующей HTML-код, работают на любом 68k Маке. Для размещения рабочего набора файлов требуется менее 100 мегабайт дискового пространства). Он, что немаловажно для нашего российского образования, условно-бесплатный2 (причем, отсутствие регистрации никак не отражается на его работоспособности).

Приготовьтесь к тому, что потребуется скачать достаточно большой объем архивных файлов. Как минимум потребуется:
OzTeX.sit (ок. 700К) -- непосредственно программа;
TeX.sit (ок. 5М) -- набор рабочих файлов;
OzMF.sit (ок. 500К) и MF.sit (ок. 1.5М) -- программа METAFONT и файлы для ее работы;
Local.sit (3К) -- локальный конфигурационный файл.

Для работы с PostScript пригодится еще OzMP.sit (ок. 350К) и MP.sit (ок. 350К) -- программа MetaPost и файлы для нее.

Если у Вас есть компьютер с процессором PPC, и вы собираетесь преобразовывать свои публикации в HTML-страницы, скачивайте и OzTtH.sit (TeX to HTML).

Кроме того, не поленитесь скачать еще один, размещенный там же архив -- Extras.sit (ок. 4М). В нем комплект не обязательных, но полезных (и не только для работы с TeX'ом) программ.

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

Итак, начнем со шрифтов (Речь пойдет только о multifont-шрифтах, хотя при желании можно использовать и PostScript Type 1). Рекомендуется (хотя и не обязательно) использовать "стандартный" набор шрифтов LH в стандартной для русского языка кодировке TeX -- T2A. Взять их (в виде архива lhfnt-3.20.tar.gz. Кто не знает, с этим UNIXовским форматом замечательно справляется StuffIt) можно в любом архиве TUG (TeX Users Group). Например, здесь. Или здесь.

Из тех же источников берется и Babel. Заметьте, что нет надобности скачивать входящие в его комплект файлы *.dtx для тех языков, которыми Вы не будете никогда пользоваться.

Для работы Babel'а требуются файлы правил переносов для использующихся языков. Сейчас существует несколько разных вариантов таких файлов для русского языка, мне, например, нравится ashyphen (ftp://manager.nmd.msu.ru/pub/TeX/hyphenation/) Андрея Слепухина (МГУ). Его версию 1.0b4 (11-Oct-97) можно скачать и здесь (20К).

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

К началу страницы

Установка

Итак, если все файлы подготовлены, можно приступать к разворачиванию системы.

Для начала создайте папку, назовите ее, например, OzTeX и разверните в нее все архивы: OzTeX, OzMF, папки TeX и MF, файл Local, а также, если нужно, OzMP, OzTtH и папку MP.

После этого собственно OzTeX к работе готов. Однако, может потребоваться некоторая дополнительная настройка, которая делается с помощью файла Local. Это -- обычный текстовый файл, позволяющий изменить параметры программ пакета по вашему усмотрению.

Вот, например, что содержит данный файл на моем домашнем компьютере:

text_editor = R*ch
% Я предпочитаю использовать для редактирования файлов BBEdit (R*ch -- его код creator'а), а не назначенный по умолчанию Alpha.
tfm_folders = $c :MyTeX:TFM:*
% Программы пакета будут искать файлы метрик шрифта, кроме стандартной папки, еще и в папках, находящихся внутри :MyTeX:TFM
load_config = ImageWriter
% При запуске программы автоматически перестраиваются на работу с 144dpi-принтером (по умолчанию был бы установлен режим LaserWriter -- 300dpi)
current_app = OzTeX
% Дальнейшие строки (до следующего current_app) относятся только к OzTeX
vf_folders = $c :MyTeX:VF:*
% Где еще искать виртуальные шрифты
input_folders = $c :MyTeX:cyrillic:*
% Где еще искать "исходные" файлы (у меня в этих папках находится Babel и "стили")
current_app = OzMF
% Дальше -- строки только для OzMF
input_folders = $c :MyTeX:MF:Inputs:*
% Где еще искать исходные файлы для генерации шрифтов

Обратите внимание, что все файлы, относящиеся к "руссификации" (кроме стандартного для LaTeX2e пакета cyrillic, уже имеющегося в поставке OzTeX), а также мои собственные "стилевые", размещаются в специально созданной папке MyTeX. Это упрощает процесс создания их резервной копии, а также, если возникнет необходимость, обновления версии программ.

Хотя здесь и описан процесс установки OzTeX, все же настоятельно рекомендую прочитать файл ReadMe. Хотя бы ради рекомендаций "что можно стереть" ;-) .

Кроме того, не поленитесь запустить на обработку, просмотреть (и, по возможности, распечатать) руководство пользователя (TeX:Docs:LaTeX:ozuser.tex).

После того, как Вы убедились в работоспособности программы, приступим к наиболее долгому и наименее автоматизированному этапу нашей работы -- подготовке кириллических шрифтов.

  1. Разворачиваем архив lhfnt.
  2. Находим в полученной папке папку mf и просто переносим ее туда, где ее сможет просматривать OzMF (в моем случае -- внутрь папки :MyTeX:MF:Inputs). Желательно переименовать ее, чтобы было понятно, файлы каких именно шрифтов там находятся.
  3. Находим папку vf и находящуюся в ней папку переносим внутрь :MyTeX:VF (если, конечно, Вы собираетесь использовать кодировку LCY при работе в PlainTeX).
  4. А теперь -- ВНИМАНИЕ! Находим папку TeX, а в ней -- файл 12ex-la.tex (число в начале имени может быть и другим). Открываем этот файл текстовым редактором и делаем следующие изменения:
  5. Находим строки

    % User temporary TeX output directory; default: current
    \def\wrkdir{/wrk}


    И заменяем UNIXовскую запись имени директории {/wrk} на макинтошевскую {:wrk:} (двоеточия и перед, и после имени!).
  6. После строки

    % Create font file headers? default: No \MakeFileHeadsfalse

    вставляем

    \MakeFileHeadstrue
  7. Сохраняем сделанные изменения. Осталось запустить полученный файл в OzTeX (не переносите никакие файлы из папки TeX!). После сравнительно непродолжительной работы в папке wrk внутри TeX будет получено множество файлов. Вот эту папку теперь нужно перенести опять туда, где она будет доступна OzMF (:MyTeX:MF:Inputs). Естественно, желательно и ее переименовать, например, в LH-T2A.

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

MakeTeXPK name 303 101 3.0 nullmode

Например,

MakeTeXPK larm1000 303 101 3.0 nullmode

Полученный файл сохраняем в "свежесозданную" папку (кроме него в ней ничего не должно быть). Теперь -- "бросаем" его на OzMF и... идем обедать. Когда Вы на следующее утро ;) подойдете к компьютеру, папка будет заполнена *.tfm-файлами. Назовем ее (если не сделали этого раньше) LH-T2A и поместим в :MyTeX:TFM.

Вообще говоря, многие из этих шрифтов Вам, вероятно, никогда и не понадобятся. Поэтому можно съэкономить время и место на диске, сгенерировав метрики только для необходимых. Полный набор кеглей (а именно кегель в сотых долях пункта указан в имени шрифтового файла) нужен, скорее всего, только для светлого прямого (larm) и полужирного прямого (labx), все "мелкие" кегли (7-12pt) -- для курсива (lati), машинописного (latt), прямого и наклонного сансерифа (lass, lasi). Для всех остальных шрифтов, в большинстве случаев, можно обойтись "базовым" кеглем (по умолчанию -- 10pt).

Можно выкинуть и лишние *.mf-файлы, благо, в "свежих" версиях LH-шрифтов "именные" файлы только именем и отличаются. Если вдруг потребуется один из потертых шрифтов, достаточно будет сдублировать файл с именем любого другого шрифта, переименовать его, и сгенерировать вышеописанным способом файл метрик.

Неполный, но достаточный на первое время набор уже сгенерированных шрифтов можете скачать здесь: MF-файлы (400К) и TFM-файлы (120К).

Теперь мы уже можем получить документ, содержащий некоторые вкрапления русского текста. Для этого нужно вставить в преамбулу документа вот такие строки (для случая, когда исходный текст набирается в кодировке Mac Cyrillic):

\usepackage[T2A]{fontenc}
\usepackage[maccyr]{inputenc}

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

  1. Создаем папку babel там, где ее сможет найти OzTeX (у меня -- в :MyTeX:cyrillic). Помещаем туда файлы: babel*.*, language.dat, english.dtx, russianb.dtx (если нужно, и файлы других языков), а также файл(ы) переносов для всех используемых языков.
  2. Откроем файл language.dat и впишем, какому языку какой файл переносов соответствует, например:
    =USenglish
    american hyphen.tex
    =UKenglish
    =british
    english hyphen.tex
    russian ashyphen.t2
    (Для британского и американского вариантов английского языка оставлен файл переносов PlainTeX'а, для русского -- назначен файл переносов ashyphen для кодировки T2A. Обратите внимание, что для его работы необходимо иметь и файл ashyphen.tex)
  3. Обрабатываем файл babel.ins OzTeX'ом (в режиме Plain!). Если Вы устанавливаете поддержку не всех возможных языков (а это, видимо, именно так) OzTeX в определенный момент остановится с сообщением: "Не могу найти такой-то *.dtx-файл". Введите в ответ "r" (без кавычек) -- и дальше он уже не будет останавливаться. В результате в папке babel появятся файлы: babel.sty, babel.def, switch.def, hyphen.cfg, plain.def, а также пары файлов *.ldf и *.sty для каждого из установленных языков. Теперь *.ins и *.dtx-файлы можно удалить.
  4. Последним шагом будет генерация нового файла формата LaTeX. Найдите файл :TeX:inputs:LaTeX:hyphen.ltx. Заблокируйте его, приписав перед именем знак "%". В OzTeX выберите режим LaTeX. Выберите в меню TeX команду INITEX. После появления приглашения (**) введите LaTeX.ltx <return>. Сохраните создаваемый файл под именем LaTeX.fmt в папке :TeX:formats (заменив существующий).

Готово!

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

Теперь, указав в преамбуле документа примерно следующее:

\usepackage[maccyr]{inputenc}
\usepackage[english,russian]{babel}

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

Переключается язык командами:
\Russian
\English

Проверьте, правильно ли отрабатываются команды:

Если команды не отрабатываются, подмените файлы babel.def и rusianb.ldf на скорректированные.

Замечу, что некоторые особенности оформления русскоязычных текстов в стилевых файлах Babel'а не отражены, поэтому разработаны вспомогательные пакеты, выполняющие некоторую коррекцию дополнительно (или вместо него). Наиболее известны `russcorr' Сергея Львовского и разработанный на его основе `mykeruss' Михаила Колодина. Я использую файл (5K), полученный путем небольших изменений из `mykeruss'.

О том, как установить в LaTeX кириллические PostScript шрифты -- в следующей статье.

К началу страницы

Что можно почитать?

Примечания

  1. WYSIWYG = What You See Is What You Get -- "что видишь, то и получишь".
  2. Регистрационный взнос: $30 для индивидуальных пользователей, $300 -- для "групповых".

К началу страницы

Ведущий раздела: Михаил Евгеньевич Крекин
Если Вы хотите к нам присоединиться:
Hosted by uCoz