Команды для естественных языков – ЧАСТЬ 6

Обычно имя файла,  передаваемое  этим командам, пишется в конце  командной строки:  например, ‘latex имяфайла’. Однако в некоторых случаях имя файла должно быть вставлено в команду; это может понадобиться, к примеру, когда вам нужно предоставить имя файла в качестве аргумента команде, чей вывод направляется другой программе.  Вы можете указать, в какое место следует подставить имя файла, с помощью знака ‘*’ в командной строке. Например,

(setq  tex-dvi-print-command "dvips  -f * | lpr")

Терминальный вывод TEX, включающий все сообщения об ошибках, появляется в буфере с именем ‘*tex-shell*’. Если TEX  получил ошибку, вы можете переключиться в этот буфер и подать ему какой-то ввод (это работает как  в режиме Shell, см.  Раздел 30.2.2

[Интерактивная оболочка], с. 324). Без переключения в этот буфер, вы можете прокрутить его с помощью C-c C-l  так, что последняя строчка в нем станет видимой.

Наберите C-c C-k (tex-kill-job), чтобы уничтожить процесс TEX, если вы понимаете, что его вывод уже  бесполезен. Использование  C-c C-b или C-c C-r  также  уничтожает любой работающий процесс TEX.

Вы также можете пропустить произвольную область через подчиненный TEX,  набрав C-c C-r (tex-region). Однако, это ненадежно, потому что большинство входных файлов TEX содержат в начале команды, устанавливающие какие-то параметры и определяющие

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

чтобы решить эту проблему, C-c C-r  позволяет вам обозначить часть файла как содер-

жащую важные команды; она вставляется перед заданной областью как часть ввода TEX.

Обозначенная часть файла называется заголовком.

Чтобы обозначить границы заголовка в режиме Plain TEX,  вы вставляете в файл две специальные строки. Вставьте ‘%**start of header’ перед заголовком  и ‘%*end of header’ после него. Обе должны появиться полностью на одной строке, но перед ними или после

них допускается другой текст.   Строки,  содержащие  эти фразы,  включаются в заголовок. Если ‘%**start of header’ не появится в пределах первых 100 строк буфера, C-c C-r предполагает, что заголовка нет.

В режиме LaTEX  заголовок начинается с команды ‘\documentstyle’ и заканчивается командой ‘\begin{document}’.   LaTEX  требует, чтобы вы использовали  эти команды в любом случае, так что для определения заголовка не требуется делать ничего особенного.

Команды (tex-buffer) и (tex-region) делают свою работу во временном  каталоге, и им недоступны  вспомогательные  файлы, нужные TEX  для перекрестных ссылок; эти команды в общем случае не подходят для обработки окончательной копии, в которой все

перекрестные ссылки должны быть правильными.

Когда вам нужны вспомогательные  файлы для перекрестных ссылок, используйте C-c C-f (tex-file), которая запускает TEX для файла текущего буфера в каталоге этого файла. Перед запуском TEX  она предлагает сохранить все измененные  буферы. В общем случае,

вы должны использовать (tex-file) дважды, чтобы получить правильные перекрестные

ссылки.

Значение переменной tex-start-options-string задает ключи для запуска TEX.  Значение по умолчанию велит TEX  работать в безостановочном режиме.   Чтобы запустить TEX интерактивно, установите эту переменную равной "".

Большие документы TEX часто разбивают на несколько  файлов — один главный плюс подфайлы. Запуск TEX  для подфайла как правило не сработает; вы должны запускать его для главного файла. Чтобы сделать tex-file полезной при редактировании подфайла,

вы можете установить переменную tex-main-file равной имени главного файла. Тогда

tex-file запустит TEX для этого файла.

Наиболее удобный способ использования tex-main-file — указать ее в перечне локаль-

ных переменных в каждом из подфайлов. См. Раздел 31.2.5 [Переменные файла], с. 351.

С LaTEX-файлами вы можете  использовать BibTEX,  чтобы обработать вспомогательные файлы для файла текущего буфера. BibTEX  находит библиографические  цитаты в базе данных и подготавливает процитированные ссылки для раздела библиграфии.  Коман-

да C-c TAB (tex-bibtex-file) запускает команду оболочки (tex-bibtex-command), чтобы получить ‘.bbl’-файл для файла текущего буфера. Вообще говоря,  вам нужно сначала сделать C-c C-f  (tex-file),  чтобы получить ‘.aux’-файл,  затем сделать C-c TAB  (texbibtex-file) и после этого повторить C-c C-f  (tex-file) еще раз, чтобы сгенерировать правильные перекрестные ссылки.

