# Руководство &kdvi;

Stefan
Kebekus

     kebekus@kde.org

Николай
Шафоростов

    admin@program.net.ua

Перевод на русский язык
2001
Stefan Kebekus
&FDLNotice;
2003-09-07
1.10.00

Это руководство описывает &kdvi; 1.0

KDE
linux
TeX
DVI

## Введение

&kdvi; - это модуль к &kviewshell;, который позволяет отображать файлы в формате &DVI; (`.dvi`), созданных в TeX. &kdvi; поддерживает разнообразные расширения стандарта &DVI;, такие как встраивание графики &PostScript; или ссылок. Более подробные примеры и технические спецификации могут быть найдены в файле `KDVI-features.dvi` (`KDVI-features.tex` - исходный файл, пригодный для правки в TeX).

Последние новости можно найти на домашней странице &kdvi;.

TeX - высокопроизводительная система вёрстки, ориентированная на ввод научных, особенно математических выражений. Подробная информация о TeX и &DVI; может быть найдена на домашней странице TeX User Group или наGerman DANTE e.V. (на немецком).

## Запуск &kdvi;

В большинстве случаев, &kdvi; запускается двойным щелчком на файле`.dvi`. Для удобства введена команда `kdvi`, которая запускает &kviewshell; с загруженным модулем &kdvi;. Например: ``kdvi` `somepath/paper.dvi``. Команды типа ``kdvi` `somepath/paper`` или ``kdvi` `somepath/paper.`` также будут работать. Вы можете передать в качестве имени файла &URL;, например: ``kdvi` `http://somepath/paper.dvi``

Если вы указываете имя открываемого файла как &URL;, вы можете указать место файла &DVI;, которое нужно отобразить. Например, команда ``kdvi` `file:paper.dvi#43`` откроет страницу 43. Если вы включили информацию об исходном файле, команда типа ``kdvi` `file:paper.dvi#src:43paper.tex`` приведёт к поиску места в файле &DVI;, которое отвечает строке 43 в файле TeX `paper.tex`. Если вы планируете использовать эту функцию часто, прочтите секцию поиск чтобы узнать, как настроить ваш редактор на автоматический запуск &kdvi;.

На забудьте поставить префикс `file:`. Например, команда ``kdvi` `file:paper.dvi#43`` откроет страницу 43 файла `paper.dvi`. А команда ``kdvi` `paper.dvi#43`` будет пытаться открыть файл`paper.dvi#43`.

Если вы введёте команду ``kdvi` `--unique` `somepath/paper.dvi``, &kdvi; откроет файл, если он ещё не открыт. Иначе окно &kdvi; с требуемым документов будет выведено поверх остальных. Команда типа ``kdvi` `--unique` `file:paper.dvi#43`` может быть использована в скриптах shell чтобы окно &kdvi; выводилось поверх остальных, с открытой страницей 43.

Обычные параметры программ &Qt; и &kde; также работают: ``kdvi` `-style` `windows` `-display` `:0` `-geometry` `400x400+0+0` `-caption` `"DVI"``

## Печать файлов &DVI;

&kdvi; может печатать файлы &DVI;, используя стандартный интерфейс печати &kde;. &kdvi; использует `dvips` для создания &PostScript;, который передаётся принтеру. Для печати из &kdvi; `dvips` должен быть установлен. Для подробностей настройки этой программы см. документацию GNU-texinfo для `dvips` и `dvips.dvi`.

## Экспорт файлов &DVI; в другие форматы

Чтобы сохранить документы в формате &PostScript; или PDF, не нужно перенаправлять выход на печать в файл, встроенные функции экспорта создадут файл в желаемом формате с лучшим качеством, сохраняя некоторые специальные возможностиu формата dvi. Их будет удобнее просматривать в таких программах, как AdobeAcrobat Reader. Функции экспорта можно найти в менюФайл.

### Экспорт в &PostScript;

Как и при печати, для создание файла &PostScript; используется внешняя программа `dvips`. Если файл &DVI; содержит ссылки, они будут учтены. Если вам необходимо получить файл, оптимизированный под конкретный принтер, запустите `dvips` вручную, указав требуемый MetaFont. Подробности указаны в man-странице по `dvips`.

