Форматы файлов
1. Формат входного файла 1.1. Кодировка
2. Формат стилевого файла Формат стилевого файла соответствует формату системы замен
для универсального заменителя («Книжица», 1994).
Но для составления стилевого файла достаточно знать следующее.
Тэг <del> в предпоследней строчке примера требует на этапе применения
стиилевого файла проигнорировать остальные параметры тэга
<стих> (поэтому у него не закрыта скобка).
Чтобы тэг <del> сработал, после описания замены указан
сдвиг на 5 символов назад.
2. Формат стилевого файла
3. Формат выходного файла
4. Требования к преобразователям
Входной файл имеет формат ASCII8 в кодировке Windows (1251).
1.2. Разделители.
Текст состоит из абзацев, абзацы из слов.
Разделителями слов являются пробелы (h20),
знаки табуляции (h09) и концы строк (CR или CRLF).
Несколько разделителей подряд равносильны одному.
Если среди них есть пустая строка (два подряд
конца строки) или три подряд пробела сразу после конца строки,
то это одновременно и разделитель абзацев.
1.3. В текст вносится разметка.
1.3.1. Элемент разметки — это одно или несколько слов, первое из которых
предваряется открывающей угловой скобкой <, а за последним
следует закрывающая угловая скобка >. Другие угловые скобки в
элементе разметки не допускаются.
Первое слово элемента разметки далее называется
тэгом, остальные — параметрами тэга.
1.3.2. Допустимые символы в тэге.
Тэг, заведённый пользователем, состоит только из русских букв и/или цифр.
Первым знаком тэга может быть ещё дробь. Прописные и строчные буквы
различаются. Латинские буквы и прочие знаки используются в
стандартных тэгах системы и для системных нужд
(в интерпретаторах).
1.3.3. Другая форма тэга.
Однословный элемент разметки можно предварять не угловой
скобкой, а знаком процента. В этом случае заканчивается тэг символом,
отличным от буквы или цифры, который уже не относится к тэгу.
Тэг в этой форме, таким образом, не может использоваться
посреди слова, в отличие от основной формы тэга.
Знак процента, за которым не следует русская буква,
и который не начинает стандартного тэга, не является началом
тэга, а следовательно является частью дальнейшего текста.
Эта форма тэга используется только во входном файле. Стилевому
файлу и интерпретаторам текста следует о ней не знать.
1.4. Интерпретация тэгов.
Тэги разбивают текст на участки, отличающиеся как внешними
(шрифт), так и внутренними (формат представления знаков)
особенностями. Эти особенности предписываются каждому тэгу
в отдельном стилевом файле.
1.4.1. Участки текста, начинаемые тэгами, интерпретация
которых не описана в стилевом файле, СТИРАЮТСЯ при обработке
текста с этим стилевым файлом.
Необходимость такого стирания диктуется представлением о
том, что в эталонных текстах некоего Хранилища может быть много
участков, нужных не всем. Стилевой файл, таким образом, задаёт
не только способ оформления, но и некоторый класс нужд
пользователя.
1.4.2. Концом стираемого участка является тэг переключения
формата текста, начинаемый двумя двоеточиями.
1.4.3. Интерпретация текста состоит в переводе его в выходной
формат. Каждый может создавать и добавлять свои
интерпретаторы, которые должны удовлетворять определённым
требованиям.
1.5. Стандартные тэги.
1.5.1. Защищённые тэги.
Не стирается по правилу 1.4.1, текст
после следующих последовательностей в угловых скобках,
которые поэтому могут безбоязненно использоваться во входном
тексте:
а) метка «мягкий перенос»: <->.
б) метка «неразрывный пробел»: <+>.
в) использующие угловые скобки элементы инвариантного
представления церковнославянских текстов (стандарт
HIP, начиная с версии 8).
1.5.2. Тэги непосредственного оформления.
Эти особые тэги не защищены от стирания
согласно правилу 1.4.1. Использование их во входном тексте
нежелательно. Они указываются в стилевом файле.
Это следующие тэги:
<i> — курсив; </i> — его отмена
<b> — полужирность; </b> — его отмена
<u> — подчёркивание; </u> — его отмена
<d> — отмена всех выделений, выставление их по тэгу
начала абзаца.;
<гарн Arial> — название шрифта (Arial для примера)
<кг 12 — размер шрифта в пунктах (12 для примера)
<выкл влево> — тип выключки абзаца («влево» для примера, иначе: «вправо», «поцентру», «полная»). Всегда начинает новый абзац,
даже если тэг употреблён не в начале строки.
<black>, <red>, <green> и т.п.; а
также <color ff80ff> — названия цветов согласно спецификации HTML.
<|[> — начало таблицы
<|]> — конец таблицы
<||> — начало табличной строки
<|> — смена ячейки в строке таблицы. Может иметь
параметры — 1) количество присоединяемых ячеек справа
2) количество присоединяемых ячеек снизу
3) тэг новой ячейки
1.5.3. Тэги письменности
Они указывают имя способа представления последующего текста.
Эти тэги, в дополнение к п.1.3.2, начинаются с двух двоеточий.
Например, тэг <::слав> означает,
что следующий текст представлен согласно стандарту
представления славянского текста
<::знам> — что следует запись крюков согласно формату знамен
<::ноты> — согласно формату записи нот.
Тэг письменности вместе с параметром образует имя конкретного
интерпретатора этого участка текста.
Тэги письменности должны указываться не во входном файле,
а в стилевом файле для каждого перечисляемого в нём тэга
в противном случае в стилевом файле следует предусмотреть
и их интерпретацию по умолчанию.
Стилевой файл состоит из строк, по одной для каждого тэга.
В строке последовательно набираются:
1. Любой символ-ограничитель, который не понадобится в п.4.
2. Имя тэга в основной форме (т.е. в угловых скобках); может
быть с набором параметров, допускающим отдельную интерпретацию.
3. Тот же символ, что выбран для п.1.
4. Текст, на который будет заменяться текст из п.2.
Здесь могут записываться и знаки самого текста, и любые тэги.
По смыслу стилевого файла, тут нужны тэги, задающие
шрифт, а также тэг вида текста, и другие тэги, для которых
созданы интерпретаторы. Особый тэг <del> объясняется
ниже.
5. Тот же символ, что выбран для п.1.
6. Значение сдвига при необходимости дополнительной
интерпретации. Пример такой необходимости показывает
специальный тэг <skip> (см.пример).
Пример:
|<знам>|<::знам prkl><гарн Paraklht><кг 16>|
|<ноты>|<::ноты><гарн Topor><кг 16>|
|<текст>|<::slav-knj><гарн Knijitsa><кг 16>|
|<примечание>|<::рус 1251><гарн Academia><кг 10><i>|
|<стих 1>|<выкл влево><::slav-ucs><Буквица><гарн Orthodox><кг 10>|
|<стих|<выкл влево><::slav-ucs><гарн Orthodox><кг 10><del>|-5
|<i>|<i>|
Последняя строка примера показывает, как можно защитить от
стирания участки текста, помеченные тэгами непосредственного
оформления, если они всё же использованы во входном тексте.
Для этого их надо заменить на самих себя. Очевидно,
что эта трудность не вызвана техническими сложностями,
а устроена нарочно, из дисциплинарных соображений.
c 20.2.2004 г.