Главная > Програмное обеспечение > Редакторы/Офисы >
TeX FAQ или Как пропустить Кнута через TeX [5/6]

4. Запуск

Проверку корректности установки будем делать на английском тексте, чтобы не зависеть от деталей неизвестно какой русификации (если она вообще есть в вашей системе).

Попробуйте просто запустить TeX:

tex
при этом должно появиться сообщение типа:
This is TeX, C Version 3.14t3
и приглашение ко вводу:
**
это говорит о том, что система готова исполнять команды. Например, команду "пустая операция":
**\relax
все команды обычно начинаются символом '\' (в некоторых форматах это не так), поэтому в именах файлов, даже в M$-DOG, принято использовать как разделитель каталогов '/'. Приглашение при этом изменится:
*
Когда приглашение имеет вид '**', это значит, что строка, начинающаяся '\' будет интерпретирована как команда, в противном случае считается, что введено имя файла, из которого нужно считать текст документа. То есть, можно ввести
** file
и TeX попытается найти файл file.tex. Вместо этого можно задать
**\input file.txt
и будет предпринята попытка загрузить file.txt (расширение указано явно). Отмечу для *nix'истов: можно указывать путь, но не используя символ '~' (он имеет специальное значение в формате plain TeX, хотя, вообще говоря, в других форматах его применение в имени файла может быть вполне допустимым).

Загруженный файл интерпретируется, как если бы он был введен с клавиатуры, а по его окончании TeX вновь переходит в командный режим и выдает приглашение и мы можем продолжать ввод. Но не будем пока рассматривать этого, а просто введем текст с клавиатуры:

This is TeX, C Version 3.14t3
**\relax

*Hello, \TeX.

*This is the first paragraph.

*
(Please type a command or say `\end')
*This is the second.

*
(Please type a command or say `\end')
*\bye

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

Теперь то же самое со вводом из файла:

first.tex:
Hello, \TeX.
This is the first paragraph.

This is the second.

\bye
Командная строка может быть такой:
tex first.tex
или такой:
tex "\batchmode\input first.tex"
Команда "\batchmode" приводит к тому, что TeX не будет останавливаться на каждой встреченной ошибке, ожидая ваших команд по ее исправлению. Вообще говоря, содержимое командной строки просто интерпретируется TeX'ом как будто оно было введено с клавиатуры, и там могло бы быть все, что угодно, например:
tex "Hello, \TeX. This is the 1st paragraph.\par This is the 2nd.\bye"

Если все прошло, как надо, мы получим два выходных файла: texput.dvi и texput.log. В первом содержится отформатированный текст, а во втором---протокол, в котором фиксируются наши действия и реакция TeX'а. В случае, когда введенный текст содержит ошибки, они будут выведены сюда же. Если ваша система не поддерживает русской символьной таблицы, то в логе для каждого русского символа :-( появится отдельное сообщение, что шрифт "..." не содержит символа "..." Кроме сообщений об ошибках, протоколируются самые различные факты из жизни TeX'а: например, имена вводимых файлов (немаловажно, если документ составной), номера страниц, а также сообщения о переполненных и недополненных боксах (overfull and underfull [hv]boxes), где hbox и vbox соответственно "горизонтальный" и "вертикальный боксы". Эти сообщения нефатальны, их смысл в том, что не удается отыскать удачное разбиение текста на строки/страницы. В TeX принято правило, что если не удается сделать это удачно (например, TeX никогда, если не приказать ему это явно, не пытается растянуть промежутки между словами слишком сильно), то конфликтное слово не разделяется и попросту вылазит на правое поле листа. Сообщение об этом записывается в протокол, а на полях, рядом с местом аварии, ставится черный прямоугольник, отмечающий его. (Английское название --- "slug"). Имеется возможность как гибко управлять автоматическими правилами разбиения, так и задавать свои точки разрыва строки, переноса слова и т.п. Очень существенным для получения красивого вывода является хорошая таблица переносов. Следует с сожалением отметить, что использованная автором зачастую не действует, поэтому при форматировании Кнута, в частности, вы получите множество переполнений. Они не исправлялись вручную, поскольку возможно, что ваша таблица окажется более полной. На всякий случай, вот вкратце способ лечения неправильного переноса: найти в тексте проблемное слово и прямо в нем поставить в нужном месте точку(и) переноса:

обо\-роноспособ\-ность
(Это возможные точки переноса).

Существует и другой способ, который более предпочтителен. С его помощью можно как задать переносы в словах, которые не определяются по имеющейся таблице автоматически, так и задать слова-исключения, если стандартный метод дает неправильное разбиение. (Самые известные случаи становятся анекдотами: Дональд Кнут упоминает в [2], что одна из систем автоматического форматирования текстов умудрилась перенести слово "God", а другая --- "weeknights", но совсем не там, где нужно :).

Вот как это делается. В начале текста задается словарь исключений:

\hyphenation{frame-work ef-fi-ciency Lo-mo-no-sov}
Далее TeX будет использовать этот словарь для поиска точек разрыва слов до того, как обратится к общей таблице. Регистр букв роли не играет. Слова при сопоставлении должны точно совпасть, поэтому придется вводить несколько требуемых форм. (Общая таблица работает не со словами целиком, а с их фрагментами, так что однокоренные слова она переносит "автоматически", в отличие от словаря исключений.)

"Родным" языком TeX является, конечно, английский, но автор спроектировал его с учетом нужд и других языков. Как писал Дональд Кнут в предисловии к русскому переводу "The TeX book", он всегда помнил о том, что "тех"---важное русское слово. Чтобы научить TeX символам кириллицы и правилам переноса, принятым у нас, существуют различные макропакеты "локализации". В качестве примера популярных локализаций можно назвать babel и LaTeX2e. Эти пакеты поддерживают множество различных языков и допускают настройку на новые.

К сожалению, идеального по всем параметрам выбора сделать не удается. Правила ввода текста существенно меняются от пакета к пакету. Например, вместо русских букв в AmSTeX употребляются командные слова, другие требуют явного переключения между языками и т.п. Лучшие позволяют вводить русский текст без каких-либо ухищрений. Вот пример набора текста [Алексей Абрамычев]:

\documentclass[12pt,a4paper]{article}
% "Раскомментируйте" свою кодировку.
% \usepackage[cp1251]{inputenc}
% \usepackage[koi8-r]{inputenc}
\usepackage[russian]{babel}
\begin{document}
Папа у Васи силен в математике, учится папа у Васи весь год.
Навуходоносор.
\end{document}
Этот пример пользователи GNU/Linux могут опробовать в своей системе, выдав команду:
latex example.tex
(конечно, если файл с текстом примера называется example.tex.)

По историческим причинам, для оцифровки Кнута использовался иной пакет русификации, описанный в следующем разделе.


Страница 1 2 3 4 5 6 <<< Предыдущая Следущая >>>


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

Copyright © 2001 - 2002 Olexandr Slobodyan.
Сайт создан в системе uCoz