При входе в любую разновидность режима TEX запускаюся ловушки text-mode-hook  и tex-mode-hook.  Затем запускаюся plain-tex-mode-hook или latex-mode-hook, что подходит.  Для SliTEX-файлов запускается ловушка slitex-mode-hook.  При старте оболочки

TEX запускается tex-shell-hook. См. Раздел 31.2.3 [Ловушки], с. 349.

21.10  Режим Nroff

Режим Nroff — это режим, похожий на режим Text, но модифицированный для управле-

ния командами nroff, присутствующими в тексте.  Вызовите M-x nroff-mode,  чтобы войти

в этот режим.  Он отличается от режима Text только несколькими возможностями. Все строки команд nroff считаются разделителем  абзацев, так что заполнение никогда не исказит команды nroff. Страницы разделяются командами ‘.bp’.  Комментарии начинаются с обратной косой черты и двойных кавычек. Также предусмотрены три специальные команды, которых нет в режиме Text:

M-n            Перейти на начало следующей  строки,  которая не  является командой nroff

(forward-text-line). Аргумент служит счетчиком повторов.

M-p            Похожа на M-n, но сдвигает вверх (backward-text-line).

M-?            Напечатать в эхо-области число текстовых строк (строк, которые не являются командами nroff ) в текущей области (count-text-lines).

Другое свойство режима Nroff — это то, что вы можете включать режим Electric Nroff. Это второстепенный  режим, который вы можете  включать или выключать при помощи M-x electric-nroff-mode (см. Раздел 31.1 [Второстепенные режимы], с. 341). Если этот режим включен, то каждый раз, когда вы набираете hRETi  для окончания строки, которая содержит команду nroff, открывающую некоторый вид группы, в следующую строку автоматически вставляется соответствующая  закрывающая группу команда nroff.  Например, если вы находитесь в начале строки и наберете . ( b hRETi, то в новую строку, следующую за точкой, будет вставлена соответствующая команда ‘.)b’.

Если с режимом Nroff вы используете второстепенный режим Outline (см. Раздел 21.8 [Режим Outline], с. 190), строками заголовков будут строки вида ‘.H’ с последующим числом (уровнем заголовка).

Вход в режим Nroff запускает ловушку text-mode-hook,  а затем ловушку nroff-modehook (см. Раздел 31.2.3 [Ловушки], с. 349).

21.11  Редактирование форматированного текста

Режим Enriched — это второстепенный  режим для редактирования файлов,  которые содержат форматированный  текст в стиле WYSIWYG,  как в текстовом процессоре. На данный момент форматированный текст в режиме Enriched может задавать шрифты, цвета, подчеркивание, поля и типы заполнения и выравнивания. В будущем мы планируем реализовать также и другие возможности для форматирования.

Режим Enriched — это второстепенный  режим (см.  Раздел 31.1 [Второстепенные режимы], с. 341).  Как  правило он используется  вместе с режимом Text  (см.  Раздел 21.7 [Режим Text], с. 190). Однако, вы можете также использовать его и с другими основными режимами, такими как режим Outline и режим Paragraph-Indent Text.

Потенциально  Emacs может сохранять файлы с форматированным текстом во многих форматах.  На текущий момент реализован только один формат:  text/enriched, который определяется протоколом MIME. См. раздел “Format Conversion” в the Emacs Lisp Reference Manual, для получения подробностей о том, как Emacs распознает и пребразует форматы файлов.

Дистрибутив Emacs содержит файл с форматированным текстом, который может служить примером. Он называется ‘etc/enriched.doc’. Этот файл содержит образцы, иллюстрирующие все возможности,  описанные в этом разделе. В нем также есть перечень идей для будущих улучшений.

21.11.1  Запрос  на редактирование форматированного текста

Когда вы обращаетесь к файлу, который был сохранен в формате text/enriched, Emacs автоматически преобразует информацию о форматировании из этого файла во внутренний формат Emacs (свойства текста) и включает режим Enriched.

Чтобы создать новый файл с форматированным текстом, обратитесь сначала к несуществующему файлу, а перед тем как начать редактирование  наберите M-x enriched-mode. Эта команда включает режим Enriched. Делайте это до того, как вы начнете вставлять текст, чтобы вставляемый текст наверняка обрабатывался правильно.

В более общем виде, команда enriched-mode включает режим Enriched, если он был выключен, и выключает его, если он был включен. Запущенная с числовым аргументом, эта команда включает режим Enriched, если аргумент положителен, и выключает в противном случае.

