Руководство пользователя TEX Live
TEX Collection 2005

Редакторы: Себастьян Ратц & Карл Берри
http://tug.org/texlive/

Ноябрь 2005

Содержание

1 Введение
 1.1 Как пользоваться TEX Live
 1.2 Где можно получить поддержку
2 Структура TEX Live
 2.1 Дистрибутивы: live, inst, protext
 2.2 Корневые директории
 2.3 Описание деревьев texmf
 2.4 Расширения TEXа
 2.5 Другие интересные программы в дистрибутиве TEX Live
3 Установка в системах типа Unix
 3.1 Работа с TEX Live непосредственно с установочного диска (Unix)
 3.2 Установка TEX Live на диск
 3.3 Установка на диск индивидуальных пакетов
4 Действия после установки
 4.1 Программа texconfig
 4.2 Тестирование установки
5 Установка в системе Mac OS X
6 Установка в системе Windows
 6.1 Установка на диск TEX Live
 6.2 Дополнительные пакеты для Windows
7 Действия после установки и поддержка Windows
 7.1 Добавление и удаление пакетов
 7.2 Конфигурация и другие административные действия
 7.3 Удаление TEX Live
 7.4 Добавление ваших собственных пакетов к дистрибутиву
 7.5 Запуск tlmp.exe из командной строки
 7.6 Установка по сети
 7.7 Чем Windows отличаются от других систем?
 7.8 Индивидуальные настройки
 7.9 Тестирование
 7.10 Печать
 7.11 Советы пользователям Win32
 7.12 Что делать в случае проблем
8 Руководство пользователя Web2C
 8.1 Поиск файлов в Kpathsea
 8.2 Базы данных
 8.3 Опции запуска
9 Благодарности
10 История издания
 10.1 Прошлое
 10.2 Настоящее
 10.3 Будущее

Список таблиц

Поддерживаемые архитектуры.
Опции главного меню установки.

1 Введение

В этом документе описаны основные возможности программного продукта TEX Live — дистрибутивом TEXа и других программ для GNU/Линукса и других операционных систем типа Unix, Mac OS X, и (32-битовых) Windows. (Внимание: этот продукт не совместим со старыми Макинтошами или MS-DOS).

TEX Live включает откомпилированные программы TEX, LaTeX2e, Metafont, MetaPost, BibTeX и многие другие; обширную коллекцию макросов, шрифтов и документации; а также поддержку вёрстки на многих языках мира. Он является частью ещё б´ольшей коллекции TEX Collection (кратко описанной ниже в разделе 2, стр. 6), созданной объединёнными усилиями групп пользователей TEXa.

Более новые версии пакетов, включённых в дистрибутив, можно найти в архиве CTAN, http://www.ctan.org.

Краткий список основных изменений в этом издании TEX Live можно найти в разделе 10, стр. 69 конце документа.

1.1 Как пользоваться TEX Live

TEX Live можно использовать тремя способами:

  1. Можно работать с TEX Live прямо с live DVD (см. раздел 2.1, стр. 7). Естественно, при этом почти не тратится место на диске, и вы немедленно получаете доступ ко всему дистрибутиву TEX Live. Разумеется, система работает несколько медленнее, чем при работе с диска, но и эта скорость работы может оказаться вполне удовлетворительной.
  2. Вы можете установить TEX Live полностью или частично на ваш диск. Это самый распространённый способ использования TEX Live. Вам потребуется примерно 100 мегабайтов в минимальном варианте и 1.3 гигабайта и выше для полной системы.
  3. Вы можете установить определённый пакет или коллекцию пакетов в ваш собственный TEX: либо в установленную ранее систему TEX Live, либо в другую систему.

Всё это подробно описано в разделе руководства по установке, относящегося к вашей операционной системе. Вкратце:

1.2 Где можно получить поддержку

