RefTeX это пакет для работы с метками, ссылками, ссылками на литературу и записями в индексе. Пакет поддерживает работу со всеми основными режимами для LaTeX'а, и имеет поддержку для работы с документами, состоящими из нескольких файлов. Пакет поставляется с достаточно большим руководством, которое подробно описывает каждый из моментов работы с пакетом. RefTeX реализует следующие возможности:
RefTeX написан Carsten Dominik, и в настоящее время, им и сопровождается. Вы можете найти дистрибутив пакета и прочую информацию относящуюся к нему на сайте автора.
В целом, работу с пакетом RefTeX можно разделить на несколько больших частей:
Команды могут выполняться с помощью привязок клавиш, стандартных средств выполнения
команд, или используя меню Ref
, которое появляется при использовании пакета RefTeX.
Все буфера, в которых происходит работа, имеют привязки клавиш, которые работают сходным образом:
?
— получение справки о работе в буфере;n
— переход к следующему элементу;p
— переход к предыдущему элементу;q
— выйти из буфера;k
— удалить буфер;g
— перестроить буфер;SPC
— переход к соответствующему элементу в другом окне (но окно не становится
активным);TAB
— переход к соответствующему элементу в другом окне;RET
(или Mouse-2
) — перейти к выбранному элементу, и спрятать буфер;f
— переключает режим следования (при работе в этом режиме в другом окне отображается
раздел соответствующий текущему элементу);r
и C-r
— заново разобрать часть или весь документ для формирования соответствующего
буфера.Получить таблицу оглавления можно получить с помощью сочетания клавиш C-c
=
. Таблица отображается в отдельном буфере, который называется *toc*
. По умолчанию,
в этом буфере отображается только список разделов документа, однако, используя клавиши l
и
i
, вы легко можете получить список всех меток и вхождения индексов в документе.
Перемещаясь по буферу пользователь может быстро переходить к нужным разделам документа.
Для работы с содержимым буфера используется набор клавиш. Кроме стандартных клавиш, перечисленных в разделе общие команды, пользователю доступны следующие команды:
N z
— переход к разделу номер N;t
— задать глубину отображаемых разделов;С действиями, которые выполняются с помощью других клавиш вы можете ознакомиться в руководстве по RefTeX. На разбор документов, и отображение результатов разбора, влияет некоторое количество переменных и функций, с которыми мы ознакомимся в разделе Настройка.
Мы можем рассматривать работу с пометками с двух сторон — создание меток, и их использование.
Для создания метки использует сочетание клавиш C-c (
(или команда reftex-label
). В
зависимости от контекста, RefTeX может адаптировать метку к текущему контексту. Обычно к
имени метки добавляется небольшой префикс, который позволяет отличать метки для картинок,
от меток для таблиц и т.п. Способ создания меток может изменяться в зависимости от
значения переменной reftex-insert-label-flags
, который мы рассмотрим в разделе Настройка..
Для того, чтобы сослаться на метку, используется сочетание клавиш C-c )
(или команда
reftex-reference
). Также как и при вставке метки, RefTeX пытается вычислить контекст в
котором используется ссылка, и вставить часть имени. При вставке имени метки вы можете
использовать буфер со списком определенных в документе меток. Работа с буфером аналогична
работе с буфером, содержащим оглавление документа. Однако, в отличии от оглавления
документа, вы можете ссылаться на несколько меток, помечая их с помощью клавиши m
, и затем
используя клавишу RET
при окончании выбора.
RefTeX распознает большое количество окружений LaTeX, как входящих в стандартный набор окружений, так и в разные, не совсем стандартные окружения. Полный их список имеется в руководстве к пакету. Кроме этого, вы можете заставить RefTeX распознавать ваши собственные окружения. Об этом вы можете прочитать в разделе "Defining Label Environments", руководства по RefTeX. Также, RefTeX умеет ссылаться на метки, определенные в других документах, работая совместно со стилем LaTeX, который называется xr, и учитывать возможности, предоставляемые пакетами varioref и fancyref.
Результаты поиска меток отображаются в отдельном буфере, по которому вы можете перемещаться с помощью команд, перечисленных в разделе общие команды. Однако, для работы с пометками, в данном буфере определены дополнительные команды:
m
— помечает текущую запись. При использовании клавиши RET
, все помеченные записи
будут вставлены как отдельные макросы \ref
. Для этой команды существуют дополнительные
модификаторы "- + ,
", которые определяют разделители между вставляемыми записями.u
— снимает пометку с текущей записи;a
— помещает помеченные записи в виде списка для одного макроса \ref
;TAB
— вводит имя пометки, с возможностью дополнения имени. Тут вы можете ввести имя
метки, которое еще не существует;v
— включает и отключает использование макроса \vref
вместо \ref
. Макрос \vref
определяется пакетом varioref;V
— циклически переключается между использованием макросов \ref
, \fref
и \Fref
.
Последние два макроса определены в пакете fancyref;s
— вызывает переключение на другую категорию меток;x
— вставляет ссылку на метку из внешнего документа. Это возможно за счет
использования пакета xr.Кроме вышеперечисленных команд, в буфере работы с метками определены команды, которые
контролируют отображаемую информацию (значения по умолчанию для этих настроек хранятся в
переменной reftex-label-menu-flags
):
c
— переключает отображение одно-строчного контекста определения метки;F
— переключает отображение границ файлов в документе, состоящем из нескольких файлов;t
— переключает отображение таблицы оглавления в буфере;#
— переключает отображение счетчика меток;%
— переключает отображение меток, скрытых в комментариях.Ссылки на литературу создаются в LaTeX с помощью команды \cite
или ее аналогов. Ссылки
могут быть определены в базах данных BibTeX, или указаны явно в документе.
Создание ссылки на литературу производится с помощью команды reftex-citation
(сочетание
клавиш C-c [
). При выполнении данной команды, она запросит у пользователя регулярное
выражение, которое будет использоваться при поиске по базам данных. Поиск производится по
файлам в текущем каталоге, а также по файлам, находящимся в путях, перечисленных в
переменной среды BIBINPUTS
.
После выполнения поиска, его результаты будут представлены в виде буфера, аналогичного буферу результатов вставки ссылок на метки:
m
— помечает текущую запись. Затем все помеченные записи будут использованы при
использовании команд a
или A
;u
— снимает пометку с текущей записи;a
— вставляет все помеченные записи в виде одного макроса \cite
;A
— вставляет все помеченные записи в виде макросов \cite
для каждой из записей.RefTeX поддерживает использование разных стилей ссылок на литературу. Кроме стандартных
механизмов LaTeX, пакет поддерживает работу с дополнительными модулями расширения LaTeX,
такими как natbib, harvard и т.п. Текущий используемый стиль определяется переменной
reftex-cite-format
, которой вы можете присвоить нужное вам значение.
LaTeX поддерживает создание автоматических разделов индексов. Кроме стандартных средств, существует некоторое число пакетов, которые расширяют возможности LaTeX в этой области.
До начала работы с индексами, вы должны сообщить RefTeX о том, какой стиль индексов вы
будете использовать. При использовании AUCTeX, такая настройка будет выполнена
автоматически, однако вы можете выполнить ее и вручную используя пункт Index Style
меню
Ref
или настраивая переменную reftex-index-macros
.
Создание записи индекса для текущего слова или записи, используется команда
reftex-index-selection-or-word
(сочетание C-c /
). По умолчанию, для индекса используется
макрос заданный переменной reftex-index-default-macro
(по умолчанию это \index
).
Используя префиксный аргумент вы можете изменять содержимое индексной записи перед его
вставкой (один префиксный аргумент) или имя макроса индексации (два префиксных аргумента).
Вставка общего макроса индексации производится с помощью команды reftex-index
(сочетание
клавиш C-c <
). При выполнении этой команды, у пользователя запросят имя макроса и его
аргументы.
Для облегчения работы пользователя, RefTeX ведет отдельный файл, в котором собираются
фразы для последующего индексирования. Вы можете попасть в (или создать его) этот файл с
помощью команды reftex-index-visit-phrases-buffer
(сочетание C-c |
). Файл имеет то же
имя, что и основной файл документа, но имеет расширение .rip
. Фразы для индексирования
могут быть собраны во время работы, используя команду
reftex-index-phrase-selection-or-word
(C-c \
), которая копирует выделение или текущее
слово в буфер фраз. При выполнении этой команды, пользователь попадает в буфер фраз, так
что он может изменить скопированное значение, и покинуть этот буфер можно с помощью
сочетания клавиш C-c C-c
, которое вызывает команду reftex-index-phrases-save-and-return
.
Компиляция и отображение индекса производится с помощью команды reftex-display-index
,
которая привязана к сочетанию C-c >
. Принципы работы в отображенном буфере аналогичны
тем, что применяются при работе с другими буферами — меток, ссылок на литературу и
оглавления. Однако, пользуясь данным буфером, пользователь может изменять индексные
записи с помощью следующих команд:
e
— изменяет текущую индексную запись. Используя минибуфер, вы можете задать макрос,
который будет использоваться при определении данной записи;C-k
— уничтожает данную запись;*
— изменяет ключевую часть для данной записи, которая определяет расположение записи
в индексе;|
— изменяет атрибутивную часть записи, которая располагается после вертикальной
черты;@
— изменяет видимую часть записи;(
— изменяет начало свойства диапазона страниц записи;)
— изменяет конец свойства диапазона страниц записи;_
— делает текущую запись частью другой записи;^
— удаляет самую верхнюю запись в иерархии.Пользователь может управлять отображением информации в буфере с помощью следующих команд:
c
— переключает отображение контекста в буфере *Index*
. Значение по умолчанию для
данного свойства определяется переменной reftex-index-include-context
;}
— сужает индекс до показа раздела одного документа. Номер раздела будет
отображаться в индикаторе R<>
строки состояния, а также в заголовке буфера *Index*
;{
— включает показ всех индексных записей документа;<
— при использовании режима сужения индексов, переходит к предыдущему разделу;>
— при использовании режима сужения индексов, переходит к следующему разделу;При работе с буфером индексов, пакет определяет дополнительные команды, которых нет в других буферах:
! A..Z
— выполняет переход на секцию индекса, начинающуюся с соответствующей буквы;s
— переключает на работу с другим индексом (если используется несколько индексов).С помощью пакета RefTeX вы также можете получать информацию о том, из каких частей
документа ссылаются на данный объект. Это выполняется с помощью команды
reftex-view-crossref
, которая привязана к сочетанию клавиш C-c &
. Пользователь также
может использовать привязку S-Mouse2
для аргумента макроса, и пакет выполнит переход на
объект, соответствующий текущему макросу.
#customize
RefTeX поставляется в составе GNU Emacs начиная с версии 20.2 и в составе XEmacs начиная с версии 19.16 и всех XEmacs версии 20. Для XEmacs версии 21 существует пакет, который доступен с основного сайта XEmacs. Так что ручная установка пакета не потребуется. Настройка пакета достаточна проста — вам как минимум надо установить хуки для основных режимов работы с LaTeX, например, с помощью такого кода:
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) (add-hook 'latex-mode-hook 'turn-on-reftex)
первая строка устанавливает хук для режима, предоставляемого пакетом AUCTeX, а вторая для
стандартного режима идущего в составе Emacs. Настройка остальных параметров может быть
осуществлена используя команду M-x customize-group reftex
. Для интеграции с AUCTeX будет
полезным установить переменную reftex-plug-into-AUCTeX
в истинное значение (с помощью
команды M-x customize-variable
, или с помощью кода на Emacs Lisp). Для работы с
документами состоящими из нескольких файлов, желательно установить в истинное значение
несколько переменных, которые позволяют выполнять кеширование информации, а также работы с
неполными документами:
(setq reftex-enable-partial-scans t) (setq reftex-save-parse-info t) (setq reftex-use-multiple-selection-buffers t)
Вы можете настроить эти и другие переменные используя стандартные средства настойки Emacs.
Группа настройки называется reftex
.
Для более точной настройки пакета, в нем определяется два хука —
reftex-load-hook
и
reftex-mode-hook
. Команды первого хука выполняются при загрузке пакета, а команды второго
— при включении режима reftex-mode
.
По умолчанию, RefTeX настроен для работы с английским языком. Для его использования с другими языками, пользователю надо знакомиться с содержимым раздела `Language Support' руководства по RefTeX.
Несмотря на достаточно хорошую реализацию, иногда при работе с данным пакетом могут
возникать различные проблемы, которые часто имеют решения, но требуют некоторых изменений
в оформлении кода или подходу к работе с LaTeX. Для своей нормальной работы пакет требует
от пользователя, чтобы он следовал некоторым правилам оформления документов. Так, команды
\include
, \bibliography
, \input
и \section
должны быть первыми командами на строке, не
считая пробельных символов.
В своей работе RefTeX анализирует весь текст, включая комментарии, поэтому если у вас есть закомментированные блоки с определением меток, то RefTeX может отказать вам в создании меток с существующими именами. Иногда при работе с RefTeX могут возникать проблемы связанные с замедлением работы. Для предотвращения этого, существует несколько советов, которые полностью перечислены в руководстве по RefTeX.
Last change: 05.03.2013 16:54