### Экспорт в PDF

Чтобы получить файлы PDF с хорошим качеством, &kdvi; конвертирует &DVI; в PDF, используя внешнюю программу `dvipdfm`. Если она не установлена на вашей машине, используйте функции печати, перенаправив вывод в файл.

При просмотре файлов в Adobe Acrobat Reader, некоторые шрифты могут выглядеть плохо, хотя при печати и просмотре в ghostview всё нормально. Это недоработка в самом Adobe Acrobat Reader, которая, возможно, будет устранена в следующей его версии.

## Встраивание файлов PostScript в &DVI;

Традиционно TeX не встраивал графику в файл &DVI;. Вместо этого в файле &DVI; содержалась ссылка на графический файл, хранившийся на жёстком диске. При этом размер файла &DVI; оставался небольшим, а саму графику можно было править независимо от источника TeX. Этот метод, однако, не позволял с удобством архивировать файл &DVI; или отправлять его по почте, так как нужно было следить за тем, чтобы ссылки в файле &DVI; сохранялись в точности.

Поэтому &kdvi; позволяет встраивать внешние файлы &PostScript; в ваши файлы &DVI;. Чтобы это осуществить, используйте пункт меню Редактировать/встраивать файлы PostScript

Файлы &DVI; со встроенным &PostScript; хорошо работают с большинством других программ обработки &DVI;, например, с xdvi, dvips или dvipdf. Но dvipdfm пока что игнорирует встроенный &PostScript;. Поскольку dvipdfm используется при экспорте в PDF в &kdvi;, с этой функцией будут проблемы. Те же проблемы ожидают и при использовании других программ, где нужен встроенный PostScript, например, в пакете xy макросов TeX.

## Обратный поиск

Обратный поиск используется, если у вас есть исходный документ TeX. Щелчок средней кнопкой мыши (или обеими кнопками сразу на двухкнопочной мыши) в окне &kdvi; приведёт к открытию исходного TeX файла в редакторе и установке курсора на просматриваемом абзаце. Чтобы эта функция работала, выполните следующее:

1. Создайте файл &DVI;, содержащий информацию для обратного поиска. Это описано в разделе Создание файлов TeX для обратного поиска. Для проверке работы этой функции вы можете воспользоваться файлом `KDVI-features.dvi`

2. Выберите редактор в окне Настройки (пункт Настроить DVI меню Настройки). В следующем разделе это окно описывается более подробно.

3. Описания поддерживаемых редакторов можно найти в секции Настройка редактора.

4. Тестирование. Откройте файл &DVI; в &kdvi; и нажмите среднюю кнопку мыши в окне &kdvi;. В редакторе должен открыться файл TeX.

### Создание файлов TeX для обратного поиска

Есть два способа сделать такие файлы: использовать приложение TeX/LaTeX, которое создаёт и включает такую информацию автоматически, или включить дополнительный пакет TeX/LaTeX с требуемой информацией.

- Первый способ, используя приложение TeX, является предпочтительным. См. TeTeX TeX distribution.

- Если у вас нет приложения TeX, скопируйте файлы `srcltx.sty` и `srctex.sty` в каталог с файлом TeX (нажмите левую кнопку мыши, удерживая &Shift;). Если вы используете LaTeX, добавьте строку

          \usepackage[active]{srcltx}

  в начало файла LaTeX. Для простого TeX -

          \include{srctex}

  .

Функция обратного поиска нужна лишь при создании документа, но перед публикацией файла &DVI; лучше удалять ненужную информацию.

### Настройка редактора

Разные редакторы требуют специфические настройки. В этой главе описываются некоторые из них.

#### Emacs

Emacs хорошо поддерживается &kdvi;. Вы можете настраивать его поведение как вам захочется, если есть желание возиться с кодом на Lisp.

&kdvi; использует `emacsclient` для удалённого контроля Emacs.

