AUCTeX

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:12, 1 февраля 2017.
AUCTeX
Auctex.png
AUCTeX screenshot
Разработчики: Проект GNU
Операционная система: Кроссплатформенное программное обеспечение
Тип ПО: TeX/LaTeX
Лицензия: GNU GPL
Веб-сайт www.gnu.org/software/auctex/

AUCTeX (AUCΤΕΧ) — это расширяемый пакет для написания и форматирования TeX файлов в Emacs и XEmacs[1].

AUCTeX предоставляет подсветку синтаксиса, умные отступы и форматирование, предпросмотр математических формул и других элементов непосредственно в редактируемом буфере, умную свёртку синтаксических элементов, дополнение макросов и окружений. Он также поддерживает самодокументируемый формат .dtx из проекта LaTeX и, в ограниченной степени, ConTeXt и plain TeX.

AUCTeX был создан на основе пакета ‘tex-mode.el’ из Emacs 16 студентами из Aalborg University Center (сейчас Ольборгский университет), отсюда и название AUCTeX.

TeX-mode не обеспечивает в полной мере полноценной работы с исходными текстами TeX/LaTeX. Для обеспечения более комфортабельной работы с этими файлами, был разработан пакет AUCTeX который обеспечивает следующие возможности:

  • поддержку работы с TeX/LaTeX/ConTeXt;
  • с автоматическим выбором соотвествующего набора команд;
  • подстветку синтаксиса команд TeX;
  • ввод команд, названий разделов и окружений, с использованием дополнения имен и парамаетров;
  • быстрый ввод команд изменения шрифтов;
  • правильный ввод TeX'вских кавычек;
  • вставку математических команд с помощью меню и клавиатуры;
  • запуск внешних команд для обработки исходных текстов и просмотра результатов;
  • показ ошибок компиляции и переход на соответствующее место в исходных текстах;
  • поддержка документов, состоящих из нескольких файлов;
  • скрытие частей документа (fold);
  • поддержка макросов и окружений, предоставляемых специальными стилевыми файлами;
  • возможность создания поддержки для стилевых файлов пользователя.
  • Это только основные возможности пакета. Более подробную информацию вы можете найти в справочных страницах пакета или на сайте Emacs WiKi.

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

Для установки пакета требуется наличие относительно свежих версий GNU Emacs (как минимум версия 21), или XEmacs версии 21. Для обработки файлов с исходными текстами требуется наличие работающего LaTeX. А для сборки пакета также потребуется наличие пакета texinfo.

Сборка пакета производится с помощью стандартных скриптов configure. Тонкая настройка параметров производится с помощью опций configure. После настройки пакета нужно выполнить лишь две команды: make — для сборки, и make install — для установки.

Загрузка пакета производится с помощью следующих команд, помещенных в файл инициализации Emacs:

(setq load-path (cons "~/elisp" load-path))
(require 'tex-site)

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

Работа с пакетом

Работа с пакетом может осуществляться разными способами — через меню, с помощью сочетаний клавиш и используя именованные команды. Команды пакета можно разделить на две группы — команды работы с текстом, и команды обработки исходных текстов[2].

Команды работы с текстом, такие как команды вставки окружений, макросов и т.п., сосредоточены в меню LaTeX, а команды обработки исходных текстов сосредоточены в меню Command.

Редактирование исходных текстов

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

Пакет AUCTeX позволяет пользователю вводить команды разметки TeX удобным способом. Для ввода названий команд TeX могут использоваться стандартные механизмы дополнений Emacs. И кроме того, для многих команд пакет знает какие аргументы им требуются, и запрашивает нужные значения у пользователя. Он даже может различать обязательные и необязательные аргументы. Вставка команды разметки производится с помощью сочетания клавиш C-c C-m или C-c RET, которые вызывают функцию TeX-insert-macro. При вводе имени команды, и аргументов, пользователь может использовать стандартные клавиши работы с дополнениями, такие как TAB. В качестве имени команды, пакет обычно предлагает имя последней введенной команды. Пользователь может также переопределить клавишу \, так, чтобы она вызывала нужную команду для ввода имени макроса, например с помощью следующего кода, помещенного в файл инициализации:

(add-hook 'TeX-mode-hook
'(lambda ()</code>
(local-set-key "\\" 'TeX-electric-macro)))

Кроме этого, пользователь может вводить имена макросов используя сочетание клавиш M-TAB, что позволяет избежать запроса аргументов.

Для ввода команд секционирования пользователь может воспользоваться командой LaTeX-section, привязанной к сочетанию клавиш C-c C-s. При выполнении этой команды, у пользователя запросят имя соответствующей команды, обозначающей раздел документа (при вводе имени, пользователь может использовать механизмы дополнений), заголовок раздела, и имя метки, которая будет связанна с данным разделом. При этом, имя раздела может быть автоматически сгенерировано на основании имени раздела (правда это работает только для латинских названий разделов). При вставке нового раздела, пакет выполняет команды, хранящиеся в переменной LaTeX-section-hook, что позволяет выполнить тонкую настройку поведения данной команды. О том, как можно настроить поведение данной команды, вы можете прочитать в разделе "Inserting chapters, sections, etc." руководства по AUCTeX.

Пакет AUCTeX также позволяет пользователю более удобно вводить команды для обозначения окружений LaTeX, вставляя пару команд \begin{} и \end{}, и также запрашивая параметры для данного окружения, в том случае, если он про него знает. Для вставки команд окружения используется команда LaTeX-environment, привязанная к сочетанию клавиш C-c C-e. Также, как и для предыдущих команд, при вводе имени окружения, пакет позволяет использовать механизмы дополнения, а также использовать историю ввода предыдущих имен. Пакет позволяет работать не только со стандартными окружениями LaTeX, но и учитывает текущий класс документа, а также список загруженных пакетов (это происходит в том случае, если переменная TeX-parse-self имеет истинное значение).

Для вставки команд изменения шрифтов текста, пакет AUCTeX предлагает большое количество функций. Для ускорения ввода, они все привязаны к сочетаниям клавиш, начинающимся с префикса C-c C-f, после которого идет сочетание клавиши Control и буквы, которая обозначает нужный шрифт. Эти команды вставляют соотвествующую команду разметки и помещают курсор между фигурными скобками. В том случае, если вы хотите изменить шрифт для уже написанного текста, то просто выделите область и выполните соотвествующую команду. При работе в математическом режиме, эти команды вставляют соотвестсвующие аналоги. Пакет определяет следующие команды для изменения шрифтов:

  • C-c C-f C-b вставляет команду жирного шрифта \textbf{-!-}
  • C-c C-f C-i вставляет команду шрифта italics \textit{-!-}
  • C-c C-f C-e вставляет команду акцентирования (emphasized) \emph{-!-}
  • C-c C-f C-s вставляет команду наклонного шрифта \textsl{-!-}
  • C-c C-f C-r вставляет команду шрифта roman \textrm{-!-}
  • C-c C-f C-f вставляет команду шрифта sans serif \textsf{-!-}
  • C-c C-f C-t вставляет команду шрифта печатной машинки \texttt{-!-}
  • C-c C-f C-c вставляет команду шрифта SMALL CAPS \textsc{-!-}
  • C-c C-f C-d удаляет окружающую команду изменения шрифта.

В процессе работы с исходными текстами, пакет пытается сделать их более читаемыми за счет использования некоторых вещей — подсветки ключевых слов TeX и LaTeX в тексте, а также за счет вставки отступов для показа отношения между частями текстов. Для вставки нужного отступа может испльзоваться клавиша TAB, или это может быть сделано автоматически при заполнении параграфа с помощью M-q, или для всего буфера, с помощью команды LaTeX-fill-buffer.

Часто неободимо закомментировать область исходного кода TeX или LaTeX. Это можно сделать с помощью команд C-c ; и C-c %. C-c ; закомментирует все строки в выделенной области, а C-c % закомментирует строки текущего параграфа. Наберите C-c ; для того, чтобы раскомментировать все строки выделенной области, или C-c % для раскомментирования всех закомментированных строк параграфа. Эти команды всталяют или удаляют знаки %.

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

Обработка исходных текстов

Все действия по обработке текста в AUCTeX приведены к одному сочетанию клавиш — C-c C-c в зависимости от контекста, данная комманда приводит в вызову LaTeX (или TeX), программы просмотра или печати. Во многих случаях, пакет предлагает правильную команду: если текст изменялся, то предлагается команда компиляции текста — latex или tex в зависимости от контекста; если текст был скомпилирован нормально, то вызывается программа просмотра и т.д. Это же самое касается программ создания индексов и библиографий. Пакет AUCTeX может определить достаточно точно, нужно ли еще раз запускать программу компиляции, но это может происходить не всегда.

В качестве выходого формата вы можете выбрать либо DVI или PDF. Вы можете определять эти и другие параметры выходного файла с помощью нескольких сочетаний клавиш, перечисленных ниже:

  • C-c C-t C-p Переключает между выводом в форматах DVI и PDF;
  • C-c C-t C-i Включает и выключает интерактивный режим;
  • C-c C-t C-s Включает и выключение поддержки специальных тагов исходных текстов;
  • C-c C-t C-o Включает и выкулючает использование Omega/lambda.

При обработке исходного текста, создается временный буфер, в который выводится результат компиляции. Если в файле находится ошибка, то пользователь может переместиться на первую найденную ошибку с помощью сочетания клавиш C-c `. При этом, окно разбивается на два: в верхнем отображается исходный текст, а в нижнем — результат компиляции. После исправления ошибки, можно переместиться на следующую ошибку, используя это же сочетание клавиш. Используя команду TeX-toggle-debug-boxes, привязанную к сочетанию клавиш C-c C-w, можно отображать также предупреждения о переполнение или недополнении боксов.

Если вы хотите обработать только некоторые части документа, то вы можете отметить нужную область и использовать сочетание клавиш C-c C-r для обработки выделенных данных. Выделенная область обрабатывается точно также как и весь документ. При обработке области будет использоваться преамбула основного документа. В том случае, если ваш документ состоит из нескольких файлов, то вы можете обработать текущий буфер с помощью сочетания клавиш C-c C-b. При этом, при компиляции буфера будет использоваться преамбула главного документа.

В том случае, если команда входит в бесконечный цикл, или вы просто хотите завершить ее выполнение, то вы можете исполльзовать сочетание клавиш C-c C-k для ее завершения. Для просмотра вывода команды, который добавляется в конец буфера команды, вы можете использовать сочетание клавиш C-c C-l.

AUCTeX позволяет запустить внешнюю программу для просмотра вашего документа. Обычно это происходит когда пользователь набирает C-c C-c после того, как документ отформатирован, или используя соответствующий пункт меню Command. Команда TeX-view, привязаная к сочетанию клавиш C-c C-v, запускает программу просмотра без подтверждения. Программа просмотра запускается либо для области текста, либо для основного файла, в зависимости от последней использованной команды. Это особенно полезно если вы хотите перейти к точке текста, соответствующей точке в программе просмотра DVI при использовании режима TeX-source-specials-mode.

AUCTeX старается угадать какой тип программы просмотра (DVI, PostScript или PDF) будет использоваться и какие опции должны быть переданы ей. Это решение основывается на файлах результатов, присутствующих в рабочем каталоге, а также на классе документа и используемых стилевых файлах. Например, если в рабочем каталоге находится файл DVI, то будет запущена программа просмотра DVI. А при наличии PDF файла будет запущена программа просмотра PDF. Если пользователь указывает специальный формат бумаги, такой как a5paper или использует опцию landscape, то программе просмотра будут переданы соответствующие опции. Некоторые программы просмотра DVI особенно нуждаются в такой информации для того, чтобы корректно отображать документ. Если используются пакеты pstricks или psfrag, то программа просмотра DVI не сможет корректно отобразить его содержимое, и вместо него будет запущена программа просмотра PostScript.

Информация о типах файлов и стилевых опциях и связанных с ними программах просмотра и соответсвующих опциях хранится в переменных TeX-output-view-style и TeX-view-style.

При обработке исходных текстов с помощью TeX или LaTeX пользователь сможет найти только общие ошибки, но не примеры плохого стиля. Для нахождения стилевых ошибок, таких как потерю пробела после сокращения, или использования ... вместо \ldots и т.п., может использоваться утилита lacheck. Вы можете запустить lacheck с помощью команды C-c C-c Check. В качестве результата, пользователь получит список ошибок в буфере *compilation*. Вы можете использовать теже приемы что и при обработке ошибок компиляции. Кроме lacheck, пользователи могут использовать программу chktex, которая является более настраиваемой, но может не находить всех ошибок, которые находит lacheck.

Работа с частями документа

Пакет AUCTeX предоставляет пользователю мозможность работы с частями документа. Существует два метода работы с частями документов — свертывание (folding) и ранжирование (outlining).

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

Для использования данной возможности, вы должны активизировать TeX-fold-mode, который предоставляет необходимые команды для свертывания и развертывания макросов и окружений. Данный режим можно включить с помощью команды M-x TeX-fold-mode или сочетания клавиш C-c C-o C-f. Вы можете включать этот режим автоматически, воспользовавшись хуками. Например, вот так:

(add-hook 'TeX-mode-hook '(lambda ()
(TeX-fold-mode 1)))

После активации данного режима, пользователю становятся доступны команда свертывания всех макросов и окружений в документе — TeX-fold-buffer (C-c C-o C-b), свертывания текущего макроса — TeX-fold-macro (C-c C-o C-m) и свертывания текущего окружения — TeX-fold-env (C-c C-o C-e). Для того, чтобы развернуть все свернутые объекты может использоваться команда TeX-fold-clearout-buffer (C-c C-o C-x), а для развертывания текущего объекта — команда TeX-fold-clearout-item (C-c C-o C-c). Все команды свертывания используют переменные TeX-fold-macro-spec-list и TeX-fold-env-spec-list для того, чтобы определить какие макросы и окружения необходимо сворачивать, и что отображать вместо свернутых объектов. Если макросы или окружения не перечисленны в указанных переменных, то используются значения переменных TeX-fold-unspec-macro-display-string и TeX-fold-unspec-env-display-string. Все эти переменные доступны для изменения через стандартные механизмы настройки Emacs.

AUCTeX реализует поддержку вспомогательного режима outline, используя команды секционирования LaTeX/ConTeXt в качестве строк заголовков. Просто включите outline-minor-mode и вы сможете скрывать разделы используя стандартные команды. Дополнительные заголовки секционирования могут быть добавлены с помощью переменной TeX-outline-extra. Каждый из элементов списка является списком из двух элементов — регулярного выражения и уровня, которому соотвествует данное выражение. Знак ^ автоматически добавляется в начало каждого регулярного выражения. Для лучшей поддержки режима outline вы можете воспользоваться пакетом out-xtra, который доступен через архив кода Emacs Lisp.

Настройка

Настройка пакета может осуществляться с помощью стандартных средств настройки Emacs — с помощью команды customize-group. Группа настройки называется AUCTeX. В этой группе определено множество переменных, которые будут описаны далее.

Для того, чтобы обеспечить поддержку многих пакетов LaTeX, которые вы хотите использовать в ваших документах, вы должны разрешить парсинг документов, что можно сделать с помощью следующих команд:

(setq TeX-auto-save t)
(setq TeX-parse-self t)

Если вы часто используете команды \include или \input, то вы должны предупредить AUCTeX о том, что вы используете документы из нескольких файлов. Это можно сделать с помощью команды:

(setq-default TeX-master nil)

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

Поддержка разных языков

В настоящее время Emacs и TeX вполне нормально поддерживают языки отличные от английского, но все таки для работы с корейским, китайским и японским, вам могут понадобиться специальные версии Emacs и TeX. Пакет AUCTeX распознает использование пакета inputenc, что позволяет более корректно обрабатывать работу с разными кодировками.

Для более удобной работы с европейскими языками существует несколько пакетов, которые позволяют преобразовывать символы в макросы TeX и обратно, при чтении и записи редактируемых файлов. Сюда относятся пакеты iso-cvt.el, который поставляется вместе с GNU Emacs, x-compose.el, который поставляется с XEmacs, и пакет X-Symbol, который позволяет корректно отображать большое количество математических и других символов (пакет может работать и с GNU Emacs и с XEmacs).

AUCTeX имеет в своем составе поддержку для разных языков. Поддержка каждого из языков реализуется в виде отдельных стилевых файлов, которые улучшают работу AUCTeX. Например, пользователь может добавить автоматическую смену словаря при работе с файлами, которые включают в себя, например, файл dk.sty. Чтобы это работало, вам необходимо включить поддержку разбора файлов. Для каждого из поддерживаемых языков, определяется хук с именем TeX-language-XX-hook, где XX — двух-символьный код языка. В настоящее время поддерживаются датский, голландский, немецкий, итальянский и польский языки.

Автоматическая настройка

AUCTeX пытается произвести самонастройку путем сканирования файлов TeX, выделения из них символов, окружений и т.п. данных. Эта информация позволяет сделать редактирование текстов более удобным. Автоматическая настройка может производиться на трех уровнях. Самый главный уровень — данные, которые используются всеми пользователями системы, и содержащий все стилевые файлы TeX. Вторым уровнем являются файлы, принадлежащие конкретному пользователю, но которые используются в разных проектах. К третьему уровню относятся файлы расположенные в рабочем каталоге. По умолчанию, AUCTeX производит поиск файлов на всех трех уровнях, но вы можете явно задать пути поиска с помощью переменной TeX-style-path. По умолчанию AUCTeX обрабатывает каталоги рекурсивно, но вы можете настроить это поведение с помощью переменной TeX-file-recurse. AUCTeX игнорирует некоторые имена файлов (., .., SCCS, RCS и CVS), которые определены в переменной TeX-ignore-file.

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

Настройки для уровня пользователя хранятся в переменных TeX-macro-private, в которой указывается список каталогов со стилями TeX; TeX-auto-private, в которой указывается каталог для хранения выделенной информации; и TeX-style-private, в которой указывается список каталогов со стилями AUCTeX, написанными вручную. Для перегенерации автоматически выделяемых данных используется фукнция TeX-auto-generate.

Настройка для локального использования проводится с помощью переменных TeX-auto-local, в которой указывается каталог для сохранения автоматически выделенной инфомации (по умолчанию она имеет значение auto) и TeX-style-local, в которой хранится имя каталога со стилевыми файлами. По умолчанию, автоматически выделяемая информация сохраняется каждый раз, когда вы сохраняете ваши файлы.

Создание стилевых файлов

Пользователь AUCTeX может улучшить свою работу с помощью дополнительных стилевых файлов, которые позволяют лучше настроить AUCTeX при использовании конкретных стилевых файлов TeX/LaTeX и/или конкретных команд и окружений.

Функция TeX-add-style-hook позволяет пользователю задать код, который будет выполнен при использовании определенного стилевого файла TeX. Например,

(TeX-add-style-hook "book"
(function (lambda ()
(setq LaTeX-largest-level
(LaTeX-section-level ("chapter"))))))

устанавливает самый главный уровень секционирования равным chapter при использовании стиля book. Аналогичным образом, может добавляться поддержка и других стилевых файлов. Достаточно большое их количество уже определено и поставляется в дистрибутиве AUCTeX (в подкаталоге style).

Основным предназначением стилевого хука является объявление новых макросов и окружений, которые существуют в стилевом файле. Явные объявления используются для указания аргументов макросов, а сами макросы определяются автоматически. Добавление новых макросов выполняется с помощью функции TeX-add-symbols, которой передается список, который в свою очередь состоит из списка первым в котором идет название макроса, а затем идет описание аргументов данного объекта. Если у объекта нет аргументов, то он просто вставляется и точка вставки помещается между фигурными скобками. Если у объекта есть аргументы, то AUCTeX запрашивает их у пользователя.

Для указания аргументов используется некоторое количество функций вида TeX-arg-TYPE, где TYPE указывает на соответствующий тип, и AUCTeX будет проверять вводимые пользователем данные. Описания этих функций смотрите в документации по AUCTeX.

Добавление окружений происходит аналогично добавлению макроса. Добавление новых окружений производится с помощью функции LaTeX-add-environments, которой передаются список списков из имени окружения и описания аргуметов. Для детального описания аргументов, также смотрите в документации по AUCTeX.

Кроме добавления информации о макросах и окружениях, AUCTeX позволяет добавить информацию о библиографиях и метках. Это выполняется с помощью функций LaTeX-add-bibliographies и LaTeX-add-labels соответственно.

AUCTeX пытается автоматически выделить информацию об объектах при разборе стилевых файлов. Он делает это с помощью набора регулярных выражений. Эти выражения хранятся в переменной TeX-auto-regexp-list, которую вы можете изменять, добавляя собственные регулярные выражения. Кроме этого, AUCTeX определяет два хука, которые вызываются перед и после парсинга файла TeX. Они называются TeX-auto-prepare-hook и TeX-auto-cleanup-hook. Вы можете использовать эти хуки для выполнения вашего кода.

Примечания

  1. Все о AUCTeX [Электронный ресурс] / Дата обращения: 31.10.2016. — Режим доступа: http://www.gnu.org/software/auctex/
  2. Работа с TeX/LaTeX с использованием пакета AUCTeX [Электронный ресурс]: Сведения о продукте / Дата обращения: 31.10.2016. — Режим доступа: http://alexott.net/ru/writings/emac-stex/AUCTeX.html