Когда вы сохраняете буфер при задействованном режиме Enriched, Emacs автоматически преобразует текст к формату text/enriched во время записи в файл. Когда вы снова обратитесь к этому файлу, Emacs автоматически распознает формат, преобразует текст обратно и снова включит режим Enriched.

Обычно после обращения  к файлу в формате text/enriched, Emacs перезаполняет каждый абзац так, чтобы он умещался по заданному правому полю. Вы можете выключить это перезаполнение, чтобы сэкономить время, установив переменную enriched-fill-aftervisiting в значение nil или ask.

Однако, при обращении к файлу, записанному в формате Enriched, нет нужды в пере-

заполнении, поскольку Emacs сохраняет установки правого поля вместе с текстом.

Делая добавления к enriched-translations, вы можете вносить пометки для сохранения дополнительных свойств текста, которые Emacs обычно не сохраняет. Заметьте, что стандарт text/enriched требует, чтобы имена всех нестандартных пометок начинались с

‘x-’,  например ‘x-read-only’.  Это позволяет быть уверенным в том, что они не будут конфликтовать со стандартными пометками, добавленными позже.

21.11.2  Жесткие и гибкие переводы  строк

Emacs различает в форматированном тексте два разных вида переводов строк: жесткие

и гибкие.

Жесткие переводы строк используются для разделения абзацев, или пунктов перечня, или везде,  где  строка должна всегда разрываться  вне зависимости  от полей.  Команды hRET(newline) и C-o (open-line) вставляют жесткие переводы строк.

Гибкие переводы строк применяются для того, чтобы уместить текст в пределы полей. Все команды заполнения,  включая Auto  Fill,  вставляют гибкие переводы  строк,  и они удаляют всегда только гибкие переводы строк.

Хотя жесткие и гибкие переводы строк выглядят одинаково, важно помнить об их различии. Не используйте hRETi, чтобы разорвать строку в середине заполненного абзаца, или иначе вы получите жесткие переводы строк, которые послужат барьером последующему заполнению. Вместо этого позвольте разбивать строки режиму Auto Fill, чтобы при изменении текста или полей Emacs мог правильно перезаполнить строки.  См.  Раздел 21.5.1 [Auto Fill], с. 185.

С другой стороны, в таблицах и перечнях, где строки должны всегда оставаться такими, как вы их набрали, вы можете использовать для завершения строк hRETi.  Для таких строк вы также можете установить стиль выравнивания в unfilled.  См. Раздел 21.11.7 [Формат Выравнивание], с. 202.

21.11.3  Редактирование информации о формате

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

Простейший способ добавить свойства к вашему документу — воспользоваться меню

Text Properties. Вы можете  попасть в это меню двумя путями:  из меню Edit  в полоске

меню или с помощью C-mouse-2 (прижмите клавишу hCTRLi  и нажмите среднюю кнопку мыши).

Большинство пунктов из меню Text Properties ведут к другим подменю. Подменю опи-

саны в последующих разделах. Некоторые пункты запускают команды непосредственно:

Remove Properties

Удаляет из области все свойства текста, с которыми работает меню Text Properties (facemenu-remove-props).

Remove All

Удаляет все свойства текста из области (facemenu-remove-all).

List Properties

Перечисляет все  свойства  текста   для  знака  после   точки   (list-textproperties-at).

Display Faces

Показывает  перечень всех определенных начертаний.

Display Colors

Показывает  перечень всех определенных цветов.

21.11.4  Начертания в форматированном тексте

В  подменю Faces  перечислены   разные начертания Emacs, включая bold,  italic и underline. Выбор одного из них добавляет это начертание к области. См. Раздел 17.13 [Начертания], с. 155. Вы также можете задать начертания с помощью таких команд клавиатуры:

M-g d          Говорит, что область или следующий вставленный знак должны появиться в начертании default (facemenu-set-default).

M-g b          Говорит, что область или следующий вставленный знак должны появиться в начертании bold (facemenu-set-bold).

M-g i    Говорит, что область или следующий вставленный знак должны появиться в начертании italic (facemenu-set-italic).

M-g l    Говорит, что область или следующий вставленный знак должны появиться в начертании bold-italic (facemenu-set-bold-italic).

M-g u          Говорит, что область или следующий вставленный знак должны появиться в начертании underline (facemenu-set-underline).

M-g o начертание hRETi

Говорит, что область или следующий вставленный знак должны появиться в заданном начертании (facemenu-set-face).

Если вы используете эти команды с префиксным аргументом — или, в режиме Transient Mark, если область не активна — то они задают начертание для следующего самовставляющегося ввода. См. Раздел 8.2 [Transient Mark], с. 64. Это относится как к командам клавиатуры, так и к командам меню.