Сообщество пользователей TEXа активно и дружелюбно, и практически на каждый серьёзный вопрос найдётся ответ. Однако эта поддержка неформальна, выполняется добровольцами, и поэтому очень важно, чтобы вы сами попробовали найти ответ перед тем, как задавать вопрос. (Если вы предпочитаете коммерческую поддержку, возможно вам ст´оит вместо TEX Live купить одну из коммерческих версий TEXа, см. список по адресу http://tug.org/interest.html#vendors for a list).

Вот список источников поддержки, приблизительно в том порядке, в котором мы предлагаем к ним обращаться:

Страница для новичков
Если вы — новичок, то страница http://tug.org/begin.html может послужить для начала.
TEX FAQ
TEX FAQ (ЧаВо, часто задаваемые вопросы) — огромная коллекция ответов на всевозможные вопросы, от самых простых до самых сложных. Английская версия ЧаВо находится на TEX Live в разделе texmf-doc/doc/english/FAQ-en и доступна в Интернете по адресу http://www.tex.ac.uk/faq. Пожалуйста, попробуйте найти ответ на свой вопрос там перед тем, как задавать его в различных сообществах.
TEX Catalogue
Если вы ищете какой-либо пакет, шрифт, программу и т.п., то вам стоит заглянуть в TEX Catalogue. Это огромный каталог всего, что относится к TEXу. См. texmf-doc/doc/english/catalogue или http://www.ctan.org/tex-archive/help/Catalogue.
TEX во всемирной паутине
Вот страничка, на которой много ссылок по TEXу, включая многочисленные книги, руководства и статьи: http://tug.org/interest.html.
Архивы списков рассылки и групп
Два основный форума технической поддержки — группа news:comp.text.tex и список рассылки texhax@tug.org. В их архивах тысячи вопросов и ответов на все случаи жизни. См. http://groups.google.com/groups?group=comp.text.tex и http://tug.org/mail-archives/texhax. Поиск, например, в Гугле http://google.com тоже часто помогает найти ответ.
Публикация вопросов
Если вы не можете найти ответа на ваш вопрос, вы можете опубликовать вопрос в comp.text.tex при помощи Google или вашей любимой новостной программы, или послав письмо в texhax@tug.org. Но перед этим пожалуйста прочтите в ЧаВо совет о том, как правильно задавать вопросы в этих форумах: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=askquestion.
Поддержка TEX Live
Если вы хотите сообщить о баге или сообщить нам свои предложения и замечания о дистрибутиве TEX Live, его установке или документации, пишите на лист рассылки tex-live@tug.org. Однако если ваш вопрос касается конкретной программы, входящей в TEX Live, вам лучше задавать вопросы её автору или посылать их на соответствующий список рассылки.
Русскоязычные ресурсы
(добавлено переводчиком) Эхоконференция ru.tex доступна как в сети ФИДО, так и в Интернете (как news:fido7.ru.tex). Русские группы ФИДО можно найти на многих серверах, например demos.ddt.su. В FAQ этой группы (автор: Михаил Колодин) приводится много ссылок на русскоязычные ресурсы.

С другой стороны, вы сами тоже можете помочь тем, у кого есть вопросы. И comp.text.tex, и texhax, и fido7.ru.tex открыты для всех, поэтому вы тоже можете присоединиться, читать и помогать другим. Добро пожаловать в сообщество пользователей системы TEX!

2 Структура TEX Live

Этот раздел описывает структуру и содержание TEX Collection и его составной части TEX Live.

2.1 Дистрибутивы: live, inst, protext

Ограничения на объём CD-ROM заставили нас разделить TEX Live на несколько дистрибутивов:

live
полная система, которой можно пользоваться непосредственно с DVD или установить на диск; она чересчур велика для CD. В DVD также включена копия архива CTAN, дистрибутив protext для Windows, дистрибутив MacTEX для Mac OS X, —  все эти директории отдельны от TEX Live, а также некоторые другие пакеты в директории texmf-extra.

Лицензии на использование CTAN, protext, MacTEX и texmf-extra отличаются от лицензии на TEX Live, поэтому будьте внимательны при распространении или модификации программ, входящих в эти дистрибутивы.

inst(allable)
полная система на CD; чтобы она поместилась, мы сжали всё, что могли. Поэтому невозможно пользоваться TEXом непосредственно с этого CD; вам придётся установить его на диск вашего компьютера (отсюда название дистрибутива). Установка описана в следующих разделах.
protext
улучшенный вариант системы MiKTEX для Windows. ProTEXt включает в себя дополнительные программы и упрощённую установку. Он не зависит от TEX Live и включает собственные инструкции по установке. Его можно запускать с CD/DVD или установить на ваш диск. Страница ProTEXt находится вот тут: http://tug.org/protext.

ProTEXt находится и на live DVD, и на отдельном CD (для тех, кто не может пользоваться DVD).

Вы можете определить, какой дистрибутив перед вами, посмотрев на файл 00type.TL в корневой директории. В этом файле находится также дата выпуска TEX Live.

Естественно, каждая группа пользователей TEXа сама выбирает, что ей распространять (члены TUG получат все три диска).

2.2 Корневые директории

Вот краткое описание корневых директорий в дистрибутиве TEX Live. На live DVD вся иерархия TEX Live помещена в поддиректорию texlive2005, а не в корень диска.

bin

Программы системы TEX, сгруппированные по платформам

source

Исходный код всех программ, включая дистрибутивы Web2C TEX и Metafont. Они хранятся в сжатом архиве (tar-bzip2).

support

Разные вспомогательные пакеты и программы. Они не устанавливаются по умолчанию. Сюда относятся разнообразные редакторы и оболочки для TEXа.

texmf

Дерево для программ, их вспомогательных файлов и документации. Не включает форматов и пакетов TEXа

texmf-dist

Основное дерево форматов и пакетов.

texmf-doc

Дерево самостоятельной документации, не относящейся к отдельным пакетам и программам, сгруппированное по языкам.

texmf-var

Дерево автоматически создаваемых файлов (TEXMFDIST в следующем разделе).

xemtex

Дерево вспомогательных программы для Windows. Эти программы обычно уже есть на системах типа Unix, или, по крайней мере, их там легко скомпилировать.

Кроме этих директорий, в корневой директории находятся скрипты установки и файлы README (на разных языках).

Новая директория texmf-doc содержит только документацию, но она не содержит всю документацию. Документация к программам (руководства, man, info) находится в директории texmf/doc, поскольку программы находятся в директории texmf. Аналогично документация для макропакетов и форматов находится в директории texmf-dist/doc. Для поиска документации можно воспользоваться программами texdoc или texdoctk. Можно также воспользоваться ссылками в файле doc.html.

2.3 Описание деревьев texmf

В этом разделе описаны все переменные, задающие положение деревьев texmf и их значения по умолчанию. Команда texconfig conf показывает текущие значения этих переменных, так что вы можете легко проверить, где эти директории находятся в вашей системе.

TEXMFMAIN
Дерево, где находятся основные части системы, такие, как вспомогательные скрипты (например, web2c/mktexdir), файлы со значениями текстовых констант и другие.
TEXMFDIST
Дерево с основным набором макропакетов, шрифтов и т.д. в первоначальной конфигурации.
TEXMFLOCAL
Дерево, которое может быть использовано администраторами системы для дополнительных или более новых пакетов, шрифтов и т.д.
TEXMFHOME
Дерево, которое пользователи могут использовать для установки собственных дополнительных или более новых пакетов, шрифтов и т.д. Эта переменная зависит по умолчанию от переменной $HOME, своей для каждого пользователя.
TEXMFCONFIG
Это дерево используется утилитами texconfig, updmap и fmtutil программы teTEX для хранения модифицированных файлов конфигурации. По умолчанию находится в директории $HOME.
TEXMFSYSCONFIG
Это дерево используется утилитами texconfig-sys, updmap-sys и fmtutil-sys программы teTEX для хранения модифицированных файлов конфигурации, общих для всех пользователей.
TEXMFVAR
Это дерево используется утилитами texconfig, updmap и fmtutil программы teTEX для хранения создаваемых автоматически файлов: форматов, карт шрифтов. По умолчанию находится в директории $HOME.
TEXMFSYSVAR
Это дерево используется утилитами texconfig-sys, updmap-sys и fmtutil-sys программы teTEX для хранения создаваемых автоматически файлов: форматов, карт шрифтов, —  общих для всех пользователей.

Более полное обсуждение утилиты texconfig и родственных ей программ находится в разделе 4.1, стр. 28.

2.4 Расширения TEXа

В состав TEX Live входит несколько расширений TEXа:

e-TEX
добавляет небольшой, но очень полезный набор новых примитивов (относящийся к макроподстановкам, чтению символов, дополнительным возможностям отладки и многому другому) и расширения TEX--XE T для вёрстки справа налево и слева направо. В обычном режиме e-TEX на 100% совместим со стандартнымTEXом. См. texmf-dist/doc/etex/base/etex_man.pdf.
pdfTEX
создаёт и файлы в формате Acrobat PDF, и стандартные DVI. У пакета hyperref для LATEXа есть опция «pdftex», которая использует все возможности этой программы. См. texmf/doc/pdftex/manual/ и texmf/doc/pdftex/manual/samplepdf/samplepdf.tex.
pdfeTEX
объединяет pdfTEX и e-TEX. Это программа по умолчанию используется для генерирования всех форматов, кроме plain TEX. См. документацию выше.
Omega (Омега)
основана на Unicode (система 16-битовых символов), что позволяет работать одновременно почти со всеми письменностями мира. Она также поддерживает так называемый «процесс трансляции Omega» (OTPs) для сложных преобразований произвольного входного потока. См. texmf-dist/doc/omega/base/doc-1.8.tex (текст несколько устарел).
Aleph
объединяет Omega и e-TEX. См. краткую документацию в texmf-dist/doc/aleph/base.

2.5 Другие интересные программы в дистрибутиве TEX Live

Вот несколько других часто используемых программ в дистрибутиве TEX Live:

bibtex
поддержка библиографий.
makeindex
поддержка алфавитных указателей.
dvips
преобразование DVI в PostScript.
xdvi
программа для просмотра DVI для X Window System.
dvilj
драйвер для лазерных принтеров семейства HP LaserJet.
dv2dt, dt2dv
преобразование DVI в текст и обратно.
dviconcat, dviselect
перестановка страниц в файлах DVI.
dvipdfm
преобразование DVI в PDF, альтернатива pdfTEXу, упомянутому выше. Пакеты ps4pdf и pdftricks предлагают дополнительные возможности.
psselect, psnup, . . .
утилиты для формата PostScript.
lacheck
проверка синтаксиса LATEXа.
texexec
процессор для ConTEXtа и PDF.
tex4ht
конвертер из TEXа в HTML.

3 Установка в системах типа Unix

Как объясняется в разделе 1.1, стр.  4, TEX Live можно использовать тремя способами:

  1. Выполнять непосредственно с дистрибутивного диска.
  2. Установить на диск вашего компьютера.
  3. Интегрировать отдельный пакет или коллекцию в существующий TEX.

В следующих разделах подробно описывается каждый из этих способов для систем типа Unix.


Внимание: CD и DVD TEX Collection изготовлены в формате ISO 9660 (High Sierra), включая расширения Rock Ridge (и Joliet для Windows). Поэтому для того, чтобы использовать TEX Collection, ваша система должна поддерживать расширения Rock Ridge. Пожалуйста, посмотрите документацию к команде mount для вашей системы и выясните, как это делается. Если у вас несколько машин в локальной сети, возможно, вам будет проще смонтировать CD на машине, которая поддерживает Rock Ridge, и использовать её с остальных.

Современные системы должны быть способны читать CD без проблем. Если у вас возникли трудности, сообщите нам. Дальнейший текст предполагает, что вам удалось смонтировать CD с полной совместимостью с Rock Ridge.


3.1 Работа с TEX Live непосредственно с установочного диска (Unix)

Вы можете использовать TEX непосредственно с live DVD, не устанавливая его на ваш компьютер. (Собственно, отсюда название «TEX Live ».) Однако невозможно запустить TEX с других дисков коллекции (см. раздел 2.1, стр.  7). Сначала нам надо смонтировать CD или DVD с расширениями Rock Ridge. Как именно это делается, зависит от вашей системы; команды ниже работают для Линукса, хотя название устройства (/dev/cdrom) может быть другим. (Все наши примеры используют > в качестве системного приглашения; команды, набираемые пользователем, подчёркнуты.):

> mount -t iso9660 /dev/cdrom /mnt/cdrom

Теперь нужно перейти в смонтированную директорию:

> cd /mnt/cdrom

В Mac OS X нужная директория обычно находится в директории /Volumes, и диск монтируется автоматически. Выполните скрипт установки install-tl.sh:

> sh install-tl.sh Welcome to TeX Live...

После разнообразных стартовых сообщений и списка опций главного меню, установочный скрипт попросит вас ввести команду. Сделайте это, напечатав нужную букву и нажав RETURN; не печатайте угловых скобок. Можно печатать заглавную или строчную букву; в примерах ниже приводятся строчные буквы.

Чтобы работать прямо с дистрибутива, первой командой должна быть d, а затем подкоманда 1, чтобы установить директории. Даже в этом случае мы должны выбрать директорию на локальном диске, чтобы класть туда файлы, которые TEX генерирует сам, например, шрифты и форматы, а также изменённые конфигурационные файлы, если в них появится необходимость.

В этом примере мы будем использовать /opt/texlive2005. Полезно использовать номер года в названии директории, поскольку файлы, созданные разными версиями TEX Live, не всегда совместимы. (Если значение по умолчанию /usr/local/texlive/2005 вам подходит, вы можете пропустить этот шаг.)

Enter command: d
Current directories setup:
<1>  TEXDIR:     /usr/local/texlive/2005
...
Enter command: 1
New value for TEXDIR [/usr/local/texlive/2005]: /opt/texlive2005
...
Enter command: r

Мы снова в главном меню. Следующая и последняя команда будет r, чтобы сконфигурировать систему для работы с дистрибутива, не устанавливая файлов на диск:

Enter command: r
Preparing destination directories...
...
Welcome to the TeX Live system!
>

И, как показано выше, мы опять в системном шелле.

Теперь мы должны изменить две переменные окружения: PATH, в соответствии с вашей архитектурой, (так что вы сможете запускать программы), и TEXMFSYSVAR, в соответствии с указанным выше значением. См. список названий архитектуры для различных систем в таблице 1.

После завершения основной установки и установления переменных окружения, следует запустить texconfig или texconfig-sys, чтобы подогнать вашу систему под ваши нужды. Это объясняется в разделе 4.1 на стр. 28.


Таблица 1: Поддерживаемые архитектуры.
alpha-linux HP Alpha GNU/Linux
i386-darwin Intel x86 Mac OS X
i386-freebsd Intel x86 FreeBSD
i386-linux Intel x86 GNU/Linux
mips-irix SGI IRIX
powerpc-aix IBM RS/6000 AIX
powerpc-darwin PowerPC Mac OS X
sparc-linux Sun Sparc GNU/Linux
sparc-solaris Sun Sparc Solaris
win32 Windows (32-bit)
x86_64-linux Intel x86 64-bit GNU/Linux



Синтаксис задания переменных окружения, и файл, куда класть соответствующие команды, зависит от вашего шелла. Если вы используете шелл типа Bourne (sh, bash, ksh, и т.п.), добавьте к вашему $HOME/.profile следующее:

PATH=/mnt/cdrom/bin/archname:$PATH; export PATH
TEXMFSYSVAR=/opt/texlive2005/texmf-var; export VARTEXMF

Для шеллов типа C shell (csh, tcsh), добавьте к вашему $HOME/.cshrc следующее:

setenv PATH /mnt/cdrom/bin/archname:$PATH
setenv TEXMFSYSVAR /opt/texlive2005/texmf-var

Теперь выйдите из системы, войдите в неё опять и проверьте установку (см. раздел 4.2, стр. 28).

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

3.2 Установка TEX Live на диск

Вполне возможно (собственно, как правило, именно это и делается) установить систему TEX Live на диск. Это можно сделать с диска live или inst (См. описание дистрибутивов в разделе 2.1, стр. 7).

Сначала нам надо смонтировать CD или DVD с расширениями Rock Ridge. Как именно это делается, зависит от вашей системы; команды ниже работают для Линукса, хотя название устройства (/dev/cdrom) может быть другим. (Все наши примеры используют > в качестве системного приглашения; команды, набираемые пользователем, подчёркнуты.):

> mount -t iso9660 /dev/cdrom /mnt/cdrom

Теперь нужно перейти в смонтированную директорию:

> cd /mnt/cdrom

В Mac OS X нужная директория обычно находится в директории /Volumes, и диск монтируется автоматически. Выполните скрипт установки install-tl.sh:

> sh install-tl.sh Welcome to TeX Live...

После разнообразных стартовых сообщений и списка опций главного меню, установочный скрипт попросит вас ввести команду. Сделайте это, напечатав нужную букву и нажав RETURN; не печатайте угловых скобок. Можно печатать заглавную или строчную букву; в примерах ниже приводятся строчные буквы.

Список пунктов в главном меню указан в таблице 2. Порядок, в котором вы выбираете пункты, обычно неважен, кроме того, что пункт i должен быть последним. Удобно всё же выбирать их в порядке, указанном ниже.


Таблица 2: Опции главного меню установки.
p Платформа, на которую производится установка.
b Архитектура, для которой устанавливаются программы.
s Основная схема установки (минимальная, рекомендованная, полная и т.д.).
c Изменить схему установки для индивидуальных коллекций.
l Изменить схему установки для языковых коллекций.
d Директории для установки.
o Другие опции.
i Выполнить установку.

Вот подробное объяснение по каждой опции.

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

b  Архитектура, для которой устанавливаются программы. По умолчанию устанавливаются только программы для вашей текущей платформы. В этом меню вы можете задать установку программ и для других архитектур (или не установить их для текущей архитектуры). Это часто полезно, если вы используете одно и то же дерево TEXа в сети разных машин. Список поддерживаемых архитектур приведен в таблице 1, стр.  17.

s  Основная схема установки. В этом меню вы можете выбрать основную схему установки пакетов. По умолчанию используется полная схема (full), которая устанавливает всё, но вы можете выбрать минимальную схему (basic), чтобы сэкономить место на диске, или промежуточную схему (medium). Есть также специальные схемы для пользователей Omega и XML.

c  Индивидуальные коллекции. Это меню позволяет вам изменить сделанный основной схемой выбор для отдельных коллекций. Коллекции представляют собой следующий после схем уровень иерархии TEX Live. Каждая коллекция — макросы TEXа, семейства шрифтов Metafont и т,д, — состоит из нескольких пакетов. В этом меню заглавные и строчные буквы различаются.

l  Языковые коллекции. Смысл этого меню очень похож на c, оно позволяет сделать выбор, устанавливать ли отдельные компоненты дистрибутива. В данном случае коллекции соответствуют различным языкам. В этом меню заглавные и строчные буквы различаются. Вот список языковых коллекций TEX Live:

Арабский язык Армянский язык

Африканские языки (частично) Британский английский

Венгерский язык Вьетнамский язык

Голландский язык Греческий язык

Датский язык Иврит

Индийские языки Испанский язык

Итальянский язык Кириллические языки

Китайский, японский, корейский языки Латынь

Маньчжурские языки Монгольский язык

Немецкий язык Норвежский язык

Польский язык Португальский язык

Тибетский язык Финский язык

Французский язык Хорватский язык

Чешский и словацкий языки Шведский язык

Языковые коллекции обычно включают шрифты, макросы, таблицы переноса и т.д. (Например, если вы выбираете коллекцию French, устанавливается frenchle.sty.) Кроме того, установка языковой коллекции приводит к изменению конфигурационного файла language.dat, который управляет загрузкой таблиц переноса.

d  Директории для установки. Здесь можно определить три директории:

TEXDIR
Корневая директория, где устанавливается по умолчанию всё остальное. По умолчанию это /usr/local/texlive/2005, но это часто бывает нужным изменить. Мы рекомендуем включать номер года в название директории, чтобы можно было держать отдельно разные версии TEX Live. После тестирования новой версии вы сможете сделать /usr/local/texlive ссылкой на соответствующую директорию.

Под Mac OS X, распространённые оболочки ищут TEX в /usr/local/teTeX, поэтому вам может показаться удобнее установить TEX Live тут.

TEXMFLOCAL
Это дерево директорий, куда системные скрипты устанавливают файлы TEXа, не относящиеся к определённой версии, главным образом, шрифты. По умолчанию это /usr/local/texlive/texmf-local и не зависит от текущей версии TEX Live, потому что сюда рекомендуется помещать локальные пакеты или конфигурационные файлы.
TEXMFSYSVAR
Это дерево директорий, куда скрипт texconfig-sys устанавливает файлы, зависящие от конкретной версии. По умолчанию это TEXDIR/texmf-var, и обычно это значение менять не ст´оит. Есть также TEXMFSYSCONFIG, где texconfig ищет изменённые файлы конфигурации. См. более полное описание в разделе 4.1, стр. 28

o  Другие опции. В этом меню вы можете выбрать следующие опции, которые влияют на процесс установки:

a
Указать альтернативную директорию для генерированных шрифтов. По умолчанию шрифты кладутся в VARTEXMF, как объясняется выше. Альтернативная директория нужна, например, если вы хотите смонтировать основное дерево только для чтения, и потому вам нужна другая директория (возможно, своя на каждой из машин в локальной сети) для динамически создаваемых шрифтов.
l
Создать символические ссылки для программ, документации в формате man и/или GNU Info. Например, вы можете захотеть создать ссылки на файлы man под /usr/local/man, и на файлы Info под /usr/local/info. (Разумеется, вам нужны права на запись в соответствующие директории.)

Мы не рекомендуем использовать эту опцию для установки TEX Live поверх версии системы TEX в вашем дистрибутиве. Она предназначена для того, чтобы сделать ссылки в стандартных директориях вроде /usr/local/bin, если в них нет файлов TEXа.

d
Не производить установку документации. Это полезно, если вы хотите сэкономить место на диске, или если вы уже установили документацию в другом месте.
s
Не производить установку основного дерева шрифтов и макросов. Это нужно, если вы хотите сделать одно общее дерево для разных машин и/или платформ, экспортируя его, например, при помощи NFS.

i —  Выполнить установку. Когда вы зададите нужные конфигурационные опции, введите i чтобы начать установку в выбранные директории.

Последний шаг — включить зависящую от архитектуры поддиректорию TEXDIR/bin в переменную PATH, так что ваши новые программы будут найдены. Названия архитектур приведены в таблице 1, стр.  17. При необходимости вы можете просто указать директорию TEXDIR/bin.

Синтаксис соответствующих команд и стартовые файлы для этого зависят от вашего шелла. Если вы используете шелл типа Bourne (sh, bash, ksh и т.п.), добавьте к вашему $HOME/.profile следующее:

PATH=/usr/local/texlive2005/bin/archname:$PATH; export PATH

Для шеллов типа C shell (csh, tcsh), добавьте к вашему $HOME/.cshrc следующее:

setenv PATH /usr/local/texlive2005/bin/archname:$PATH

После завершения основной установки и установления переменных окружения, следует запустить texconfig или texconfig-sys, чтобы подогнать вашу систему под ваши нужды. Это объясняется в разделе 4.1 на стр. 28.

Ниже приводится краткий комментированный пример полной установки, с программами только для текущей системы и с рекомендованной выше структурой директорий. Таким образом, нужна только одна команда, i для установки системы. Знаком >, как обычно, обозначается системный промпт.

> sh install-tl.sh
i                         # выполнить установку
> texconfig ...           # См. раздел 4.1
# Новый элемент в переменной $PATH, для Линукса
> PATH=/usr/local/texlive2005/bin/i386-linux:$PATH; export PATH

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

3.3 Установка на диск индивидуальных пакетов

Вы можете добавить индивидуальные пакеты или коллекции из дистрибутива в систему, отличную от TEX Live или в предыдущую версию TEX Live.

Сначала нам надо смонтировать CD или DVD с расширениями Rock Ridge. Как именно это делается, зависит от вашей системы; команды ниже работают для Линукса, хотя название устройства (/dev/cdrom) может быть другим. (Все наши примеры используют > в качестве системного приглашения; команды, набираемые пользователем, подчёркнуты.):

> mount -t iso9660 /dev/cdrom /mnt/cdrom

Теперь нужно перейти в смонтированную директорию:

> cd /mnt/cdrom

В Mac OS X нужная директория обычно находится в директории /Volumes, и диск монтируется автоматически.

Запустите установочный скрипт install-pkg.sh (не install-tl.sh — этот скрипт только для полной установки):

> sh install-pkg.sh options

Первый набор опций выглядит следующим образом:

--package=pkgname
Индивидуальный пакет для установки.
--collection=colname
Коллекция пакетов для установки.
--nodoc
Не устанавливать документацию.
--nosrc
Не устанавливать исходники.
--cddir=dir
Директория, где находится дистрибутив; по умолчанию – текущая директория. Если вы выполнили инструкции выше, то это и будет нужная директория, и менять её не надо.
--listdir=dir
Директория со списками, в которых находится информация о пакетах. По умолчанию это cddir; единственная причина, по которой имеет смысл изменить это значение — если вы сами конструируете новую версию TEX Live.

То, что произойдёт дальше, зависит от следующих опций. Если вы не выберете ни одной из них, по умолчанию произойдёт установка выбранных файлов. Директория, куда следует устанавливать файлы, будет определена из вашего текущего $TEXMFMAIN командой kpsewhich. Вы можете изменить это значение при помощи переменной TEXMFMAIN или TEXMF.

--listonly
Вывести список файлов, которые должны быть установлены, но ничего не устанавливать.
--archive=tarle
Вместо установки файлов в текущий TEX, создать архив tar.

Дополнительные опции:

--config
После установки запустить texconfig init.
--nohash
Не запускать после установки mktexlsr для обновления базы данных о файлах.
--verbose
Выводить дополнительную информацию по мере работы скрипта.

Вот несколько примеров использования:

  1. Посмотреть список файлов в пакете fancyhdr, не устанавливая его:

    > sh install-pkg.sh --package=fancyhdr --listonly

    texmf/doc/latex/fancyhdr/README
    texmf/doc/latex/fancyhdr/fancyhdr.pdf
    ...
  2. Установить пакет natbib:

    > sh install-pkg.sh --package=natbib
  3. Установить пакет alg без исходников и документации:

    > sh install-pkg.sh --package=alg --nosrc --nodoc
  4. Установить все пакеты из коллекции дополнительных макросов для plain TEX:

    > sh install-pkg.sh --collection=tex-plainextra
  5. Записать все файлы из пакета pstricks в архив tar в директории /tmp:

    > sh install-pkg.sh --package=pstricks --archive=/tmp/pstricks.tar

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

4 Действия после установки

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

Ещё одно действие после установки TEX Live — установить дополнительные пакеты, шрифты или программы, не включённые в TEX Live. Идея состоит в том, чтобы установить эти дополнения под TEXMFLOCAL (если вы устанавливаете программы на диск) или под TEXMFSYSVAR (если вы работаете непосредственно с дистрибутива). См. «Директории для установки» на стр. 22.

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

4.1 Программа texconfig

В любой момент после установки вы можете использовать программу texconfig чтобы переконфигурировать систему. Она устанавливается в директории TEXDIR/bin/arch (зависящей от архитектуры) вместе с остальными программами.

Если вызвать её без аргументов, она перейдёт в полноэкранный режим, который позволяет конфигурировать систему интерактивно.

Эту программу можно вызывать также с разнообразными опциями. Ниже приводятся примеры наиболее часто используемых (система TEX Live по умолчанию настроена на бумагу формата A4):

texconfig paper letter
установить размер бумаги по умолчанию для команды всех программ и драйверов (pdftex, dvips, dvipdfm, xdvi). Другим вариантом является a4 (используется по умолчанию).
texconfig rehash
Обновить все базы данных файлов системы TEX.
texconfig faq
Показать ЧаВо teTEX. (См. также основной файл ЧаВо TEX в texmf-doc/doc/english/FAQ-en).
texconfig help
Напечатать информацию об использовании texconfig.

Разумеется, texconfig может изменить только некоторые из многих опций и конфигурационных параметров системы TEX. Основной конфигурационный файл для программ, основанных на Web2C называется texmf.cnf. Вы можете определить, где он находится, при помощи команды ‘kpsewhich texmf.cnf’; в этом файле много комментариев, объясняющих конфигурационные параметры и их возможные значения.

По состоянию на 2005 год, команда texconfig изменяет только личные файлы данного пользователя в директории $HOME/.texlive2005. Если вы устанавливаете TEX только для себя, этот факт вам будет безразличен. Но если вы устанавливаете TEX для многопользовательской системы, вам может понадобиться изменить конфигурационные файлы для всех пользователей. В этом случае вместо команды texconfig вам нужна команда texconfig-sys.

Аналогично, команды updmap и fmtutil теперь изменяют файлы в $HOME/.texlive2005. Для изменений системных конфигурационных файлов используйте updmap-sys и fmtutil-sys.

В особенности важно для многопользовательской системы создать заранее стандартные форматы при помощи fmtutil-sys --missing. Иначе у каждого пользователя будет своя копия этих форматов.

Кроме того, если у вас есть модифицированные копии файлов fmtutil.cnf или updmap.cfg, их следует поместить в директорию TEXMFSYSCONFIG.

Переменные, в которых хранятся названия этих директорий, указаны в разделеn 2.3, стр. 8. Вы можете посмотреть значения этих переменных при помощи команды texconfig conf и изменить их путём редактирования файла texmf.cnf.

4.2 Тестирование установки

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

В этом разделе описываются основные процедуры по тестированию системы. Мы приводим команды для операционных систем типа Unix; под Mac OS X и Windows вы, скорее всего, будете запускать тесты из GUI, но принцип тот же.

  1. Сначала проверьте, что вы можете запускать программу tex:

    > tex --version
    TeX 3.141592 (Web2C 7.5.5)
    kpathsea version 3.5.5
    ...
    Если вы получаете в ответ «command not found» вместо номера версии и информации о копирайте, у вас, скорее всего, нет директории с нужными программами в переменной PATH. См. обсуждение на странице 18.
  2. Скомпилируйте простой LATEXовский файл:

    > latex sample2e.tex
    This is pdfeTeXk, Version 3.141592...
    ...
    Output written on sample2e.dvi (3 pages, 7496 bytes).
    Transcript written on sample2e.log.
    Если программа не может найти sample2e.tex или другие файлы, возможно, у вас остались следы от старой установки: переменные окружения или конфигурационные файлы. Для отладки вы всегда можете попросить TEX точно сказать, что именно он ищет; см. «Отладка» на стр. 63.
  3. Посмотрите результат на экране:

    > xdvi sample2e.dvi
    (Под Windows аналогичная команда называется windvi.) Вы должны увидеть новое окно с красиво свёрстанным документом, объясняющим основы LATEXа. (Если вы — новичок, вам ст´оит его прочесть.) Чтобы программа xdvi могла запуститься, вы должны быть в среде X Window; если это не так, или если переменная DISPLAY установлена неправильно, вы увидите ошибку ‘Can’t open display’.
  4. Создайте файл в формате PostScript для печати или просмотра на экране:

    > dvips sample2e.dvi -o sample2e.ps
  5. Создайте файл в формате PDF вместо DVI; команда ниже компилирует файл .tex и создаёт PDF:

    > pdflatex sample2e.tex
  6. Посмотрите результат на экране:

    > gv sample2e.pdf
    или:
    > xpdf sample2e.pdf
    К сожалению, ни gv, ни xpdf не включены в текущую версию TEX Live, так что вам придётся останавливать их отдельно. См. соответственно http://www.gnu.org/software/gv и http://www.foolabs.com/xpdf.
  7. Другие стандартные тестовые файлы, которые вам могут пригодиться:

    small2e.tex
    Более простой документ, чем sample2e, удобный, если последний слишком велик для вас.
    testpage.tex
    Проверяет поля и смещение бумаги для вашего принтера.
    nfssfont.tex
    Используется для печати таблиц шрифтов и тестов.
    testfont.tex
    Печать таблиц шрифтов под plain TEX.
    story.tex
    Самый канонический файл в формате (plain) TEX. Вы должны напечатать ‘\bye’ в ответ на приглашение * после ‘tex story.tex’.

    Вы можете компилировать эти файлы точно так же, как мы компилировали выше sample2e.tex, заменив ‘latex’ на ‘tex’ для plain TEX.

Если вы новичок в TEXе, или вам нужна помощь в создании документов на языке TEX или LATEX, посетите http://tug.org/begin.html.

5 Установка в системе Mac OS X

Рекомендуемый способ установить TEX для Mac OS X —  использовать дистрибутив MacTEX, который впервые включён в TEX Live в 2005 году. Он находится на DVD live в директории mactex/. В этой директории содержится инсталлятор для полоного дистрибутива TEXа, основанный на комбинации teTEXа и TEX Live, а также много других программ и документации. Страница проекта находится тут: http://tug.org/mactex.

Если вы предпочитаете, можно установить TEX для Mac OS X и непосредственно из TEX Live при помощи скриптов install*, как описано ниже.

Для того, чтобы запустить установочные скрипты под Mac OS X, вам понадобится оболочка bash. Если вы работаете под Mac OS X 10.2 или старше, у вас уже установлена bash. Если же вы работаете под более ранней версией Mac OS X, то вашей оболочкой по умолчанию является zsh, которая не подойдёт для установки Mac OS X. Вам понадобится установить bash из Интернета или, скорее всего, обновить систему.

Если у вас установлена bash, вы можете следовать инструкциям для установки в системе Unix installation в предыдущем разделе. См. раздел 3, стр.  10; в нём упомянуты особенности Mac OS X.

6 Установка в системе Windows

Мы рады сообщить, что в этой версии TEX Live снова есть инсталлятор для Windows, tlpmgui.exe (см. раздел 2.1, стр. 7, где описаны различные варианты дистрибутива).

У программы tlpmgui такие же опции, как у инсталлятора для Юникса, только они выбираются в графической оболочке. Эта программа также позволяет выбрать схемы, индивидуальные коллекции, директории для установки и т.д. Эти основные элементы описаны в разделе 3.2 на стр. 18. Программа также позволяет выполнять многие действия после установки: добавление и удаление пакетов, обновление базы данных файлов, создание форматов.

Для тех, кто любит знать детали, отметим, что программа tlpmgui использует в качестве «мотора» программу для командной строки Windows под названием tlpm.

Дистрибутив для Windows, включенный в TEX Live, основан на новых программах, позаимствованных у проекта XEmTEX, который раньше назывался fpTEX (см. http://www.metz.supelec.fr/~popineau/xemtex-1.html). В нём также есть более старые (но всё ещё работающие программы), такие как просмотрщик файлов dvi Windvi, интерфейс которого похож на интерфейс распространённой программы для Юникса xdvi. Документацию для этой программы можно найти в texmf/doc/html/windvi/windvi.html.

Дистрибутив TEX Live может быть установлен под операционной системой Windows 98, ME, NT, 2K или XP. Более старые версии Windows (3.1x) и MS-DOS не поддерживаются.

Внимание: Пользователи Win9.x должны проверить, что у них есть достаточно места для переменных окружения перед установкой. Программа tlpmgui.exe не добавляет места к переменным окружения. В процессе установке создаются несколько переменных окружения, и возможно, что для них не хватит места. Чтобы добавить его, напишите в файл config.sys строчку SHELL=<path>COMMAND.COM /E:4096 /P

6.1 Установка на диск TEX Live

После вставки CD с TEX Live в компьютер, автостарт должен запустить программу tlpmgui. Если он этого не сделал, щёлкните на StartRun, а затем напечатайте <drive>:\setup-win32\tplmgui.exe (или <drive>:\texlive\setup-win32\tplmgui.exe, если вы устанавливаете с DVD), где <drive> —  диск CD или DVD, и нажмите «OK».

Должно появиться окно установки под названием TeX Live installation and maintenance utility. В нём содержатся следующие разделы: Main customization, Install, Select a scheme, Select systems, Directories и Options.

В разделе Directories вслед за иконкой CD/DVD должна быть указана директория (например, F:/ или F:/texlive/), но если её там нет, щёлкните на иконку CD/DVD и выберите CD/DVD с TEX Live или TEX Collection.

Директорию, куда будет устанавливаться программа, можно указать, нажав на иконку TLroot. Эта директория будет храниться в переменной TLroot. Переменные TEXMFTEMP и TEXMFCNF, указанные на соседних иконках TEXMFTEMP и TEXMFCNF будут автоматически изменены, но их можно также изменить вручную, если это почему-либо необходимо.

В секции Select a scheme нужно выбрать нужную схему установки из списка (например, scheme-gust). Каждая схема сопровождается кнопкой Info, при нажатии на которую появляется краткое описание схемы.

Схема —  это большой набор файлов, предназначенный для определённого типа пользователя. Есть общие схемы для минимальной, средней и полной установки. Остальные схемы предназначены либо для определённых групп пользователей TEXа (например, для членов GUST или GUTeneberg) или для определённых приложений (например, для совместной работы XML и TEXа). В выбранной схеме можно сделать дополнительные изменения. Это делается в разделе Main customization путём выбора дополнительных коллекций из групп Standard collections или Language collections. Например, нажав на кнопку Select у надписи Standard collections, можно выбрать дополнительные коллекции, например, MetaPost, Omega или документацию на разных языках.

Примечание: Коллекции Ghostscript, Perl и Wintools выбираются по умолчанию и должны быть установлены, за исключением ситуации, когда они уже есть в системе и вы понимаете, что вы делаете. Эти коллекции используются многими другими важными программами. Переменные PERL5LIB и GS_LIB будут также автоматически установлены.

Затем щёлкните на кнопку Select у надписи Language Collections в разделе Main customization. Это откроет меню Language collections, котором можно выбрать языковые коллекции для установки.

Затем щелкните на кнопку Install в разделе Install, и начнётся процесс установки.

Для системы TEX Live нужно проделать ряд операций после установки (генерирование форматов и базы данных для имён файлов, установка переменных и т.д.). Все они делаются на этом шаге, и некоторые могут занять довольно много времени. Поэтому подождите, пожалуйста, пока не появится сообщение об успешном завершении установки.

В меню StartProgramsTeXLive2005 будет добавлена программа tlpmgui.

При необходимости (Win9x/WinME) вам будет предложено рестартовать компьютер.

6.2 Дополнительные пакеты для Windows

Для полноты дистрибутиву TEX Live необходимы дополнительные пакеты, которые обычно не встречаются на машине под Windows. Многие скрипты написаны на языке Perl. Некоторые важные программы требуют интерпретатор языка PostScript Ghostscript для отображения или преобразования файлов. Набор программ для работы с графическими файлами также полезен в ряде случаев. Наконец, приспособленный для работы с TEXом редактор значительно облегчает набор и компилирование.

Все эти пакеты для Windows найти довольно легко, но для того, чтобы несколько облегчить вашу жизнь, мы включили в TEX Live следующий набор:

Эти пакеты взяты из дистрибутива XEmTEX (потомок дистрибутива fpTEX).

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

Ghostscript
http://www.cs.wisc.edu/~ghost/
Perl
http://www.activestate.com/ (но вам могут понадобиться дополнительные пакеты из архива CPAN: http://www.cpan.org/)
ImageMagick
http://www.imagemagick.com
NetPBM
Вы можете вместо ImageMagick использовать NetPBM для преобразования ваших графических файлов. Страничка NetPBM находится на http://netpbm.sourceforge.net/
Редакторы для работы с TEXом
Имеется широкий выбор редакторов, и какой из них использовать — дело вкуса. Вот подборка:

Вы можете установить и другие программы, которые не являются свободными1 и потому не включённые в дистрибутив TEX Live, например, GSView, графическая оболочка к программе Ghostscript, удобная для файлов в форматах PS/PDF. GSView можно найти на http://www.cs.wisc.edu/~ghost/gsview/ или любом зеркале архива CTAN.

7 Действия после установки и поддержка Windows

Если вы установили дистрибутив TEX Live, вы можете использовать tlpmgui для изменения и поддержки установленной системы.

7.1 Добавление и удаление пакетов

Поскольку программа tlpmgui находится в меню StartProgramsTeXLive2005, запустите её оттуда. Появится окно TeX Live installation and maintenance utility. В нём есть несколько страниц: Add Packages, Remove packages, Manage installation, Remove installation.

Щёлкните по страничке Add packages или Remove packages, а затем:

7.2 Конфигурация и другие административные действия

На странице Manage the installation содержатся кнопки для добавления поддержки языка, который не был выбран при установке, добавления/регенерация формата, который не был выбран при установке или был модифицирован после установки.

Можно произвести следующие действия:

Примечание: Вы можете закрыть окно Edit. . . кнопкой Cancel или кнопкой Done. В последнем случае система начнёт создавать заново файлы форматов (или карты шрифтов, если вы редактировали updmap.cfg), после чего будет обоновлена база данных ls-R.

Более подробно конфигурация системы описана в разделе 7.8, стр. 38.

7.3 Удаление TEX Live

Страница Remove the TeX Live installation открывает окно с кнопками, которые не ст´оит описывать. Мы не знаем никого, кому бы они могли понадобиться. . . :-)

В любом случае, если у вас есть директория texmf-local для ваших собственных добавлений, процесс удаления не сотрёт ни её, ни файлов в этой директории. Директория setup-win32, содержащая tlpmgui и другие файлы, также не будет удалена. Вам придётся удалять эти директории вручную.

7.4 Добавление ваших собственных пакетов к дистрибутиву

Во-первых, что бы вы ни делали, не забудьте перегенерировать базу данных имён файлов ls-R. Иначе новые файлы не будут найдены системой. Вы можете это делать либо через графическую оболочку tlpmgui, выбрав соответствующее действие на странице Manage the installation, либо вручную при помощи команды mktexlsr.

Если вы хотите добавить файлы, которых нет в дистрибутиве TEX Live, лучше всего их добавлять в директорию $TEXMFLOCAL. Тогда они сохранятся при обновлении TEX Live.

Директория $TEXMFLOCAL первоначально пуста. Если, например, вы хотите добавить файлы поддержки для программы символических вычислений Maple, вы можете положить стилевые файлы в c:\TeXLive2005\texmf-local\tex\latex\maple\, а документацию в c:\TeXLive2005\texmf-local\doc\latex\maple\.

7.5 Запуск tlmp.exe из командной строки

У программы tlmp.exe, которую использует графическая оболочка tlmpgui, есть ряд полезных ключей. Вы можете получить список ключей, запустив

  tlpm --help

Дополнительную информацию можно найти в файле tlmp.readme.

7.6 Установка по сети

Kpathsea знает про сетевые диски, поэтому вы можете использовать их для того, чтобы раздавать дерево TEXMF по сети. Но можно поступить ещё проще. Все TEXовские и конфигурационные файлы, всё, кроме файлов в директории bin/win32 можно использовать в одновременно в версиях teTEX или TEX Live под Юниксом. Это означает, что вы можете использовать Самбу, чтобы смонтировать диски либо с сервера NT на рабочую станцию под Юниксом, либо наоборот. Возможно несколько стратегий:

7.7 Чем Windows отличаются от других систем?

Версия Web2C для Windows отличается некоторыми специфическими чертами, которые ст´оит указать.

Kpathsea
Хеши, которые строит Kpathsea для TEX Live, довольно велики. Чтобы уменьшить время старта для всех программ, использующих Kpathsea, эти хеши кладутся в общую память. Поэтому, когда вы запускаете несколько таких программ, вызывающих друг друга (tex вызывает mpost, который вызывает tex), накладные расходы на запуск каждой из программ меньше. Это изменение невидимо для пользователя, за исключением случая, когда вы выставляете флаг отладки kpathsea на -1: вы тогда начинаете трассировать доступ к общей памяти, обычно не совсем то, что вам надо (к ней очень много обращений). Мы ещё не выяснили, что именно полезно в логе доступа к общей памяти, так что ситуация может измениться в будущем.
kpsecheck
Эта программа предоставляет некоторые опции, которые не подошли команде kpsewhich. Она позволит вам перечислить все файлы, которые встречаются несколько раз в деревьях texmf. Это может быть удобно, но как правило, вы будете получать ненужную информацию, (вроде десятков файлов README). Эти файлы привели бы к противоречиям в хешах Kpathsea; к счастью, Kpathsea никогда их не ищет. Поэтому вы можете объединять опцию -multiple-occurences с двумя другими опциями для включения или исключения файлов, чьи имена соответствуют определённому шаблону (вы можете запросить несколько шаблонов).

Команда kpsecheck сообщает также статус общей памяти: используется или не используется. Это может быть полезно знать, потому что если статус памяти ‘in use’, значит, запущен один или несколько процессов, и эффект команды mktexlsr может быть отложен до тех пор, пока все процессы, использующие библиотеку Kpathsea, не завершатся.

Наконец, эта же команда сообщает о том, где по её мнению находится Ghostscript. Под Win32 для многих программ проще искать Ghostscript dll по значению регистра, чем использовать PATH, длина которого ограничена.

Web2C
У компиляторов несколько опций, которых нет под Unixовской версией Web2C, и у одной опции другое поведение:

7.8 Индивидуальные настройки

7.8.1 Dvips

Конфигурационный файл для dvips находится в
C:\TeXLive2005\texmf-var\dvips\config\config.ps
Вы можете открыть его в любом редакторе и изменить некоторые параметры:

шрифты
вы можете изменить текущий режим Metafont или разрешение принтера, если dvips понадобится генерировать шрифты в формате PK. По умолчанию она использует шрифты в формате Type 1, так что она не должна вызывать mktexpk чересчур часто;
принтер
вы можете сказать dvips, где вы хотите печатать по умолчанию. Если за опцией o не следует название принтера, то на диск записывается файл в формате PostScript. Вы можете указать dvips название принтера, например:
  o lpt1:
  % o | lpr -S server -P myprinter
  % o \\server\myprinter

бумага
Вы можете изменить размер бумаги с европейского (A4) на US letter, сделав US letter первым размером бумаги в файле. Найдите в файле строки, начинающиеся с @. Поменяйте строки так, чтобы этот раздел начинался со строк:
  @ letterSize 8.5in 11in
  @ letter 8.5in 11in
  @+ %%BeginPaperSize: Letter
  @+ letter
  @+ %%EndPaperSize

Текущая версия TEX Live всегда создаёт обновлённые версии файлов fontmaps для Dvips and Pdftex. Это делается программой updmap во время установки, а также при добавлении пакетов. Если вы добавляете пакеты вручную, отредактируйте файл updmap.cfg в $TEXMFVAR/web2c.

7.8.2 PdfTeX

Если вы используете программу pdflatex, чтобы писать непосредственно в формате PDF, и вы используете бумагу US letter, отредактируйте файл
C:\TeXLive2005\texmf-var\tex\generic\config\pdftexconfig.tex,
изменив в нём ‘\pdfpagewidth’ и ‘\pdfpageheight’. Там должно быть:

\pdfpagewidth=8.5 true in \pdfpageheight=11 true in
Сохраните файл и выйдите из редактора.

7.8.3 GSView

GSView теперь распространяется под лицензией Aladdin, и поэтому не включена в TEX Live.

Вы можете захотеть изменить размер страницы на US letter. Если это так, запустите GSView из меню Start, и выберите MediaLetter.

Кроме того, вы можете изменить настройки так, чтобы получить самое качественное изображение на экране. В меню MediaDisplay Settings, выставьте Text Alpha и Graphics Alpha на 4 бита.

Заметьте, что после установки все файлы .ps и .eps будут автоматически открываться программой GSView.

По поводу печати, см. раздел 7.10 ниже.

7.8.4 WinDvi

Программа tlmpgui.exe не ассоциирует файлы с расширением .dvi с программой Windvi и не создаёт иконы на декстопе, так что вы это должны сделать сами.

Откройте windvi, щёлкнув на иконку или из командной строки.

Вы можете задать размер бумаги US letter из меню ViewOptionsPapertype и выбрав US (8.5" x 11") (а затем OK).

Вы можете изменить и другие параметры, как например, возможность запускать системные команды из документа (запрещённую по умолчанию из соображений безопасности). Кроме того, при первом запуске вы можете решить, что масштаб чересчур велик. Измените его и найдите подходящее для вас значение.

Все настройки программы Windvi хранятся в файле windvi.cnf. Вы можете найти его командой

  c:\>kpsewhich --expand-var $HOME/windvi.cnf

Если у вас возникнут проблемы с Windvi, удалите конфигурационный файл и проверьте, работает ли всё в стандартной конфигурации.

7.9 Тестирование

Общие инструкции по тестированию находятся в разделе 4.2 (стр. 28). В этом разделе описаны тесты, специфические для Windows.

Откройте файл sample2e.tex в вашем редакторе (Xemacs, WinShell). Этот файл можно найти в директории, например, C:\TeXLive2005\texmf-dist\tex\latex\base. На экране должен появиться исходный код в формате LATEX. Скомпилируйте его, щёлкнув по меню CommandLaTeX (XEmacs) или иконке «LATEX» (WinShell), затем посмотрите на результат, щёлкнув по меню CommandView DVI (XEmacs) или иконке «Preview (Windvi)» (WinShell).

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

Совет на будущее: Если LATEX останавливается, потому что не может найти нужного файла, вы можете нажать Ctrl-z, чтобы выйти из программы.

7.10 Печать

Вы можете печатать из Windvi. В этом случае печать будет производиться через универсальный драйвер Windows. Он по определению совместим со всеми принтерами. Но у него есть недостаток: он может генерировать огромные промежуточные файлы, и некоторые (старые) версии Windows их не любят. Его преимущество в том, что вы можете вставлять графику в формате BMP или WMF. Вам также надо правильно выставить параметры печати (раздел 7.8.4), иначе вы можете получить уменьшенную или увеличенную страницу (печать с разрешением 600 dpi на принтере с разрешением 300 dpi даст вам только четверть страницы).

Печать будет быстрее и надёжнее, если вы запустите dvips, чтобы создать файл .ps, а затем напечатаете его из GSView. В GSview выберите FilePrint. . . . Появится окно Print.

Если у вас PostScript-принтер, обязательно выберите PostScript Printer. Это делается в меню Print Method внизу слева в окне Print. Вы затем можете выбрать любой из установленных принтеров. Если вы не выберите PostScript Printer, печать не будет работать.

Если вы используете не PostScript-принтер, выберите Ghostscript device в меню Print Method, затем щёлкните на кнопку справа djet500 и выберите ваше принтер из появившегося списка. (В старых версиях GSView проверьте, что PostScript Printer не выбран, и выберите принтер из списка Device.)

7.11 Советы пользователям Win32

7.11.1 Разные типы Win32

То, что мы называем Win32, не является операционной системой само по себе. Это большой набор функций (около 12 000 в заголовках SDK от Микрософта), которые используются для написания программ для разных операционных систем семейства Windows.

Есть разные типы Windows:

Win9x могут одновременно запускать 32 и 16-битовые программы. Но операционная система сама написана не полностью в 32-битовом режиме, и не поддерживает защищённый режим: 16-битовые программы могут переписать память операционной системы! Некоторые части системы, например, GDI (Graphical Device Interface, интерфейс к графическим устройствам) управляют ограниченными ресурсами, вроде битмапов, шрифтов и т.д. для всех программ, которые могут работать одновременно. Все заголовки битмапов, доступные одновременно, не могут занимать больше, чем 64 Kb. Это объясняет, тот печальный факт, что вы можете поставить систему на колени, например, используя много графических объектов.

NT, 2K и XP свободны от этих и других ограничений Win9x. Это настоящие многозадачные системы с защищённой памятью. Они гораздо лучше отзываются на действия пользователя, чем Win9x, из-за лучшего управления памятью, лучшей файловой системы и т.д.

7.11.2 Командная строка

Вы можете спросить: «Зачем мне нужна командная строка, если я работаю под Windows?»

Хороший вопрос. Проблема на самом деле очень общая. Не все операции удобно делать из GUI. Командная строка даёт вам возможности программирования — если за ней стоит хороший интерпретатор.

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

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

Однако вам в ряде ситуаций может понадобиться командная строка. Например, у вас могут возникнуть трудности, и вам потребуется отладка.

Win9x
Вы можете получить командную строку, либо щёлкнув по иконке MS-DOS в меню StartPrograms, либо выбрав из меню StartRun и напечатав там command.com.
NT, 2K, XP
Вы можете получить командную строку, найдя Command Prompt в меню StartAccessories. Вы также можете выбрать меню StartRun и напечатать там cmd.exe, название нового интерпретатора командной строки в NT (именно поэтому неправильно называть его окном DOS!).

Детали выхода в командную строку могут измениться в других версиях Windows.

7.11.3 Разделители путей

API Win32 понимает и /, и \ в качестве разделителей в названиях директорий. Но интерпретаторы команд не понимают первого из них! Поэтому, когда путь к файлу используется в программе, вы можете использовать оба разделителя, даже в одном и том же пути. Но в командной строке вы можете использовать в качестве разделителя только \. Причина заключается в совместимости: интерпретатор команд использует ‘/’ для аргументов команд.

После этого длинного предисловия мы можем сказать: не удивляйтесь, если вы встретите директории, записанные в формате Юникса: fpTEX является портом Web2C, и пытается достичь совместимости на разных платформах. По этой причине все конфигурационные файлы, где указывается путь по директориям, делают это в формате Юникса.

7.11.4 Файловые системы

Пожалуй, худшей чертой Win9x с точки зренияTEXа является так называемая файловая система FAT. TEX использует очень много маленьких файлов, с размерами 1–3 Kb. Файловая система FAT очень древняя, она на много десятилетий старше многогигабайтовых дисков, которые распространены сегодня. Неудивительно, что она не может эффективно управлять десятками тысяч TEXовских файлов, входящих в состав TEX Live. Файловая система FAT выделяет как минимум 32 Kb любому файлу на большом разделе. Это означает, что система TEX занимает намного больше места, чем ей на самом деле нужно.

Другие, более современные файловые системы, FAT32 и NTFS, лишены этого недостатка. Они используют кластеры размером в 4 Kb. (На NTFS размер кластера можно уменьшить до 512 байт.)

7.11.5 Как добавить директорию в PATH

Есть пары переменных и их значений, которые ведут себя как глобальные переменные для всех программ. Набор таких переменных называется окружением. Каждая программа получает копию текущего окружения. Она может опросить или изменить значение любой переменной. Изменение происходит с локальной копией окружения, и не переходит в другие программы.

Переменная PATH — особая переменная, используемая для поиска запускаемых вами программ. Она задаётся по-разному в Win9x, WinME and NT/2K/XP:

Windows 95/98
Отредактируйте файл autoexec.bat. В этом файле должна быть строка, начинающаяся с PATH=, после чего следует список директорий, разделённых ;. Добавьте директорию с программами TEX Live к списку, например, так:
  PATH=c:\windows;c:\windows\system;c:\TeXLive2005\bin\win32

Windows ME
Вам надо запустить специальную программу c:\windows\system\msconfig.exe чтобы изменить переменные окружения. В этой программе выберите «Environment» и измените нужные переменные. Вам будет предложено рестартовать машину после изменения.
Windows NT/2K/XP
Щёлкните левой клавишей мышки на StartSettingsControl Panel. Откроется окно с иконками панели управления. Щёлкните на «System». Откроется окно «System Properties». Щёлкните на Environment или найдите Environment Variables среди диалоговых окон. Теперь вы сможете изменить окружение для себя. Примечание: там также показано системное окружение. Обычно вы не можете изменить системные переменные, если у вас нет прав администратора. Если вы хотите изменить PATH для всех пользователей, обратитесь к вашему системному администратору. Если вы сами системный администратор, вы должны понимать, что вы делаете.

Если там уже есть переменная PATH, щёлкните на PATH. В поле Variable появится PATH, а в поле Value текущее значение переменной: список директорий, разделённых ;. Добавьте директорию, где расположены нужные программы, например, c:\TeXLive2005\bin\win32. Если у вас не задана переменная PATH, щёлкните на поле Variable и впечатайте PATH, щёлкните на поле Value и впечатайте директорию. Внимание: Щёлкните на Apply перед тем, как нажать Ok, иначе значение PATH не изменится. Будьте очень аккуратны, изменяя переменные окружения.

Лучший способ убедиться, что переменная установлена правильно: откройте консоль и напечатайте

  set VARIABLE

система должна напечатать её значение.

7.11.6 Компиляторы TEXа

Если вы взглянете в документацию Web2C, вы увидите, что все различные программы на основе TEXа используют один и тот же компилятор, Например, tex.exe и latex.exe являются копиями одной и той же программы, но используют различные форматы в зависимости от того, под каким именем они вызваны.

Под Юниксом это сделано путём использования символических ссылок. Это экономит массу места на диске, потому что один и тот же компилятор используется многими программами.

API Win32 не знает про ссылки. Поэтому чтобы сэкономить место, все основные программы TEXа упакованы в DLL (Dynamic Linked Library, динамически подгружаемая библиотека). Это означает, что у вас могут быть такие файлы:

18/09/2005  14:19                3 584 latex.exe
18/09/2005  14:19                3 584 pdfetex.exe
18/09/2005  14:19              524 288 tl90pdfetex.dll
и файл latex.exe на самом деле является копией pdfetex.exe, использующей тот же tl90pdfetex.dll. Этот же метод используется для программ mktex*.exe, которые вызывают библиотеку mktex.dll,

Мы включили в дистрибутив программу irun.exe для создания аналога юниксовских жёстких ссылок для программ под Win32.

7.12 Что делать в случае проблем

7.12.1 Что делать, если latex не находит ваших файлов?

7.12.2 Что делать, если установка произошла не так, как ожидалось?

Вот несколько вещей, которые вы можете проверить:

  1. Находится ли tex.exe в моей PATH?
  2. Установлена ли переменная TEXMFCNF на c:/TeXLive2005/texmf-var/web2c (значение по умолчанию)?
  3. Есть ли ошибки в логах программы tlmpgui.exe? Вы можете найти файл tlmpgui.log в директории TEMP. Ищите строку ‘Error’ в этом файле. Заметьте, что в логе могут оказаться ошибки после генерироования некоторых форматов. Не надо паниковать: возможно, некоторые форматы не были установлены.
  4. Есть ли объявление о багах на http://tug.org/texlive/? (Маловероятно, но проверить ст´оит.)

Дистрибутив TEX Live состоит из сотен программ и десятков тысяч файлов из разных источников. Поэтому очень трудно предсказать все возможные источники ошибок. Тем не менее мы попытаемся вам помочь (см, раздел 1.2 стр.  5).

8 Руководство пользователя Web2C

Web2C — это интегрированная коллекция программ, относящихся к TEXу: сам TEX, Metafont, MetaPost, BibTeX, и т.д. Это сердце TEX Live.

Немного истории. Первоначальная версия была написана Томасом Рокики, который в 1987 году создал первую систему TEX-to-C, адаптировав файлы изменений для Юникса, разработанные в основном Говардом Трики и Павлом Куртисом. Тим Морган стал поддерживать систему, и в этот период её имя сменилось на Web-to-C. В 1990 году Карл Берри взялся за работу, координируя работу десятков программистов, а в 1997 он передал руководство Олафу Веберу.

Система Web2C работает на Юниксе, 32-битовых Windows, Mac OS X, и других операционных системах. Она использует оригинальные исходники Кнута для TEXа и других программ, написанных на языке web и переведённых на C. Основные программы системы:

bibtex
Поддержка библиографий.
dmp
Перевод troff в MPX (картинки в MetaPost).
dvicopy
Раскрывает виртуальные шрифты в файлах DVI.
dvitomp
Перевод DVI в MPX (рисунки в MetaPost).
dvitype
Перевод DVI в текст.
gftodvi
Гранки шрифтов.
gftopk
Упаковка шрифтов
gftype
Перевод GF в текст.
makempx
Вёрстка меток MetaPost.
mf
Создание шрифтов.
mft
Вёрстка исходников Metafont.
mpost
Создание технических диаграмм.
mpto
Извлечение меток MetaPost.
newer
Сравнение дат модификации.
patgen
Создание таблиц переносов.
pktogf
Перевод PK в GF.
pktype
Перевод PK в текст
pltotf
Перевод из списка свойств шрифта в TFM.
pooltype
Показ файлов pool в web.
tangle
Перевод web в Pascal.
tex
Вёрстка.
tftopl
Перевод TFM в список свойств шрифта.
vftovp
Перевод виртуального шрифта в список свойств шрифта.
vptovf
Перевод списка свойств шрифта в виртуальный шрифт.
weave
Перевод web в TEX.

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

Все программы поддерживают стандартные опции GNU:

--help
напечатать краткую справку
--verbose
печатать подробную информацию по мере работы
--version
Напечатать версию программы и завершить работу.

Для поиска файлов программы Web2C используют библиотеку Kpathsea. Эта библиотека использует комбинацию переменных окружения и конфигурационных файлов, чтобы найти нужные файлы в огромной системе TEX. Web2C может просматривать одновременно больше одного дерева директорий, что полезно для работы со стандартным дистрибутивом TEXа и его локальными расширениями. Для ускорения поисков файлов каждое дерево содержит файл ls-R, в котором указаны названия и относительные пути всех файлов в этом дереве.

8.1 Поиск файлов в Kpathsea

Рассмотрим сначала общий алгоритм библиотеки Kpathsea.

Будем называть путём поиска набор разделённых двоеточием или точкой с запятой элементов пути, представляющих из себя в основном названия директорий. Путь поиска может иметь много источников. Чтобы найти файл ‘my-file’ в директории ‘.:/dir’, Kpathsea проверяет каждый элемент пути по очереди: сначала ./my-file, затем /dir/my-file, возвращая первый файл (или, возможно, все файлы).

Чтобы работать с разными операционными системами, Kpathsea под системой, отличной от Юникса может использовать разделители, отличные от ‘:’ и ‘/’.

Чтобы проверить определённый элемент пути p, Kpathsea вначале проверяет, подходит ли к нему база данных (см. «База данных файлов» на стр. 59), т.е., есть ли база в директории, которая является префиксом для p. Если это так, спецификация пути сравнивается с содержимым базы данных.

Если база данных не существует, или не относится к этому элементу пути, или не содержит нужного элемента, проверяется файловая система (если это не запрещено спецификацией, начинающейся с ‘!!’, и если файл должен существовать). Kpathsea конструирует список директорий, которые соответствуют элементу, и в каждой директории ищет нужный файл,

Условие «файл должен существовать» важно для файлов ‘.vf’ и файлов, которые открывает TEX по команде \openin. Такие файлы могут и не существовать (например, файл cmr10.vf), и было бы неправильно искать их на диске. Поэтому, если вы не обновите ls-R при установке нового файла ‘.vf’, он никогда не будет найден. Каждый элемент пути ищется по очереди: сначала база данных, затем диск. Если нужный файл найден, поиск останавливается, и возвращается результат.

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

Заметьте, что имя файла при поиске может быть абсолютным или относительным, т.е. начинаться с ‘/’, или ‘./’, или ‘../’, Kpathsea просто проверяет, существует ли файл.

8.1.1 Источники путей поиска

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

  1. Установленные пользователем переменные окружения, например TEXINPUTS. Переменные окружения с точкой и названием программы имеют преимущество; например если ‘latex’ — имя программы. то TEXINPUTS.latex имеет преимущество перед TEXINPUTS.
  2. Конфигурационный файл, специфический для данной программы, например, строка ‘S /a:/b’ в config.ps для dvips.
  3. Конфигурационный файл Kpathsea texmf.cnf, содержащий строку типа ‘TEXINPUTS=/c:/d’ (см. ниже).
  4. Значение, заданное при компиляции.

Вы можете увидеть каждое из этих значений для данного пути поиска, задав соответствующий уровень отладки (см. «Отладка» на стр. 63).

8.1.2 Конфигурационные файлы

Kpathsea читает конфигурационные файлы texmf.cnf для задания своих параметров. Путь поиска для этих файлов называется TEXMFCNF (по умолчанию, такой файл находится в поддиректории texmf/web2c). Все найденные файлы texmf.cnf будут прочитаны, и определения в более ранних файлах имеют преимущество перед определениями в более поздних. Таким образом, если путь поиска задан как .:$TEXMF, значения в ./texmf.cnf имеют преимущество перед значениями в $TEXMF/texmf.cnf.

Фрагмент конфигурационного файла, иллюстрирующий эти правила приведён ниже:

  TEXMF              = {$TEXMFLOCAL,!!$TEXMFMAIN}
  TEXINPUTS.latex    = .;$TEXMF/tex/{latex,generic;}//
  TEXINPUTS.fontinst = .;$TEXMF/tex//;$TEXMF/fonts/afm//
  % e-TeX related files
  TEXINPUTS.elatex   = .;$TEXMF/{etex,tex}/{latex,generic;}//
  TEXINPUTS.etex     = .;$TEXMF/{etex,tex}/{eplain,plain,generic;}//

8.1.3 Подстановка путей

Kpathsea разпознаёт определённые специальные символы и конструкции в путях поиска, аналогичные конструкциям в стандартных оболочках Юникса. Например, сложный путь ~$USER/{foo,bar}//baz, означает все поддиректории директорий foo и bar в домашней директории пользователя $USER, которые содержат файл или поддиректорию baz. Это объяснено в следующем разделе.

8.1.4 Подстановка по умолчанию

Если путь поиска с наибольшим приоритетом (см. «Источники путей» на стр. 53) содержит дополнительное двоеточие (в начале, в конце, двойное), Kpathsea заменяет его следующим по приоритету путём. Если этот вставленный путь содержит дополнительное двоеточие, то же происходит со следующим путём. Например, если переменная окружения задана как

> setenv TEXINPUTS /home/karl:
и TEXINPUTS в файле texmf.cnf содержит

  .:$TEXMF//tex
то поиск будет происходить с путём

  /home/karl:.:$TEXMF//tex

Поскольку было бы бесполезно вставлять значение по умолчанию более чем один раз, Kpathsea изменяет только одно лишнее двоеточие, и оставляет остальные: она проверяет сначала двоеточие в начале, потом в конце, потом двойные двоеточия.

8.1.5 Подстановка скобок

Полезна также подстановка скобок, из-за которой, например, v{a,b}w означает vaw:vbw. Вложенность тут допускается. Благодаря этому можно иметь несколько иерархий директорий, путём присвоения значения со скобками $TEXMF. Например, в файле texmf.cnf, можно найти следующее определение (это упрощение, на самом деле там ещё больше деревьев):

    TEXMF = {$TEXMFHOME,$TEXMFLOCAL,!!$TEXMFVAR,!!$TEXMFMAIN}

Благодаря этому можно писать такое:

    TEXINPUTS = .;$TEXMF/tex//

что означает, что кроме текущей директории будет происходить поиск только в $TEXMFHOME/tex, $TEXMFLOCAL/tex, $TEXMFVAR/tex и $TEXMFMAIN/tex (последние два дерева используют файлы ls-R). Это удобно для поддержки двух параллельных структур, «замороженной» (например, на CD) и обновляемой по мере появления новых версий. Используя переменную $TEXMF во всех определениях, можно задать поиск в обновляемом дереве первым.

8.1.6 Подстановка поддиректорий

Два или более слэша ‘/’ в элементе пути вслед за именем директории d заменяются всеми поддиректориями d рекурсивно. На каждом уровне порядок поиска по директориям не определён.

Если вы определите компоненты имени файла после ‘//’, только поддиректории с соответствующими компонентами будут включены. Например, ‘/a//b’ даёт поддиректории /a/1/b, /a/2/b, /a/1/1/b, и т.д., но не /a/b/c или /a/1.

Возможны несколько конструкций ‘//’ в одном пути, но ‘//’ в начале пути игнорируются.

8.1.7 Список специальных символов и их значений

В следующем списке приводятся специальные символы в конфигурационных файлах Kpathsea.

:
Разделитель в спецификациях путей; в начале или конце означает подстановку по умолчанию.
;
Разделитель для не-Юникса (то же, что :).
$
Подстановка переменных.
~
Означает домашнюю директорию пользователя.
{...}
Подстановка скобок.
//
Подстановка поддиректорий (может встретиться где угодно, кроме начала пути).
%
Начало комментария.
\
Символ продолжения (для команд из нескольких строк).
!!
Поиск только в базе данных, но не на диске.

8.2 Базы данных

Kpathsea старается минимизировать обращение к диску при поиске. Тем не менее в системах с большим количеством директорий поиск в каждой возможной директории может занять долгое время (это особенно верно, если надо проверить сотни директорий со шрифтами). Поэтому Kpathsea может использовать внешний текстовый файл, «базу данных» ls-R, который знает, где находятся файлы в директориях, что даёт возможность избежать частых обращений к диску.

Ещё одна база данных, файл aliases позволяет вам давать дополнительные названия файлам в ls-R. Это полезно, если вам нужно соблюдать правило DOS «8.3».

8.2.1 Базы данных ls-R

Как объяснено выше, основная база данных называется ls-R. Вы можете создать её в корне каждого дерева TEXа, которое просматривается Kpathsea (по умолчанию, $TEXMF); в большинстве случаев иерархия только одна. Kpathsea ищет файлы ls-R в пути TEXMFDBS.

Рекомендуемый способ создания и поддержки ‘ls-R’ — скрипт mktexlsr, включённый в дистрибутив. Он вызывается разными скриптами ‘mktex’. . . . В принципе этот скрипт выполняет команды типа

cd /your/texmf/root && \ls -1LAR ./ >ls-R
при условии, что в вашей системе ls даёт вывод в нужном формате (GNU ls годится). Чтобы поддерживать базу данных в текущем состоянии, проще всего перегенерировать её регулярно из cronа, так что она автоматически обновляется после установки нового пакета.

Если файл не найден в базе данных, по умолчанию Kpathsea ищет на диске. Если элемент пути начинается с ‘!!’, то поиск происходит только в базе данных.

8.2.2 kpsewhich: поиск файлов

Программа kpsewhich выполняет поиск в соответствии с алгоритмом, описанным выше. Это может быть полезно в качестве варианта команды find для поиска файлов в иерархиях TEXа (это широко используется в скриптах ‘mktex’. . . ).

> kpsewhich option... lename...
Опции, указанные в option, начинаются либо с ‘-’ либо ‘--’, и любые однозначные сокращения допустимы.

Kpathsea рассматривает каждый аргумент, не являющийся опцией, как имя файла, и возвращает первый найденный файл. Нет опции вернуть все найденные файлы (для этого можно использовать программу ‘find’).

Наиболее важные опции описаны ниже.

--dpi=num

Установить разрешение num; это влияет только на поиск файлов ‘gf’ и ‘pk’. Синоним ‘-D’, для совместимости с dvips. По умолчанию 600.
--format=name

Установить формат для поиска name. По умолчанию, формат определяется из имени файла. Для форматов, для которых нет однозначного суффикса, например, файлов MetaPost и конфигурационных файлов dvips, вы должны указать название, известное Kpathsea, например, tex или enc files. Список можно получить командой kpsewhich --help.
--mode=string

Установить значение режима string; это виляет только на поиск файлов ‘gf’ и ‘pk’. Значения по умолчанию нет: ищутся файлы для всех режимов.
--must-exist

Сделать всё возможное, чтобы найти файл включая поиск на диске. По умолчанию для повышения эффективности просматривается только база данных ls-R.
--path=string

Искать в наборе директорий string (как обычно, разделённых двоеточиями), вместо того, чтобы вычислять его по имени файла. ‘//’ и обычные подстановки работают. Опции ‘--path’ и ‘--format’ несовместимы.
--progname=name

Установить имя программы на name. Это влияет на путь поиска из-за префикса .progname. По умолчанию kpsewhich.
--show-path=name

Показать путь, используемый при поисках файлов типа name. Можно использовать расширение (.pk, .vf и т.д.) или название, как для опции ‘--format’.
--debug=num

Установить уровень отладки num.

8.2.3 Примеры использования

Давайте посмотрим на Kpathsea в действии. Вот простой поиск:

> kpsewhich article.cls
 /usr/local/texmf-dist/tex/latex/base/article.cls
Мы ищем файл article.cls. Так как суффикс ‘.cls’ однозначен, нам не нужно указывать, что мы ищем файл типа tex (исходники TEXа). Мы находим его в поддиректории tex/latex/base директории ‘temf-distTEX Live. Аналогично, всё последующее находится без проблем благодаря однозначному суффиксу:

> kpsewhich array.sty
   /usr/local/texmf-dist/tex/latex/tools/array.sty
> kpsewhich latin1.def
   /usr/local/texmf-dist/tex/latex/base/latin1.def
> kpsewhich size10.clo
   /usr/local/texmf-dist/tex/latex/base/size10.clo
> kpsewhich small2e.tex
   /usr/local/texmf-dist/tex/latex/base/small2e.tex
> kpsewhich tugboat.bib
   /usr/local/texmf-dist/bibtex/bib/beebe/tugboat.bib

Последнее — библиографическая база данных для статей журнала TUGBoat.

> kpsewhich cmr10.pk
Битмапы шрифтов типа .pk используются программами dvips о xdvi. Ничего не найдено, так как у нас нет готовых файлов шрифтов Computer Modern в формате ‘.pk’ (так как мы используем версии в формате Type 1 из дистрибутива TEX Live).

> kpsewhich wsiupa10.pk
   /usr/local/texmf-var/fonts/pk/ljfour/public/wsuipa/wsuipa10.600pk
Для этих шрифтов (фонетический алфавит, созданный в университете штата Вашингтон) мы должны сгенерировать ‘.pk’, и так как режим Metafont [о умолчанию в нашей системе ljfour с разрешением of 600 dpi (точек на дюйм), этот шрифт и найден.

> kpsewhich -dpi=300 wsuipa10.pk
В этом случае нам нужно разрешение 300 dpi (-dpi=300); мы видим, что такого шрифта в системе нет. На самом деле программа dvips или xdvi построила бы нужный файл .pk при помощи скрипта mktexpk.

Теперь обратимся к заголовкам и конфигурационным файлам dvips. Вначале рассмотрим один из наиболее часто используемых файлов, пролог tex.pro для поддержки TEXа, а затем рассмотрим общий конфигурационный файл config.ps и карту шрифтов psfonts.map. Так как суффикс ‘.ps’ неоднозначен, мы должные явно указать тип файла, который мы ищем: (dvips config) для файла config.ps.

> kpsewhich tex.pro
   /usr/local/texmf/dvips/base/tex.pro
> kpsewhich --format="dvips config" config.ps
   /usr/local/texmf/dvips/config/config.ps
> kpsewhich psfonts.map
   /usr/local/texmf/fonts/map/dvips/updmap/psfonts.map

Рассмотрим теперь файлы поддержки URW Times (PostScript). Префикс для этих файлов в стандартной схеме обозначения шрифтов ‘utm’. Вначале мы рассмотрим конфигурационный файл, который содержит название карты шрифтов:

> kpsewhich --format="dvips config" config.utm
/usr/local/texmf-dist/dvips/psnfss/config.utm
Содержание этого файла:

  p +utm.map
что указывает на файл utm.map, который мы хотим теперь найти.

> kpsewhich --format="dvips config" utm.map
   /usr/local/texmf-dist/fonts/map/dvips/times/utm.map
Эта карта определяет названия шрифтов формата Type 1 (PostScript) в коллекции URW. Она выглядит так (мы показываем только часть файла):

utmb8r  NimbusRomNo9L-Medi    ... <utmb8a.pfb
utmbi8r NimbusRomNo9L-MediItal... <utmbi8a.pfb
utmr8r  NimbusRomNo9L-Regu    ... <utmr8a.pfb
utmri8r NimbusRomNo9L-ReguItal... <utmri8a.pfb
utmbo8r NimbusRomNo9L-Medi    ... <utmb8a.pfb
utmro8r NimbusRomNo9L-Regu    ... <utmr8a.pfb
Давайте найдём, например, файл для Times Roman utmr8a.pfb:

> kpsewhich utmr8a.pfb
   /usr/local/texmf-dist/fonts/type1/urw/times/utmr8a.pfb

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

8.2.4 Отладка

Иногда необходимо проверить, как программа ищет файлы. С этой целью Kpathsea предлагает разные уровни отладки:

 1
статистика обращений к диску. При работе с базами ls-R это почти не должно давать строк в лог.
 2
Ссылки на хеши (например, базы данных ls-R, конфигурационные файлы и т.д.).
 4
Операции открытия и закрытия файлов.
 8
Общая информация о типах файлов, которые ищет Kpathsea. Это полезно для того, чтобы найти, где определяется тип пути поиска для данного файла.
16
Список директорий для каждого элемента пути (при поисках на диске).
32
Поиски файлов.

Значение -1 задаст все опции выше; именно это значение чаще всего используется на практике.

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

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

(Примечание для пользователей Windows: в этой системе трудно перенаправить все сообщения в файл. Для диагностики вы можете временно установить SET KPATHSEA_DEBUG_OUTPUT=err.log).

Рассмотрим в качестве примера простой файл в формате LATEX, hello-world.tex, со следующим содержанием:

    \documentclass{article}
    \begin{document}
    Hello World!
    \end{document}

Этот маленький файл использует только шрифт cmr10, так что давайте посмотрим, как dvips создаёт файл в формате PostScript (мы хотим использовать версию шрифтов в формате Type 1, отсюда опция -Pcms).

> dvips -d4100 hello-world -Pcms -o
В этом случае мы объединили отладочный уровень 4 для dvips’s debug class 4 (директории шрифтов) с подстановкой элементов путей в Kpathsea(см. Руководство пользователя dvips, texmf/doc/html/dvips/dvips_toc.html). Результат (слегка отредактированный) показан на Рис. 1.


debug:start search(file=texmf.cnf, must_exist=1, find_all=1,
  path=.:/usr/local/bin/texlive:/usr/local/bin:
       /usr/local/bin/texmf/web2c:/usr/local:
       /usr/local/texmf/web2c:/.:/./teTeX/TeX/texmf/web2c:).
kdebug:start search(file=ls-R, must_exist=1, find_all=1,
  path=~/tex:/usr/local/texmf).
kdebug:search(ls-R) =>/usr/local/texmf/ls-R
kdebug:start search(file=aliases, must_exist=1, find_all=1,
  path=~/tex:/usr/local/texmf).
kdebug:search(aliases) => /usr/local/texmf/aliases
kdebug:start search(file=config.ps, must_exist=0, find_all=0,
  path=.:~/tex:!!/usr/local/texmf/dvips//).
kdebug:search(config.ps) => /usr/local/texmf/dvips/config/config.ps
kdebug:start search(file=/root/.dvipsrc, must_exist=0, find_all=0,
  path=.:~/tex:!!/usr/local/texmf/dvips//).
search(file=/home/goossens/.dvipsrc, must_exist=1, find_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//).
kdebug:search($HOME/.dvipsrc) =>
kdebug:start search(file=config.cms, must_exist=0, find_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//).
kdebug:search(config.cms)
=>/usr/local/texmf/dvips/cms/config.cms
Рис. 1: Поиск конфигурационных файлов
kdebug:start search(file=texc.pro, must\_exist=0, find\_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
       ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro
Рис. 2: Поиск файла пролога
kdebug:start search(file=cmr10.tfm, must\_exist=1, find\_all=0,
  path=.:~/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//:
       /var/tex/fonts/tfm//).
kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm
kdebug:start search(file=texps.pro, must\_exist=0, find\_all=0,
   ...
<texps.pro>
kdebug:start search(file=cmr10.pfb, must\_exist=0, find\_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
       ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb
<cmr10.pfb>[1]
Рис. 3: Поиск файла шрифта

Программа dvips вначале ищет свои конфигурационные файлы. Сначала находится texmf.cnf, который содержит определения для путей поиска остальных файлов, затем база данных ls-R (для оптимизации поиска файлов) и файл aliases, который позволяет объявить несколько имён (например, короткие 8.3 и более длинные) для одного файла. Затем dvips ищет свой конфигурационный файл config.ps и файл .dvipsrc (который в данном случае не найден). Наконец, dvips находит конфигурационный файл для шрифтов Computer Modern PostScript config.cms (это было задано опцией -Pcms в командной строке). Этот файл содержит список карт, которые определяют соотношения между файлами в форматах TEX, PostScript и названиями шрифтов:

> more /usr/local/texmf/dvips/cms/config.cms
   p +ams.map
   p +cms.map
   p +cmbkm.map
   p +amsbkm.map
dvips находит все эти файлы плюс общую карту шрифтов psfonts.map, которая всегда загружается (она содержит обычные шрифты в формате PostScript; см. последнюю часть раздела 8.2.3).

В этот момент dvips сообщает о себе пользователю:

This is dvips(k) 5.92b Copyright 2002 Radical Eye Software (www.radicaleye.com)
Затем она ищет пролог texc.pro:


kdebug:start search(file=texc.pro, must_exist=0, find_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
       ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(texc.pro) => /usr/local/texmf/dvips/base/texc.pro

Найдя этот файл, dvips печатает дату и время, и информирует нас, что собирается генерировать файл hello-world.ps, что ей нужен файл cmr10, и что последний является «резидентным» (битмапы не нужны):


TeX output 1998.02.26:1204’ -> hello-world.ps
Defining font () cmr10 at 10.0pt
Font cmr10 <CMR10> is resident.
Теперь она ищет файл cmr10.tfm, который она находит, затем ещё несколько прологов (здесь они опущены), и наконец файл формата Type 1 cmr10.pfb найден и включён в выходной файл (см, последнюю строку):


kdebug:start search(file=cmr10.tfm, must_exist=1, find_all=0,
  path=.:~/tex/fonts/tfm//:!!/usr/local/texmf/fonts/tfm//:
       /var/tex/fonts/tfm//).
kdebug:search(cmr10.tfm) => /usr/local/texmf/fonts/tfm/public/cm/cmr10.tfm
kdebug:start search(file=texps.pro, must_exist=0, find_all=0,
   ...
<texps.pro>
kdebug:start search(file=cmr10.pfb, must_exist=0, find_all=0,
  path=.:~/tex/dvips//:!!/usr/local/texmf/dvips//:
       ~/tex/fonts/type1//:!!/usr/local/texmf/fonts/type1//).
kdebug:search(cmr10.pfb) => /usr/local/texmf/fonts/type1/public/cm/cmr10.pfb
<cmr10.pfb>[1]

8.3 Опции запуска

Ещё одна полезная возможность Web2C — контроль параметров памяти (в особенности размер массивов) при запуске, во время чтения файла texmf.cnf библиотекой Kpathsea. Параметры памяти находятся в части 3 этого файла в дистрибутиве TEX Live. Вот самые важные:

main_memory
Общее количество слов в памяти для программ TEX, Metafont и MetaPost. Вы должны создать новый формат для этих изменений. Например, вы можете создать «огромную» версию TEXа, и назвать соответствующий формат hugetex.fmt. По общим правилам Kpathsea, значение переменной main_memory будет читаться из файла texmf.cnf.
extra_mem_bot
Дополнительная память для «больших» структур, которые создаёт TEX: боксов, клея и т.д. Особенно полезно при использовании PI CTEXа.
font_mem_size
Количество слов информации о шрифтах для TEXа. Это примерно суммарный размер всех файлов TFM, которые читает TEX.
hash_extra
Дополнительный размер хеша для имён команд. Примерно 10 000 команд может быть помещено в основной хеш. Если вы делаете большую книгу со многими перекрёстными ссылками, этого может не хватить. По умолчанию hash_extra равен 50000.

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

9 Благодарности

TEX Live — результат объединённых усилий практически всех групп пользователей TEXа. Это издание TEX Live отредактировано Себастианом Ратцем и Карлом Берри. Другие, работавшие над ним, перечислены ниже

Программы компилировали: Тигран Айвазян (x86_64-linux), Манфред Лотц (i386-freebsd), Фабриций Попинье (win32), Норберт Прейнинг (alpha-linux), Владимир Волович (powerpc-aix, sparc-linux, sparc-solaris), Сташек Ваврикевич (i386-linux), Олаф Вебер (mips-irix), Герберт Виерда (i386-darwin, powerpc-darwin).

Документация и переводы: Карл Берри (английский), Даниэль Флипо и Фабриций Попинье (французский), Гюнтер Партош и Хартмут Хенкель (немецкий), Петр Сойка и Ян Буса (чешский и словацкий), Борис Вейцман (русский), Сташек Ваврикевич (польский).

Разумеется, наша главная благодарность — Дональду Кнуту, во-первых, за разработку TEXа, и во-вторых, за то, что он подарил его миру.

10 История издания

10.1 Прошлое

В конце 1993 года в голландской группе пользователей TEXа во время работы над дистрибутивом 4AllTEX CD для пользователей MS-DOS возникла новая идея. Была поставлена цель создать единый CD для всех систем. Эта цель была черечур сложна для того времени, но она привела не только к появлению очень успешного CD 4AllTEX, но и к созданию рабочей группы Технического Совета TUG по структуре директорий для TEXа (http://tug.org/tds), которя разработала стандарт структуры директорий для системы TEXи указала, как создать логичную единую систему файлов для TEXа. Несколько версий TDS было опубликовано в декабрьском выпуске TUGboat в 1995 году, и с самого начала стало ясо, что следует создать пример структуры на CD. Дистрибутив, который вы держите в руках, — прямой результат работы этой группы. Из успеха 4AllTEX был сделан вывод, что пользователям Юникса также подойдёт такая удобная система, и так родилась другая важная часть TEX Live.

Мы начали делать CD с Юниксом и структурой директорий TDS осенью 1995 года, и быстро поняли, что у teTEXа Томаса Эссера идеальный состав и поддержка многих платформ. Томас согласился нам помочь, и мы в начале 1996 года стали серьёзно работать над дистрибутивом. Первое издание вышло в мае 1996 года. В начале 1997 года Карл Берри завершил новую версию Web2c, которая включила практически все добавки Томаса Эссера в teTEXе, и мы решили основать второе издание на стандартном Web2C, с добавлением скрипта texconfig из teTEXа. Третье издание CD основывалось на новой версии Web2C, 7.2, Олафа Вебера; в то же время была выпущена новая версия teTEXа, и TEX Live включил почти все его новые черты. Четвертое издание следовало той же традиции, используя новую версию teTEXа и Web2C (7.3). Теперь в нём была полная система для Windows.

Для пятого издания (март 2000 года) многие пакеты на CD были пересмотрены и проверены. Информация о пакетах была собрана в файлы XML. Но главным изменением в TEX Live 5 было удаление всех несвободных программ. Всё на TEX Live преполагается совметимым с Debian Free Software Guidelines (http://www.debian.org/intro/free); мы сделали всё, что могли, чтобы проверить лицензии всех пакетов, и мы будем благодарны за любое указание на ошибки.

В шестом издании (июль 2001 года) было много нового материала. Главным была новая концепция установки: пользователь выбирал нужный набор коллекций. Языковые коллекции были полностью реорганизованы, так что выбор любой из них устанавливал не только макросы, шрифты и и т.д., но и вносил изменения в language.dat.

Седьмое издание 2002 года добавило поддержку Mac OS X, и большое количество обновлений для пакетов и программ. Важной целью была интеграция с teTEXом, чтобы исправить расхождение, наметившееся в версиях 5 и 6.

10.1.1 2003

В 2003 году мы продолжили изменения и дополнения, и обнаружили, что TEX Live так вырос, что не помещается на CD. Поэтому мы разделили его на три дистрибутива (см. раздел 2.1, стр.  7). Кроме того:

10.1.2 2004

В 2004 году мы внесли много изменений.

10.2 Настоящее

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

10.3 Будущее

TEX Live не совершенен! (И никогда не будет.) Мы намереваемся продолжать его выпускать раз в год, и хотим добавить справочный материал, утилиты, установочные программы и (конечно) новое, улучшенное и проверенное дерево макросов и шрифтов. Эта работа делается очень занятыми добровольцами в свободное время, и многое остается сделать. Если вы можете помочь, не стесняйтесь.

Присылайте, пожалуйста, замечания и предложения по адресу:

Sebastian Rahtz  /  7 Stratfield Road  /  Oxford OX2 7BG  /  UK
tex-live@tug.org
http://tug.org/texlive

Happy TEXing!

1Несвободными в том смысле, что их нельзя свободно модифицировать и распространять. Это не означает, что вы не можете приобрести их бесплатно.