Данный формат был определен фирмой Microsoft как стандартный формат для обмена текстовыми документами. Следовательно, по назначению этот формат подобен SYLK-формату для электронных таблиц. RTF поддерживается многими продуктами фирмы Microsoft. Так, например, начиная с версии 2.0, он введен в Windows в качестве Clipboard-формата, благодаря чему возможен обмен данными между различными прикладными программами Windows. Кроме того, RT-формат поддерживается программами WORD для Macintosh, начиная с версии 3.X, и WORD для PC, начиная с версии 4. X.
В RTF для обмена документами используются только представимые символами коды из ASCII-, MAC- и PC-символьного набора. Кроме текста, файл в RT-формате в читаемой форме содержит команды управления.
Документ состоит преимущественно из команд управления настройки программы чтения файлов в RTF-формате. Эти команды можно разделить на управляющие слова (control words) и управляющие символы (control symbols).
Управляющее слово представляет собой последовательность символов с разделителем (delimiter) в конце:
\lettersequence <delimiter>
Перед управляющим словом вводится обратная косая черта "\" (backslash). В качестве разделяющих могут использоваться следующие символы:
В RT-формате для задания управляющей последовательности используются буквы от "А" до "Z" и от "а" до "z", а также цифры от "0" до "9". Национальные символы к управляющей информации не относятся.
В качестве, управляющих символов используются отдельные буквы. Перед каждым управляющим символом вводится обратная косая черта "\":
\control symbol
В настоящее время определены только некоторые из этих символов. Поэтому при чтении неизвестные символы могут быть пропущены.
В RT-формате существует возможность объединять отдельные последовательности в группы при помощи скобок:
{ начало группы } конец группы
Такие группы создаются, например, при описании сносок, колонтитулов и т.п. Если необходимо разместить символы "\", "{" или "}" внутри обычного текста, то перед ними надлежит поставить обратную косую черту:
\\ \{ \}.
Это позволяет программе, читающей RTF-последовательность, распознать, что символ не следует интерпретировать как управляющий.
В RT-формате используются также некоторые символьные коды для управления печатью
Код | Значение |
---|---|
09Н | Табулятор |
0АН | Символ CR |
0СН | Символ LF |
Символы CR и LF, расположенные внутри текста, будут пропущены. Microsoft использует эти символы для большей наглядности при представлении RTF-файла. Внутри управляющих слов символы CR и LF могут иметь особое значение, подробнее об этом будет сказано при описании команд.
В RTF имеются управляющие слова специального назначения. Рассмотрим кратко эти слова и их назначение.
\chpgn
Управляющее слово change page number выводит текущий номер страницы.
\chftn
Управляющее слово change footnote активизирует автоматическую нумерацию сносок.
\chdate
С помощью change date можно вывести текущую дату.
\chtime
С помощью change time можно вывести текущее время.
\chatn
Ссылка на примечание (текст следует в группе).
\chftnsep
Свидетельствует об изменении линии, отделяющей сноски от текста.
\/
С помощью данной последовательности вводится текст формулы.
\:
Обозначает подпункт индекса.
\*
Текст может быть пропущен при чтении RTF-формата.
\~
Задает жесткий (неразрываемый) пробел между двумя словами, т.е. в этой позиции предложение не может быть разделено при переносе на следующую строку.
\-
Символ обозначает мягкий перенос (nonrequired hyphen).
\_
Символ обозначает неразрываемый перенос (nonbreaking hyphen), на месте которого слово не может быть разделено.
\'hh
Последовательность позволяет прямой ввод в тексте шестнадцатеричных чисел. Они задаются вместо символов hh.
\page
Данная последовательность задает переход на новую страницу.
\line
Эта последовательность вызывает переход на новую строку в тексте.
\раr
С помощью данной последовательности в тексте отмечается конец абзаца. Последовательность \раr может заменяться последовательностью \10 или \13. При этом \10 соответствует ASCII-символу с кодом 10 (carriage return). Непосредственно ввести ASCII-код 10 (CR) нельзя, т.к. он игнорируется программой чтения.
\sect
Эта последовательность обозначает конец текстового фрагмента или текстового абзаца.
\tab
Данная последовательность заменяет табулятор. Можно также непосредственно задавать ASCII-код 09Н.
\сеll
Конец таблицы (столбец).
\row
Конец таблицы (строка).
С помощью описанных ниже управляющих слов можно произвести основную настройку программы чтения RTF. Они могут встречаться только в начале документа или в начале группы. Все операторы вместе с параметрами должны быть заключены в скобки, например:
{\rtf0\pc.......}
Ниже описан формат некоторых операторов.
\rtf <параметр>
Задает метку начала файла. В качестве параметра программа, при помощи которой создается файл, может указывать номер версии. Например:
{\rtf0.......}
Метка должна стоять в начале файла. После этого оператора могут следовать другие операторы или закрывающая скобка.
Установка вида кодировки для сохраняемого текста осуществляется с помощью следующих операторов:
Для передачи текстов между различными системами должна использоваться кодировка \ansi.
Windows и другие программы пользуются палитрами для определения используемых цветов. Чаще всего палитра состоит из 16 различных цветов, получаемых путем комбинации основных цветов — красного, зеленого и синего. Команда \colortbl позволяет изменить отдельные определения в палитре. Для каждого цвета в таблице указывается величина красной, зеленой и синей составляющей. Каждый цвет описывается тремя параметрами:
\red000 \green000 \blue000
Вместо 000 указывается величина доли цвета в диапазоне от 0 до 255. Пример: в таблице, состоящей из 16 цветов, должны быть заново определены цвета 0-й и 2-й. Для переопределения цветов может быть задана следующая последовательность:
{ \colortbl \red128\green64\blue128\;;\red0\green64\blue128; }
Определение цвета завершается точкой с запятой. Поскольку 1-й цвет остается без изменений, в последовательности два символа ";" следуют один за другим. Последовательность завершается закрывающей скобкой.
Оператор \cfn определяет цвет фона (при стандартной настройке n=0), а оператор \cbn - цвет символа (при стандартной настройке n=0).
Данный оператор используется для построения таблицы шрифтов и соотносит имя шрифта (группы шрифтов) с номером шрифта. При определении шрифта можно использовать следующие операторы:
Команда для создания группы шрифтов может состоять из таких операторов:
{\fonttbl\f0\fnil default;} {\fl\froman roman h;} {\f2\fswiss helvetica;}
После ключевого слова \fonttbl следует первый номер шрифта \f0. Далее идет определение группы шрифтов. Здесь после номера 0 указано \fnil, т.е. имя группы неизвестно. Следующий параметр обозначает имя выбираемого шрифта (например, roman h). Указание default говорит считывающей программе о том, что следует использовать стандартный шрифт. После имени шрифта стоит точка с запятой. В приведенном примере определены только шрифты с номерами 1 и 2. Вся последовательность может быть объединена фигурными скобками в группу.
Таблица шрифтов должна быть заполнена значениями до того, как встретится оператор \stylesheet или текст. Стандартный шрифт вводится оператором \deffn.
Этот оператор определяет шрифт абзаца, т.е. размер, начертание и имя гарнитуры, а также способ выравнивания текста абзаца. При этом используются два ключевых параметра:
Оператор может иметь, например, следующий вид:
{\stylesheet\s0\f3\fs20\qj Normal;} {\sl\f3\fs30\b\qc Heading Level 3;}
Шрифты нумеруются числами от 0 до n (\s0...). В первой строке стилю абзаца 0 (\s0) предписывается имя Normal. Вывод текста выполняется шрифтом 3 (\f3), размером 10 пунктов (\fs20). Параметр \qj говорит о том, что надпись должна выравниваться по формату. Вторая строка определяет стиль шрифта 1, который получает имя Heading Level 3. Шрифт имеет размер 15 пунктов, жирное начертание (\Ь = bold) и при выводе надпись центрируется (\qc).
Этот оператор используется при описании рисунка в формате битовой карты (bitmap). Следующие параметры содержат описание рисунка в виде шестнадцатеричных значений. Параметры могут быть выборочно использованы для определения геометрии рисунка или его формата:
Оператор должен следовать непосредственно после отметки сноски и относиться к тексту.
Оператор определяет верхний колонтитул текущего фрагмента текста и поэтому должен указываться в начале текста.
Оператор определяет верхний колонтитул четной страницы (left hand header), на которой колонтитул выводится с выравниванием влево.
Оператор устанавливает верхний колонтитул нечетной страницы, на которой колонтитул выводится с выравниванием вправо (right hand header).
Оператор устанавливает верхний колонтитул первой страницы (first page header).
Оператор устанавливает нижний колонтитул текущего фрагмента и должен указываться перед началом текста.
Оператор устанавливает нижний колонтитул четной страницы (left hand footer), на которой колонтитул выводится с выравниванием влево.
Оператор устанавливает нижний колонтитул нечетной страницы, на которой он выводится с левосторонним выравниванием (right hand footer).
Оператор устанавливает нижний колонтитул первой страницы (first page footer).
Оператор определяет символ-разделитель для сносок.
Оператор определяет разделитель для сноски, которая продолжается на следующей странице (continued footnote).
Этот оператор применяется для обозначения продолжения текста сноски.
С помощью данного ключевого слова в начале документа открывается информационный блок. Он может содержать информацию о заголовке документа, дате его составления и т.д. Внутри информационного блока, который начинается оператором \info, могут встречаться следующие операторы:
Перечисленные команды позволяют передавать вспомогательную информацию о документе, например, имя автора, версию текста, заголовок и т.д. Программа чтения RTF-данных не обязана обрабатывать команды информационного блока.
Вместо 000 в операторе записывается номер версии программы, в которой составлен документ.
С помощью данного ключевого слова определяется дата и время создания документа. Эти данные кодируются с помощью таких операторов:
Определяет время и дату последней корректировки документа. Оба параметра задаются так, как указано в описании оператора \creatim.
Определяет время и дату последней распечатки документа. Оба параметра задаются так, как указано в описании оператора \creatim.
Определяет время и дату последнего сохранения документа (backup). Оба параметра задаются так, как указано в описании оператора \creatim.
Хранит длительность (в минутах) последнего сеанса редактирования.
Вышеуказанные операторы содержат уточняющую информацию о документе (количество страниц, количество слов и количество символов), а также внутренний идентификационный номер.
В заголовке может встретиться текст, помеченный ключевым словом \comment. В этом случае речь идет о комментарии в тексте, который пропускается программой чтения данных в RTF-формате.
Имеется группа операторов, при помощи которых описываются поля, вставляемые в WORD. Группа начинается ключевым словом \field, за которым могут следовать такие операторы:
Эта группа операторов начинается последовательностью символов \xe и может содержать следующие ключевые слова:
Группа содержит элементы данных для таблиц и может состоять из следующих ключевых слов:
В группу операторов, определяющих закладки, входят только два оператора:
В следующую группу входят команды для форматирования текста. Эти команды могут быть разделены на подгруппы:
В этом разделе описываются операторы форматирования всего документа.
\sectd | Оператор устанавливает стандартную настройку параметров секции. |
\sbknone | Оператор подавляет переход на новую страницу перед началом секции (section break continuous). |
\sbkcol | При указании этой команды в начале секции осуществляется переход на новую колонку (section break new column). |
\sbkpage | При указании этой команды (section break new page) в начале секции происходит переход к новой странице. |
\sbkeven | При указании этой команды в начале секции выполняется переход к новой странице, если номер страницы четный (section break even). |
\sbkodd | При указании этой команды в начале секции выполняется переход к новой странице, если номер страницы нечетный (section break odd). |
\pgostartsn | Нумерация страниц начинается с номера n. |
\pgnrestart | Команда устанавливает временную нумерацию страниц, начиная со значения 1. Параметр 0 восстанавливает прежний порядок нумерации. |
\pgndec | Номера страниц выводятся в десятичном формате. |
\pgnucrm | Номера страниц выводятся большими римскими цифрами (upper case roman). |
\pgnlcrm | Номера страниц выводятся маленькими римскими цифрами (lower case roman). |
\pgncont | Сквозная нумерация страниц (стандартная настройка). |
\pgnucltr | Номера страниц выводятся прописными символами (upper case letter). |
\pgnlcltr | Номера страниц выводятся строчными символами (lower case letter). |
\pgnx000 | С помощью этой команды задается X-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips. |
\pgny000 | С помощью этой команды задается Y-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips. |
\linemod000 | Оператор устанавливает величину интервала при нумерации строк. |
\linex000 | Оператор устанавливает расстояние между строками. По умолчанию оно равно 360 twips. |
\linestartn | Нумерация строк начинается со значения n. |
\linerestart | Возвращает номер строки к значению 1. Команда устанавливает, что нумерация строк начинается с 1. |
\linepage | На каждой странице нумерация строк начинается со значения 1. |
\linecont | Нумерация строк продолжается с предыдущей секции (предыдущей главы). |
\headery000 | Команда задает Y-координату верхнего колонтитула. Значение указывается относительно верхнего края страницы и по умолчанию принимается равным 720 twips. |
\footery000 | Команда задает Y-координату нижнего колонтитула. Значение указывается относительно нижнего края страницы и по умолчанию принимается равным 720 twips. |
\vertalt | Текст по вертикали выравнивается к верхнему краю страницы. Текст располагается в верхней части страницы (vertically align at top of page). |
\vertalc | Текст размещается посредине страницы. Вертикальное выравнивание текста выполняется по центру страницы (vertical align centered). |
\vertalj | Текст по вертикали размещается так, чтобы заполнить всю страницу (vertical align justified). |
\vertalb | Вертикальное выравнивание текста выполняется по нижнему краю страницы (vertical align bottom). |
\cols000 | С помощью этой команды можно задать количество столбцов в строке. Стандартное значение равно 1. |
\colsx000 | С помощью этой команды устанавливается расстояние между двумя столбцами в twips. Стандартное значение равно 720 twips. |
\endnhere | При указании этого оператора послетекстовые сноски выводятся в конце секции. Такой вывод можно подавить путем задания параметра 0. |
\titlepg | Оператор задает вывод титульной страницы. Параметр 0 подавляет вывод титульной страницы. |
Следующие команды управляют форматированием абзаца (paragraph).
\pard | Оператор устанавливает стандартную настройку для абзаца. |
\s000 | Команда определяет шрифт для данного абзаца. С помощью подставляемого вместо 000 значения осуществляется выбор в таблице шрифтов. |
\ql | При задании команды quad left текст выравнивается по левому краю страницы. |
\qr | При задании команды quad right текст выравнивается по правому краю страницы. |
\qc | При задании команды quad centered текст размещается по центру страницы. |
\qj | При задании команды quad justified текст выравнивается по формату страницы. |
\fi000 | Оператор определяет величину отступа первой строки абзаца (first line indent). Стандартное значение равно 0. |
\li000 | Оператор определяет величину втяжки абзаца слева (left indent). Стандартное значение равно 0. |
\ri000 | Оператор определяет величину втяжки абзаца справа (right indent). Стандартное значение равно 0. |
\sb000 | Оператор задает количество пустых строк, вставляемых перед абзацем (spaces before). Стандартное значение равно 0. |
\sa000 | Оператор задает количество пустых строк, вставляемых после абзаца (spaces after). Стандартное значение равно 0. |
\sl000 | Команда устанавливает расстояние между строками в пунктах. Стандартное значение равно одной строке (12 пунктам). Команда \sl000 включает auto line mode. |
\intbl | Абзац является частью некоторой таблицы. |
\keep | При указании этой команды фиксируется принадлежность текста к текущему абзацу. Команда отключается указанием параметра 0. |
\kеерn | При указании этой команды текст ставится в соответствие следующему (next) абзацу. Команда отключается указанием параметра 0. |
\sbys | Указанием этого оператора может быть включен режим side by side. При задании параметра 0 режим отключается. |
\pagebb | Указанием этого оператора может быть включена команда page break before. При задании параметра 0 команда отключается. |
\nоlinе | При задании этой команды отключается нумерация строк. Указание параметра 0 подавляет команду. |
\brdrt | Задает линию над абзацем (boarder top). |
\brdrb | Задает линию под абзацем (boarder bottom).. |
\brdrl | Задает линию слева от абзаца (boarder left). |
\brdrr | Задает линию справа от абзаца (boarder right). |
\box | Задает рамку вокруг абзаца. |
\brdrs | Задает нормальную линию (single thickness) для рамки. |
\brdrtb | Задается толстую (thick) линию для рамки. |
\brdsu | Задает оттененную рамку (boarder). |
\brdrdb | Задается двойную рамку (boarder). |
\brdrdot | Рамка обозначается пунктирной линией. |
\brdrbair | Рамка обозначается тонкой линией. |
\brspn | Расстояние в twips между рамкой и объектом. |
\tqr | Обозначает табулятор, относительно которого текст выравнивается вправо (right flush tab). |
\tgc | Обозначает табулятор, относительно которого текст выравнивается по центру (centered tab). |
\tqdec | Обозначает десятичный табулятор (decimal aligned tab). |
\tldot | Обозначает табулятор, для которого пустое пространство заполняется точками (tab leader dot). |
\tibypben | Обозначает табулятор, для которого пустое пространство заполняется дефисами (tab leader hyphen). |
\tlul | Обозначает табулятор, для которого пустое пространство заполняется символами подчеркивания (tab leader underline). |
\tith | Обозначает табулятор, для которого пустое пространство заполняется жирной чертой (tab leader thick line). \ |
\tx000 | С помощью этой команды задается положение табулятора. |
\tb000 | С помощью команды задается положение вертикального табулятора. При этом по всей длине текущего абзаца проводится вертикальная линия. |
Следующие команды позволяют разместить абзац в определенной позиции листа.
\posxn | Позиционирует абзац на расстоянии n twips от левого края. |
\posxc | Абзац по горизонтали размещается по центру относительно указанного элемента (страницы, колонки). |
\posxi | Абзац по горизонтали размещается внутри указанного элемента. |
\posxl | Абзац по горизонтали размещается слева относительно указанного элемента. |
\posxo | Абзац по горизонтали размещается вне указанного элемента. |
\posxr | Абзац по горизонтали размещается справа относительно указанного элемента. |
\posysi | Позиционирует абзац на расстоянии "n" twips от верхнего края. |
\posyil | Позиционирует абзац в текущей позиции (inline). |
\posyt | Абзац по вертикали размещается в верхней части указанного элемента (страницы, колонки). |
\posyc | Абзац по вертикали размещается в центре указанного элемента. |
\posyb | Абзац по вертикали размещается в нижней части указанного элемента. |
\abswn | Абсолютная ширина текста абзаца в twips. |
\dxfrtextn | Расстояние в twips по горизонтали между основным текстом и абсолютно позиционированным объектом (рамкой с текстом или рисунком). |
\pvmrg | Позиция по вертикали относительно полей. |
\pvpg | Позиция по вертикали относительно страницы. |
\phmrg | Позиция по горизонтали относительно полей. |
\рhpg | Позиция по горизонтали относительно страницы. |
\рhсоl | Позиция по горизонтали относительно столбца. |
Для форматирования таблиц определены следующие команды.
\clbrdrb | Нижний край таблицы. |
\clbrdrt | Верхний край таблицы. |
\clbrdrl | Левый край таблицы. |
\clbrdrr | Правый край таблицы. |
\trowd | Устанавливает стандартные значения строк таблицы. |
\trql | Левостороннее выравнивание при размещении строк таблицы (с учетом столбцов). |
\trqr | Правостороннее выравнивание при размещении строк таблицы (с учетом столбцов). |
\trqc | Центрирование строк таблицы (с учетом столбцов). |
\trgapho | Половина расстояния между ячейками таблицы (в twips). |
\trrbn | Высота строки в twips. |
\trleftm | Расположение левого угла таблицы. |
\cellxn | Смещение правой границы таблицы. |
\clmgf | Объединение (merge) первой ячейки с остальными ячейками таблицы. |
\clmrg | Объединение ячейки с предыдущей ячейкой. |
Данная группа операторов используется для форматирования символов (жирное начертание, подчеркивание и т.д.).
\plain | С помощью этой команды устанавливаются стандартные параметры форматирования. |
\b | Установка жирного начертания (bold) для печатаемого текста. Для отмены необходимо указать параметр 0. |
\i | Задание курсивного начертания (italic) для печатаемого текста. Установка отменяется указанием параметра 0. |
\strike | Печатаемый текст будет зачеркнутым (strikethrough). Для отмены следует выбрать параметр 0. |
\outl | Установка контурного шрифта (outline) для печатаемого текста. Для отмены надлежит выбрать параметр 0. |
\shad | Печатаемый текст будет оттенен. Для отмены необходимо установить параметр 0. |
\scaps | Установка печати текста строчными буквами (small caps). Для отмены нужно выбрать параметр 0. |
\caps | Установка печати текста прописными и строчными буквами. Для отмены необходимо выбрать параметр 0. |
\v | Печатаемый текст будет заменен пробелами (invisible). Для отмены следует установить параметр 0. |
\f000 | Установка настройки шрифта с указанием в качестве параметра номера фонта. |
\fs000 | Оператор в качестве параметра содержит высоту символов, заданную в единицах по 1/2 пункта. Стандартное значение высоты равно 24 единицам (12 пунктам). |
\expnd000 | Параметр позволяет изменить расстояние между символами путем указания количества интервалов величиной по 1/4 пункта каждый. |
\ul | Установка режима подчеркивания текста. Для отмены необходимо выбрать параметр 0. |
\ulw | Оператор позволяет задать подчеркивание только слов. |
\uld | Задание пунктирного подчеркивания текста (dotted underline). |
\uldb | Установка режима двойного подчеркивания текста (double underline). |
\ulnone | Отмена подчеркивания текста. |
\up000 | Установка режима надстрочного написания символов (superscript). Размер задается в единицах 1/2 пункта. |
\dn000 | Установка режима подстрочного написания символов (subscript). Размер задается в единицах 1/2 пункта. |
\cf000 | Указание номера цвета в палитре. |
\сb000 | Задание цвета фона путем указания номера в палитре. |
Последующие версии RT-формата могут быть дополнены новыми командами. Если программа не распознает команду, то она может быть пропущена. Конец каждой команды отмечается одним из описанных выше разделяющих символов (чаще всего -точкой с запятой).