Режим Enriched определяет два дополнительных начертания: fixed и excerpt.  Они соответствуют кодам, используемым в формате файлов text/enriched.

Начертание excerpt предназначено для цитат.  Оно совпадает с начертанием italic,

если вы его не перенастроили  (см. Раздел 31.2.2.3 [Настройка начертаний], с. 347).

Начертание fixed означает “Использовать  для этой  части  текста  равноширинный шрифт”.  В настоящее время Emacs поддерживает только равноширинные шрифты; следовательно,  пометка fixed пока не так  необходима. Однако, в будущих версиях Emacs

мы планируем реализовать поддержку шрифтов переменной ширины, и другие системы, способные отображать формат text/enriched,  могут  не использовать  по умолчанию равноширинный шрифт.  Поэтому если вы хотите,  чтобы какая-то часть текста появлялась именно с равноширинным шрифтом, вам следут задать для этой части начертание fixed.

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

Если ваш терминал не умеет отображать разные начертания, у вас не получится их увидеть, но вы все же сможете редактировать документы, содержащие их. Вы даже сможете добавить в текст начертания и цвета. Они станут видимы, когда файл будут просматривать на терминале, который способен их отобразить.

21.11.5  Цвета  в форматированном тексте

Вы можете указать цвета букв и фона для фрагментов текста. Есть меню для задания цвета текста и меню для задания цвета фона.  Оба меню цветов перечисляют все цвета, которые вы использовали в режиме Enriched в текущем сеансе Emacs.

Если вы задаете  цвет с префиксным аргументом — или, в режиме  Transient  Mark, если область не активна — то этот цвет применяется для самовставляемого ввода. См. Раздел 8.2 [Transient Mark], с. 64. В противном случае эта команда относится к области.

Оба меню цветов содержат дополнительный пункт:  ‘Other’.  Вы можете использовать этот пункт  для задания цвета, который не перечислен  в меню; имя цвета считывается в минибуфере. Чтобы просмотреть перечень доступных цветов и их имена, используйте  пункт  ‘Display Colors’  в меню Text  Properties (см.  Раздел 21.11.3 [Редактирование формата], с. 199).

Любой цвет, заданный таким способом или упомянутый в считанном файле с форматированным текстом, добавляется в оба меню цветов и сохраняется там на протяжении всего сеанса Emacs.

Для задания цветов нет привязок ключей, но вы можете  указывать их при помощи расширенных команд M-x facemenu-set-foreground и M-x facemenu-set-background.  Обе эти команды считывают имя цвета в минибуфере.

21.11.6  Отступы в форматированном тексте

При редактировании форматированного текста вы можете задать различные величины отступа для правого или левого края целого абзаца или его части. Указанные вам поля автоматически учитываются команды Emacs для заполнения (см. Раздел 21.5 [Заполнение], с. 185) и разрыва строк.

Подменю Indentation предоставляет удобный интерфейс для указания этих свойств. Оно содержит четыре пункта:

Indent  More

Увеличивает отступ области на 4 столбца (increase-left-margin).  В режиме Enriched эта команда также  доступна на C-x hTABi;  если вы предоставите числовой аргумент, то он говорит,  сколько столбцов нужно добавить к полю (отрицательный аргумент уменьшает число столбцов).

Indent  Less

Удаляет 4 столбца отступа из области.

Indent  Right  More

Сужает область, делая с правого края отступ в 4 столбца.

Indent  Right  Less

Удаляет 4 столбца отступа с правого края.

Вы можете использовать эти команды несколько раз для увеличения или уменьшения величины отступа.

Наиболее частый способ применения  этих команд — изменять отступ целого абзаца. Однако это не единственное  их применение.  Вы можете поменять размеры полей в любой точке; новые значения проявляются  в конце этой строки (для правого поля) или в начале следующей (для левого поля).

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

Отступ в первой строке абзаца делается проще.  Установите поле для всего абзаца там, где  вы хотели бы видеть его для тела абзаца, а затем увеличьте  отступ первой строки, добавив пробелы или знаки табуляции.

Иногда в результате редактирования  заполнение абзаца сбивается — части абзаца могут выйти за левые или правые поля. Когда такое происходит, воспользуйтесь M-q (fillparagraph), чтобы перезаполнить этот абзац.

Число столбцов, которые добавляют или удаляют из отступа эти команды, задается переменной standard-indent.  Ее значение равно по умолчанию четырем. Общее правое поле, принимаемое по умолчанию для режима Enriched, контролируется переменной fillcolumn, как обычно.