Команде `emacsclient` требуется, чтобы редактор Emacs был запущен и чтобы Emacs Server был запущен внутри Emacs. Обратный поиск не будет работать оптимально, пока Emacs и Emacs Server не запущены.

Чтобы запустить Emacs Server, нужно:

1. В Emacs набрать `MX `server-start``

2. Добавить строку

           (server-start)

   в ваш файл `.emacs` и перезапустить Emacs

- Чтобы убедится, что Emacs установлен, введите команду `emacs` в консоли.

- Чтобы убедиться, что `emacsclient` также доступен, введите команду ``emacsclient` `имя текстового файла``. Эта команда приведёт к открытию указанного файла в редакторе Emacs.

- Если `emacsclient` выдаёт ошибку, убедитесь, что Emacs запущен. Кроме того, убедитесь, что Emacs Server запущен командой `Mx `server-start``.

- Если вы хотите, чтобы окно с исходным файлом выводилось поверх остальных, добавьте функцию `raise-frame` в server-switch-hook (выполните`Mx `customize-variable` RET `server-switch-hook`` и введите имя функции.

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

  Если вы хотите чтобы документ перечитывался сразу, как в `gnuclient`, добавьте следующие строки в ваш файл `.emacs`:

      (defadvice server-visit-files (around save-buffers last activate)
        "Try to emulate gnuclient behavior with emacsclient.
      Works only for visiting one buffer at a time."
        (let* ((filen (car (car (ad-get-arg 0))))
               (buf (get-file-buffer filen))
               (this-buf-modified-p nil))
          ;;; the following is copied from server-visit-files, with
          ;;; a modification for the `verify-visited-file-modtime' test
          (if (and buf (set-buffer buf))
              (if (file-exists-p filen)
                  ;;; if the file has changed on disk, reload it
                  ;;; using `find-file-noselect'
                  (if (not (verify-visited-file-modtime buf))
                      (progn
                        (find-file-noselect filen)
                        ;;; if user answered `no', reset modtime anyway
                        ;;; so that server-visit-files doesn't realize the
                        ;;; difference:
                        (set-visited-file-modtime)))
                ;;; if file exists no longer, we let server-visit-files
                ;;; deal with that
                t)
            (setq buf (find-file-noselect filen)))
          (setq this-buf-modified-p (buffer-modified-p buf))
          (set-buffer buf)
          (set-buffer-modified-p nil)
          ad-do-it
          (set-buffer-modified-p this-buf-modified-p)))

#### &kate;

К несчастью, в &kate; нет хорошей поддержки обратного поиска. При нажатии средней-кнопки мыши на окне с файлом &DVI; приведёт к открытию всегда нового окна &kate;, даже если он уже запущен и в нём открыт требуемый файл TeX. Самое худшее, &kate; не переместит курсор в начало абзаца.

#### Kile

Система редактирования LaTeX — Kile тесно интегрирована с KDVI. Вам не понадобится делать каких-либо дополнительных настроек. См. сайт Kile.

#### NEdit

NEdit также тесно интегрирован с &kdvi;. Нажатие в окне с файлом &DVI; приведёт к открытию исходного файла в новом окне, если файл TeX уже открыт в NEdit, в открытом новом окне будет отображён изменённый (т.е. ещё не сохранённый) вариант файла. NEdit подсветит первую строку соответствующего абзаца.

1. Чтобы убедиться, что NEdit установлен, введите в консоли команду `nedit`.

2. &kdvi; использует команду `ncl` для удалённого контроля NEdit. Убедитесь, что программа `ncl` доступна, введя ``ncl` `-noask``. Эта команда откроет новое окно NEdit. Если `ncl` не работает, возможно вы используете старую версию NEdit. В этом случае обновите программу, или используйте Редактор, определённый пользователем в окне Настроек.

#### XEmacs

XEmacs хорошо интегрирован с &kdvi;. Поведение этого редактора зависит от его настроек.

&kdvi; использует `gnuclient` для удалённого контроля XEmacs.

Команда `gnuclient` требует, чтобы XEmacs был запущен с программой gnuserv внутри. Обратный поиск не будет работать, пока вы не запустите XEmacs и gnuserv.

Чтобы запустить gnuserv:

- Запустите gnuserv в XEmacs вводя `MX `gnuserv-start``

- Добавьте строку

          (gnuserv-start)

  в ваш файл `.xemacs`. Если вы используете новую версию XEmacs, `.xemacs` будет каталогом. В этом случае добавьте эту строку в `.xemacs/init.el`. Перезапустите XEmacs

Если вы не хотите, чтобы для каждого вызова открывалось новое окно, а текущее выводилось поверх остальных, установите Фрейм Gnuserv в Использовать выбранный, и добавьте функцию `raise-frame` в Visit Hook. Для этого выполните `Mx `customize-group` RET `gnuserv``.

- Убедитесь, что XEmacs установлен. Запустите `xemacs` из командной строки.

- &kdvi; использует команду gnuserv для удалённого контроля XEmacs. Убедитесь, что программа `gnuclient` доступна, введя ``gnuclient` `текстовый_файл`` в командной строке. При этом должно открыться новое окно XEmacs.

- Если gnuserv сообщает об ошибке вида `unable to connect to local`, убедитесь, что XEmacs запущен. Убедитесь также, что gnuserv запущен вводом `MX `gnuserv-start``.

- Если вы не хотите, чтобы для каждого вызова открывалось новое окно, а текущее выводилось поверх остальных, установите Gnuserv Frame в Использовать выделенный, и добавьте функцию raise-frame в Visit Hook. Для этого выполните `MX `customize-group` RET `gnuserv``.

#### VI iMproved / &GUI;

&kdvi; поддерживает `vim`, но не полностью. Исходный файл будет всё время открываться в новом окне, даже если `vim` уже загружен и в нём открыт требуемый TeX файл.

- Убедитесь, что VIM/GUI установлен. Попробуйте выполнить `gvim` из командной строки.

## Прямой поиск

Прямой поиск позволяет перейти на строку файла TeX, соответствующую определённой области файла DVI. Эту функцию поддерживают только Emacs и XEmacs.

Для использования этой функции:

- Настройте редактор (см. ниже).

- Добавьте информацию об исходном файле в файл &DVI;, например, используя пакет `srcltx`. Это подробно описано в секции Создание файлов TeX для обратного поиска.

- Если Emacs настроен правильно, вы можете нажать `&Ctrl;X &Ctrl;J` , и в &kdvi; откроется результирующий файл в месте, соответствующем позиции курсора в редактируемом файле TeX.

### Настройка редактора для прямого поиска

#### Emacs

Для использования в Emacs:

- Загрузите скрипт для Emacs, `kdvi-search.el` (нажмите &Shift; и левую кнопку мыши) и сохраните его в месте, доступном для Emacs, например в `emacs-scripts`.

- Добавьте строки

      (add-to-list 'load-path (expand-file-name "~/emacs-scripts/"))
      (require 'kdvi-search)
      (add-hook 'LaTeX-mode-hook (lambda () (local-set-key "\C-x\C-j" 'kdvi-jump-to-line)))
      (add-hook 'tex-mode-hook (lambda () (local-set-key "\C-x\C-j" 'kdvi-jump-to-line)))

  в ваш файл `.emacs`. Перезапустите Emacs.

- Откройте Emacs, загрузите файл TeX, создайте соответствующий файл &DVI; и, либо введите команду `Mx `kdvi-jump-to-line``, или нажмите `&Ctrl;X &Ctrl;J` . Редактор Emacs может спросить имя главного файла (master file), если вы создаёте файл TeX, который включает другие файлы: главный файл - это файл наивысшего уровня, который содержит остальные файлы. При этом Emacs может предложить сохранить имя главного файла как локальную переменную, т. е. как комментарий в конце файла.

- Чтобы убедится, что Emacs установлен, введите команду `emacs` в консоли.

- Если Emacs выдаёт сообщение об ошибке запуска &kdvi;, вы можете найти его выход в буфере kdvi-output.

#### Kile

Если вы используете Kile, настройка не требуется.

#### XEmacs

Чтобы настроить XEmacs, следуйте инструкциям настройки Emacs выше, только измените ваш файл `.xemacs` вместо `.emacs`. Если вы используете новую версию XEmacs, `.xemacs` может быть каталогом, в этом случае добавьте приведённые строки в конец файла `.xemacs/init.el`.

## Диалог Настройки

Окно Настройки можно открыть через меню Настройки DVI — Настройки.

Окно содержит две вкладки: Шрифты и Вставки DVI.

### Шрифты

Снимок экрана с данным окном.

Вкладка Шрифты
Вкладка Шрифты

Режим Metafont

  Шрифты, которые &kdvi; должен использовать для отображения. Отображение можно улучшить правильными установками этого параметра. Тем не менее, если вы не эксперт и не знаете, что такое `MetaFont`, не нужно ничего изменять. Для подробностей см. Часто задаваемые вопросы.

  Безопасные значения: 1200 dpi / Lexmark (хорошее качество) или 600 dpi / LaserJet 4 (среднее качество/быстрое отображение).

Генерировать отсутствующие шрифты

  Включите эту опцию, чтобы &kdvi; вызывала программу `MetaFont` для отображения растровых шрифтов.

### Вставки DVI

Снимок окна с вкладкой "Вставки DVI".

Вкладка Вставки DVI
Вкладка Вставки DVI

Показать PostScript-вставки

  Отображать графику &PostScript;, встроенную в файл &DVI;.

  Если внешний файл &PostScript; не найден, &kdvi; на его месте отобразит соответствующее сообщение. Отображение &PostScript; очень медленно реализовано в текущей версии &kdvi;. При отключённой опции на месте рисунка будут пустые рамки.

  Нет стандартного способа вставить графику &PostScript; в файл &DVI;. Поэтому &kdvi; не всегда может правильно отобразить такую графику. В отличие от старых версий `xdvi` и `dvips`, программа не поддерживает выполнение внешних команд, т. к. это небезопасно. Инструкции, как правильно вставить графику &PostScript;, можно найти в документе `KDVI-features.dvi`.

Показывать ссылки

  Включите эту опцию, чтобы выделить ссылки в тексте. Ссылки будут синего цвета и подчёркнуты.

Редактор для обратного поиска

  Если вам потребуется использовать обратный поиск (имея исходный файл TeX), здесь нужно указать редактор, в котором нужно открывать исходный файл. На снимке выбран редактор NEdit. Если вы выбрали один из предусмотренных редакторов в выпадающем списке, вам не нужно больше ничего настраивать. В противном случае, отметьте Редактор, определённый пользователем из того же списка и введите командную строку, с которой нужно запускать ваш редактор. Шаблоны: %f - имя исходного файла TeX; %l номер строки.

  Если вам удалось настроить другой редактор, пришлите по адресу kebekus@kde.org его командную строку и описание по его настройке.

## Часто задаваемые вопросы

Что значит сообщение `KDVI генерирует растровые шрифты`, и почему операция проходит так долго?

Большинство шрифтов, используемых в файлах TeX, нужно сгенерировать системой MetaFont. Metafont - это язык, похожий на TeX (включается в дистрибутив TeX), который считывает описание символов и создаёт их растровое представление (в виде файла `.pk`).

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

Что такое режим MetaFont?

Для создания специальных шрифтов, оптимизированных для конкретного принтера,Metafont использует базу данных принтеров, которая находится в файле `modes.mf`. Режим Metafonts устанавливает поле в этой базе данных. Например, имя ljfour соответствует полю для &Hewlett-Packard; LaserJet 4. Режим MetaFont содержит разрешение. Например LaserJet может печатать в разрешениях 300 и 600 dpi.

## Благодарности и лицензия

&kdvi;

&kdvi; основана на отдельном приложении &kdvi; 0.4.3, созданном Markku Hihnala, которое основано на приложении xdvi версии 18f, которая имеет несколько авторов.

Авторские права на документацию (С) 2001, Stefan Kebekus kebekus@kde.org

Николай Шафоростовshafff@ukr.net

&underGPL; &underFDL;

&documentation.index;