вы получаете возможность воспользоваться специальным режимом, называемым режимом Texinfo, который снабжает вас командами Emacs и дополнительными средствами, которые могут сильно облегчить вашу работу.
вы, вероятно, захотите быстро пролистать эту главу и вернуться к ней уже после изучения разделов, где язык форматирования документов Texinfo описывается более детально.
Режим Texinfo дает вам специальные возможности для работы с Texinfo-файлами:
@node.
Вероятно, две наиболее полезных возможности -- это возможность быстрой вставки часто используемых @-команд и возможность создания меню и указателей на ноды.
дополнительный набор инструментов и команд редактирования. Основное
различие между режимом Text и режимом Texinfo касается заполнения
текста. Переменная, отвечающая за разделение абзацев, и таблица
синтаксиса переопределяются в режиме Texinfo так, чтобы команды Texinfo,
которые должны стоять в своих собственных строках, не были включены в
другие абзацы. Поэтому команда M-q (fill-paragraph)
перезаполняет абзацы, но не смешивает команды, требующие своей строки,
со смежными абзацами.
Кроме того, режим Texinfo устанавливает переменную page-delimiter
равной значению texinfo-chapter-level-regexp главы к другому с помощью
команд C-x ] (forward-page) и C-x [
(backward-page) и сужать буфер до текста главы с помощью команды
C-x p (narrow-to-page). (тшрзСызш Стюцшщ `Страницы' ф Руководство по GNU Emacs, для более подробного
описания команд, работающих со страницами.)
Вы можете называть Texinfo-файл так, как пожелаете, но по соглашению в
качестве расширения следует выбрать одно из этих: `.texinfo',
`.texi', `.txi' или `.tex'. Для использования
предпочтительно более длинное расширение, так как оно однозначно
определяет тип файла. Более короткое расширение необходимо использовать
в тех случаях, когда операционная система ограничивает длину имени
файла. GNU Emacs автоматически входит в режим Texinfo, если вы
обратитесь к файлу с расширением `.texinfo', `.txi' или
`.texi'. Кроме того, Emacs переходит в режим Texinfo, если в теле
файла в его первой строке присутствует текст `-*- texinfo -*-'.
Если вы находитесь в другом режиме и желаете переключиться в режим
Texinfo, выполните команду M-x texinfo-mode.
Естественно, как и другие возможности Emacs, режим Texinfo может быть расширен и настроен так, как вы этого пожелаете. В частности, очень легко изменить привязку ключей. Здесь описываются сделанные по умолчанию или стандартные привязки ключей.
Режим Texinfo дает возможность быстро вставлять часто используемые @-команды в буфер редактирования. Вы можете использовать эти команды для уменьшения времени набора команд.
Чтобы вызвать команды вставки, следует дважды набрать C-c и затем нажать первый символ @-команды:
@code{} и поместить точку между фигурными скобками.
@dfn{} и поместить точку между фигурными скобками.
@end и попытаться добавить правильно следующее слово,
такое как `example' или `table'. (Эта команда не может
правильно обрабатывать вложенные списки, зато вставляет слово, наиболее
соответствующее предшествующему списку).
@item и поместить точку в начале следующей
строки.
@kbd{} и поместить точку между фигурными скобками.
@node и добавить строку комментария, перечисляющую
последовательность нод `Next', `Previous' и `Up'. Оставить точку после
@node.
@noindent и поместить точку в начале следующей строки.
@samp{} и поместить точку между фигурными скобками.
@table, затем вставить SPC и поместить точку
после SPC.
@var{} и поместить точку между фигурными скобками.
@example и поместить точку в начале следующей строки.
{} и поместить точку между фигурными скобками.
Для того, что бы вставить команду, такую как
@code{...} вокруг существующего слова, надо
установить точку перед этим словом и ввести последовательность C-u
1 C-c C-c c. Это облегчает редактирование уже существующего обычного
текста. Величина параметра, следующего за C-u, сообщает Emacs
сколько слов после точки следует заключить между фигурными скобками:
`1' -- только одно слово, `2' и поместит точку между фигурными
скобками. Это сработает только для тех @-команд, которые действуют на
слово или на слова внутри одной строки, вроде @kbd и
@var.
Этот набор команд вставки был создан после анализа частоты, с которой различные @-команды используются в Руководстве по GNU Emacs и в Руководстве по GDB. Если вы желаете добавить ваши собственные команды быстрой вставки, вы можете привязать к ключу макрос клавиатуры, использовать сокращение или расширить код в `texinfo.el'.
C-c C-c C-d (texinfo-start-menu-description из трех частей: имени
пункта меню, имени ноды и описания. Требуется только имя ноды, но
описание сильно помогает объяснить, о чем говорится в разделе
описываемой ноды. тшрзСызш Стюцшщ Составные части меню.)
Чтобы использовать texinfo-start-menu-description, установите
точку в строку пункта меню, и введите C-c C-c C-d это текст. Эта функция не
вставляет заголовок, если данный пункт меню уже содержит
описание.
в имени ноды, но полезное описание использует другие слова.
Вы можете визуализировать структуру разделов Texinfo-файла, используя
команду C-c C-s (texinfo-show-structure). Эта команда
показывает структуру разделов Texinfo-файла, перечисляя строки, которые
начинаются с @-команд, а именно, с команд @chapter,
@section и подобных. Эта команда создает такую же структуру,
какую представляет из себя оглавление. Эти строки отображаются в другом
буфере, называемом `*Occur*'. В том буфере вы можете установить
курсор на одной из этих строк и воспользоваться для перехода к
соответствующему разделу в Texinfo-файле последовательностью C-c
C-c (occur-mode-goto-occurrence).
@chapter, @section, и подобные строки
Texinfo-файла.
Если вы вызываете texinfo-show-structure с префиксным аргументом,
набирая C-u C-c C-s, это перечислит не только строки с
@-командами, такими как @chapter, @section и подобными,
но также и строки @node. Вы можете использовать
texinfo-show-structure с префиксным аргументом для того, чтобы
проверить, являются ли указатели `Next', `Previous' и `Up' в строке
@node правильными.
Часто, когда вы работаете над руководством, вам будете нужна только
структура текущей главы. В этом случае вы можете выделить область
буфера, структура которой вам нужна, используя команду C-x n n
(narrow-to-region), и texinfo-show-structure будет
действовать только в этой области. Чтобы снова увидеть весь буфер,
следует использовать C-x n w (widen). (тшрзСызш Стюцшщ `Сужение' ф Руководство по GNU Emacs, для получения детальной
информации.)
Помимо предоставления команды визуализации структуры документа,
texinfo-show-structure, режим Texinfo устанавливает значение
переменной разделителя страницы таким образом, чтобы она соответствовала
@-командам уровня глав. Это дает вам возможность использовать команды
C-x ] (forward-page) и C-x [ (backward-page)
для перемещения вперед и назад по главам, а команду C-x p
(narrow-to-page) -- для сужения до главы. тшрзСызш Стюцшщ `Страницы' ф Руководство по GNU Emacs, для получения
дополнительной информации.
-- обновление Texinfo-файла после его редактирования; но вы
можете использовать их, чтобы вставить указатели `Next', `Previous' и
`Up' в строку @node, если их там еще нет, или создать меню в
файле, в котором его пока нет.
Если вы не пользуетесь командами обновления, то вам придется набирать меню и указатели на ноды вручную, а это утомительное занятие.
Вы можете использовать следующие команды обновления, чтобы
Вы можете использовать эти команды для обновления всех нод и меню в выделенной области или во всем Texinfo-файле.
после
каждой строки @node, если только это не строка @node для
ноды `Top'. (Строка с командой описания структуры глав -- это
строка, начинающаяся с @chapter, @section или с другой
подобной команды.)
Вы можете вставить строку с командой описания структуры глав либо вслед
за строкой @node, либо в строке, которая следует после одиночной
строки комментария @comment, либо после одиночной строки
@ifinfo. Вы не можете вставить между строкой @node и
строкой с командой описания структуры глав больше одной строки; и
вставить вы можете только строку @comment или строку
@ifinfo.
Команды, которые действуют на весь текст в буфере, требуют, чтобы вслед
за нодой `Top' следовала нода с командой @chapter или с
эквивалентной по уровню командой. Команды обновления меню не будут
создавать основное или главное меню для Texinfo-файла, который имеет
ноды только уровня @chapter! Команды обновления меню создают
меню только внутри нод для нод более низкого уровня. Чтобы
создать меню глав, вы должны предоставить ноду `Top'.
можете использовать перекрестные ссылки на другие Info-файлы. Ни одна из команд обновления не затрагивает перекрестные ссылки.
нод или меню
во всем файле; и одна команда, texinfo-master-menu
Команда texinfo-master-menu является основной
командой:
texinfo-master-menu требуется, чтобы
Texinfo-файл содержал ноду `Top' и по крайней мере еще одну уровнем
ниже.
После обширного редактирования Texinfo-файла вы можете ввести следующую
команду:
C-u M-x texinfo-master-menu или C-u C-c C-u mЭта команда полностью обновляет все ноды и меню за один проход.
Остальные основные команды обновления выполняют работу меньшего объема и предназначены для человека, который обновляет ноду и меню в процессе создания Texinfo-файла.
Далее перечислены оставшиеся основные команды обновления:
@node).
Если указатели `Next', `Previous' и `Up' уже были в строке
@node, то старые указатели удаляются и на их место помещаются
обновленные. При запуске этой команды с аргументом (с префиксным
аргументом, C-u, при интерактивном вызове), команда действует на
все строки @node в выделенной области.
texinfo-make-menu обновляет существующее меню,
описания из этого меню включается в новое. Это достигается с помощью
копирования описаний пунктов существующего меню в те пункты нового меню,
которые имеют те же имена нод. Если пункты меню различаются, то
описания в новое меню не копируются.
texinfo-all-menus-update
обновляет его; но она не создает новое главное меню, если его не
существует. (Для этого используйте команду
texinfo-master-menu.)
При работе над документом, в котором главное меню не нужно, можно
сделать следующее:
C-u C-c C-u C-a или C-u M-x texinfo-all-menus-updateЭто модифицирует все ноды и меню.
Переменная texinfo-column-for-description определяет позицию, по
которой выровнены описания меню. По умолчанию она равна 32, хотя часто
бывает полезно уменьшить ее до 24. Вы можете установить эту переменную
с помощью команды M-x edit-options, (ТшрзСызш Стюцшщ `Editing Variable Values' ф Руководство по GNU Emacs)
или с помощью команды M-x set-variable (ТшрзСызш Стюцшщ `Examining and Setting Variables' ф Руководство по GNU Emacs).
Также, команда texinfo-indent-menu-description может
использоваться, чтобы выровнять существующие описания меню по
определенной позиции. И наконец, если вы пожелаете, то вы можете
использовать команду texinfo-insert-node-lines, чтобы вставить в
файл недостающие строки @node. (тшрзСызш Стюцшщ Другие команды обновления, для дополнительной информации.)
чем на один уровень за один раз: вслед за нодой `Top' должна начинаться глава, и ни в коем случае не раздел; вслед за главой следует раздел, но не подраздел. Однако, вы можете за один раз "подняться" на любое число уровней, например от подраздела до главы.
Каждая строка @node за исключением строки для ноды `Top'
должна сопровождаться строкой с командой структурирования вроде
@chapter, @section или @unnumberedsubsec.
Каждая комбинация (строка @node)/(строка команды
структурирования) должна выглядеть подобно этой:
@node Комментарии, Минимум, Соглашения, Обзор @comment node-name, next, previous, up @section Комментарии
Или подобно этой (без строки @comment):
@node Комментарии, Минимум, Соглашения, Обзор @section Комментарии
определена как
указатель`Up'. (Вместо строки @comment вы можете также вписать
строку @ifinfo.)
Если файл имеет ноду `Top', то она должна назваться `top' или `Top' и быть первой нодой в файле.
Команды обновления меню создают меню разделов внутри главы, меню подразделов внутри раздела и так далее. Это означает, что если вы хотите получить меню глав, у вас должна быть нода `Top'.
Команда makeinfo может создать Info-файл из иерархически
организованного Texinfo-файла, в котором отсутствуют указатели `Next',
`Previous' и `Up'. Как следствие этого, если вы уверены, что ваш
Texinfo-файл будет отформатирован с помощью makeinfo, команды
обновления меню вам не нужны. (тшрзСызш Стюцшщ Создание Info-файла, для более
детальной информации о makeinfo.) Однако, и makeinfo,
и команды texinfo-format-... требуют, чтобы вы вставили в
файл меню.
Кроме пяти основных команд обновления, режим Texinfo дает доступ к несколько менее часто используемым командам обновления:
@node перед @chapter @section,
и другими командами структурирования, если они отсутствуют.
При запуске с аргументом (с префиксным аргументом, C-u, при
интерактивном вызове), команда texinfo-insert-node-lines не
только вставляет строки @node, но также вставляет и названия
глав или разделов в качестве имен соответствующих нод. Кроме того, она
вставляет названия в качестве имен нод в уже существующие строки
@node, не имеющие имен. Так как имена нод должны быть более
краткими, чем названия разделов или глав, вы должны вручную
отредактировать вставленные имена.
Например, для того, чтобы выделить весь буфер и везде вставить строки
@node и названия, следует сделать это:
C-x h C-u M-x texinfo-insert-node-linesЭта команда вставляет в качестве имен нод в строках
@node
названия разделов; команда texinfo-start-menu-description
(ТшрзСызш Стюцшщ Быстрая вставка часто используемых команд.)
вставляет названия как описания пунктов меню -- это разные действия.
Однако в обоих случаях вы должны отредактировать вставленный текст.
texinfo-multiple-files-update описана в приложении о
включаемых файлах.
тшрзСызш Стюцшщ texinfo-multiple-files-update.
texinfo-indent-menu-description выравнивает каждое описание в
каждом меню в выделенной области. Однако, эта команда не выравнивает
вторые и последующие строки многострочного описания.
texinfo-sequential-node-update
последовательно обновляет все ноды в области.
Режим Texinfo обеспечивает отдельные команды для форматирования части или всего Texinfo-файла для Info. Часто, когда вы пишете документ, вы хотите отформатировать только часть файла -- то есть некую область.
Вы можете использовать команду texinfo-format-region или
makeinfo-region, чтобы отформатировать область:
Вы можете использовать команду texinfo-format-buffer или
makeinfo-buffer для того, чтобы отформатировать весь буфер:
Например, после создания Texinfo-файла вы можете набрать следующее:
C-u C-c C-u m или C-u M-x texinfo-master-menu
Это модифицирует все ноды и меню. Затем наберите следующее, чтобы создать Info-файл:
C-c C-m C-b или M-x makeinfo-buffer
Для того, чтобы могли работать TeX или команды форматирования для
Info, в заголовке файла должна быть строка @setfilename.
тшрзСызш Стюцшщ Создание Info-файла, для более подробного описания форматирования для Info.
указатели.
Чтобы сделать это, вы должны выполнить команду texindex после
первичного выполнения команды tex; а затем выполнить команду
tex снова. Или следует выполнить команду texi2dvi,
которая сама автоматически создает именные указатели.
(ТшрзСызш Стюцшщ Форматирование с помощью texi2dvi).
Часто, когда вы пишете документ, вы хотите вывести на печать только
часть файла, чтобы увидеть, как она будет выглядеть. Для этой цели вы
можете использовать команду texinfo-tex-region или похожие
команды. Используйте команду texinfo-tex-buffer, чтобы
отформатировать весь буфер.
texi2dvi для буфера. Помимо запуска TeX
для буфера, эта команда автоматически создает или обновляет именные
указатели.
texindex, чтобы отсортировать именные указатели
Texinfo-файла, отформатированного с помощью команды
texinfo-tex-region. Команда texinfo-tex-region не
запускает texindex автоматически; она только выполняет команду
tex. Вы должны запустить команду texinfo-tex-region во
второй раз после сортировки необработанного именных указателей командой
texindex. (Обычно, когда форматируют область, именные
указатели не формируют; это делается только для всего буфера. Сейчас,
когда существует команда texi2dvi, обсуждаемая команда
практически не нужна.)
texinfo-tex-buffer или texinfo-tex-region.
Для того, чтобы команда texinfo-tex-region или
texinfo-tex-buffer сработала, файл должен начинаться со
строки `\input texinfo' и должен включать строку @settitle.
Файл должен заканчиваться командой @bye, набранной в отдельной
строке. (Когда вы используете команду texinfo-tex-region, вы
должны окружить @settitle строками start-of-header и
end-of-header.)
тшрзСызш Стюцшщ Форматирование и печать твердой копии, для подробного описания других команд для TeX, вроде
tex-show-print-queue.
Каждый набор команд режима Texinfo имеет привязки по умолчанию, начинающиеся с одних ключей. Все команды, созданные специально для режима Texinfo, начинаются с C-c. Ключи отчасти мнемонические.
Команды вставки вызываются с помощью набора двух C-c и затем первого символа вставляемой @-команды. (Вероятно правильнее было бы для мнемоничности использовать C-c C-i, от `custom insert', но C-c C-c набирается гораздо быстрее.)
C-c C-c c Вставить `@code'. C-c C-c d Вставить `@dfn'. C-c C-c e Вставить `@end'. C-c C-c i Вставить `@item'. C-c C-c n Вставить `@node'. C-c C-c s Вставить `@samp'. C-c C-c v Вставить `@var' описания в пункте меню.
Команда texinfo-show-structure часто используется внутри суженной
области.
C-c C-s Перечислить все заголовки.
Команда texinfo-master-menu создает главное меню; может
использоваться для того, чтобы модифицировать каждую ноду и каждое меню
в файле.
C-c C-u m M-x texinfo-master-menu
Создать или обновить главное меню.
C-u C-c C-u m С C-u в качестве префиксного
аргумента, сначала создать или обновить
все ноды и обычные меню, а затем
создать главное меню.
Команды обновления указателей вызываются при наборе C-c C-u и
затем или C-n для texinfo-update-node, или C-e для
texinfo-every-node-update.
C-c C-u C-n Обновить ноду. C-c C-u C-e Обновить все ноды в буфере.
Команды обновления меню вызываются при наборе C-c C-u, и затем или
C-m для texinfo-make-menu, или C-a для
texinfo-all-menus-update. Чтобы обновить и ноды, и меню в одно и
то же время, перед набором командной последовательности C-c C-u
C-a наберите C-u.
C-c C-u C-m Создать или обновить меню.
C-c C-u C-a Создать или обновить все
меню в буфере.
C-u C-c C-u C-a С префиксным аргументом C-u,
сначала создать или обновить все ноды,
а затем создать или обновить все меню.
Команды форматирования для Info, которые написаны на языке Emacs Lisp, вызываются при наборе C-c C-e и затем или C-r для выделенной области, или C-b для всего буфера.
Команды форматирования для Info, которые написаны на Си и основаны на
программе makeinfo, вызываются при наборе C-c C-m и
затем или C-r для выделенной области, или C-b для всего
буфера.
Использование команды texinfo-format...:
C-c C-e C-r Форматировать область. C-c C-e C-b Форматировать буфер.
Использование makeinfo:
C-c C-m C-r Форматировать область. C-c C-m C-b Форматировать буфер. C-c C-m C-l Обновить выходной буферmakeinfo. C-c C-m C-k Прекратить выполнениеmakeinfo.
Команды набора и печати через TeX вызываются при наборе
последовательности C-c C-t и затем другой управляющей
последовательности: C-r для texinfo-tex-region, C-b
для texinfo-tex-buffer и так далее.
C-c C-t C-r Выполнить TeX для области. C-c C-t C-b Выполнитьtexi2dviдля буфера. C-c C-t C-i Выполнитьtexindexформатирования в TeX. C-c C-t C-x Выйти из приостановленного задания форматирования в TeX. C-c C-t C-l Обновить выходной буфер.
Для вызова остальных команд обновления нет стандартных ключей, потому что они используются редко.
M-x texinfo-insert-node-lines
Вставить пропущенные строки @node
в области. С префиксным аргументом C-u C-u 2 Вставить указатели на ноды в строгой
последовательности.
| Главная |