Префикс заполнения, если он задан, действует совместно с указанным отступом абзаца: C-x . не включает пропуск из указанного отступа в новое значение префикса заполнения, а команды заполнения  ищут  префикс заполнения  в каждой строке  после  отступа.   См. Раздел 21.5.3 [Префикс заполнения], с. 187.

21.11.7  Выравнивание в форматированном тексте

При редактировании  форматированного текста вы можете  задавать различные стили выравнивания абзацев. Указанный вами стиль автоматически учитывается командами Emacs для заполнения.

Подменю Justification предоставляет удобный интерфейс для указания стиля выравни-

вания. Оно содержит пять пунктов:

Flush Left

Это наиболее распространенный   стиль выравнивания (по крайней мере для английского языка). Строки выравниваются по левому полю, но оставляются неровными с правого края.

Flush Right

Это выравнивает каждую строку по правому полю.  Если необходимо, слева добавляются пробелы и знаки табуляции, чтобы правые концы строк выстраивались в линию.

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

Center        Это центрирует каждую строку между текущими полями.

None          Это выключает заполнение полностью. Каждая строка будет  оставаться такой, как вы ее написали; функции заполнения и  автоматического заполнения не будут иметь эффекта в тексте  с такой  установкой.  Вы все же  можете  делать отступ слева. В незаполненных областях все переводы строк считаются жесткими (см. Раздел 21.11.2 [Жесткие и гибкие переводы строк], с. 199) .

В режиме Enriched вы также можете задавать стиль выравнивания с клавиатуры, ис-

пользуя префиксный знак M-j:

M-j c

M-S            Центрирует область (set-justification-center).

M-j u          Делает область невыровненной (set-justification-none).

M-j l    Выравнивает  область слева (set-justification-left).

M-j r      Выравнивает область справа (set-justification-right).

M-j f     Выравнивает область полностью (set-justification-full).

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

Стиль выравнивания по умолчанию задается переменной default-justification.  Ее значением должен быть один из символов left, right, full, center  или none.

21.11.8  Установка других свойств  текста

Меню Other Properties позволяет вам добавлять или удалять три  других  полезных свойства текста:  read-only, invisible и intangible.   Свойство intangible запрещает движение точки внутри этого текста, свойство текста invisible делает текст невидимым, а свойство read-only запрещает изменение текста.

Для добавления каждого из этих особых свойств к области есть пункт меню. Последний пункт меню, ‘Remove Special’, удаляет  все эти особые свойства из текста области.

На  данный момент свойства invisible и  intangible не сохраняются в  формате text/enriched.   Свойство read-only сохраняется,  но оно не  входит в стандарт формата text/enriched, поэтому другие редакторы могут его игнорировать.

21.11.9  Принудительное включение режима Enriched

Обычно Emacs знает, когда вы редактируете  форматированный  текст,  поскольку он распознает  специальные  пометки, использованные  в файле,  к  которому вы обратились. Однако, бывают ситуации, в которых вы должны предпринять  особые меры, чтобы преобразовать содержимое файла или включить режим Enriched:

Когда  вы обращаетесь к файлу, который был создан каким-то другим  редактором, Emacs может не распознать этот файл как отфоратированный в text/enriched. В таком случае, когда вы обращаетесь к файлу, вы увидите  команды  форматирования, а не форматированный  текст. Наберите M-x format-decode-buffer, чтобы перевести их.

Когда вы вставляете  файл в буфер, а не обращаетесь  к нему. Emacs делает необходимые преобразования вставляемого текста, но не включает режим Enriched. Если вы хотите сделать это, введите M-x enriched-mode.

Команда format-decode-buffer переводит текст из различных форматов во внутренний формат Emacs. Она просит вас указать формат, из которого делать преобразование; однако, как правило вы можете просто нажать hRETi, что велит Emacs предположить  формат самому.

Если вы хотите  просмотреть на текст  в text/enriched-файле  буквально, как  последовательность знаков, а не  как  форматированный  текст,  воспользуйтесь  командой M-x find-file-literally.  Она обращается к файлу, как и find-file, но не производит преобразование формата.  Она также подавляет преобразование кодов знаков (см. Раздел 18.7 [Системы кодирования], с. 165) и автоматическую распаковку (см. Раздел 14.11 [Сжатые файлы], с. 133). Чтобы выключить преобразование формата, но позволить перевод кодов знаков и/или автоматическую распаковку, если она нужна, используйте format-find-file с подходящими аргументами.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий