Спецификация минимального, но полного инструментария для создания, правки и хранения документов на церковнославянском языке.
- Формат хранения - вариант Markdown
- Кодировка - Unicode
Инструменты:
- Экранный шрифт ЦСЯ. Шрифт фиксированной ширины, где все надстрочные и управляющие Unicode символы отображаются линейно. Такой шрифт решает проблему читаемости "трехэтажных" выносных символов часто встречающихся в ЦСЯ текстах. И снимает вопрос "в каком порядке это набрано?". Предполагается использование этого шрифта в текстовом редакторе для редактирования ЦСЯ Markdown.
- Доработка имеющихся Unicode шрифтов с целью гармонизации с ЦСЯ блоками других часто используемых языков - русского, греческого, и латиницы (вес и размер букв, межбуквенное расстояние). Снимает необходимость переключения шрифта при публикации в HTML/PDF.
- Конвертер из ЦСЯ Markdown в
- HTML
- LaTeX
- XML
- PDF?
- Драйверы клавиатуры для ввода ЦСЯ текстов. Это может быть как драйвер уровня операционной системы, так и просто виртуальной клавиатурой (то есть реализованной внутри приложения). Желательно иметь возможность пользователю задать "горячие" клавиши для ввода частых комбинаций. Для тех кто имеет навыки работы с HIP, предоставить совместимый с HIP набор горячих клавиш. Например, ввод "\д" автоматически раскрывается в последовательность Unicode символов для представления надстрочного титла "д".
- Как и в любом варианте Markdown, блоки разделяются пустой строкой.
- Разметка внутри блока - по возможности логическая, а не визуальная. Например, "красная
буква" помечается префиксом "~", при этом окрашивается первая буква и все принадлежащие к ней
выносные символы. Подобно этому, выделение
**xxx**
при преобразовании в публикуемый формат может быть стилизовано как разрядка, или киноварь, или что-нибудь ещё. - Документ может иметь (необязательный) YAML-заголовок. Заголовок не отображается при публикации,
но позволяет указать мета-информацию. Например, отсылку к сканам исходного текста, редакторские
пометы, стили отображения, место в литургической таксономии. Мета-информация представляется в
виде
ключ: значение
(каждый ключ на своей строке YAML-заголовка). - Блок может иметь индивидуальную мета-информацию в виде кострукции
(:: мета ::)
. Гдемета
- это набор выраженийключ: значение; ключ: значение
. Этот механизм позволяет задавать блоку текста произвольные ключи (подобно тому как YAML-заголовок задает ключи для файла в целом). Мета-информация блока может помещаться непосредственно до или после блока (не должно быть пустой строки между текстом блока и мета-описанием). Мета-информация блока перестает действовать с окончанием блока. - Markdown текст может иметь отдельно-стоящие мета-описатели (пустая строка до и после мета). В этом случае описанные в мета ключи будут действовать на все последующие блоки до конца файла.
- По соглашению каждое новое предложение в блоке начинается с новой строки без ведущих пробелов. Если предложение очень длинное, его разбивают на несколько строк, но строки продолжения начинаются с одного или наскольких пробелов.
- Библиографическое - цифровое отображение печатного издания. YAML будет иметь библиографические данные печатного издания, отсылку к базе данных постраничных сканов и, возможно, интервал страниц представленных в файле. Обязательно использование меток страниц в тексте (чтобы можно было автоматически запросить картинку с данным блоком). В некоторых случаях мета-информация блока может даже содержать геометрические координаты блока на картинке. Правки ошибок распознования и опечаток должны быть документированы.
- Цифровой документ (компиляция, редакторская обработка, или создание нового документа). Это по сути оригинальное (цифровое) издание. Связь с источниками условная и (если есть) может быть описана в тексте или мета-данных. Метки страниц не используются. Редакторские изменения отслеживаются средствами git.
- Оцифровка печатных изданий (в том числе редких и исторических)
- Лингвистический, морфологический, синтактический, хронологический и т.д. анализ
- Поиск и сравнение
- Компиляция служб
- Переводчики между разными ЦСЯ представлениями
Под разметкой текста понимается следующее:
- Стилистическая разметка: киноварь, разрядка, размер шрифта.
- Структурная разметка: положение в богослужебном круге, день, глас, лик, и т.д.
В дальнейшем речь пойдет о структурной разметке. Единицей структурной разметки является блок (параграф).
В единое дерево идентификаторов всю структурную информацию очевидно не вместить,
поэтому предлагаю присваивать каждому блоку набор атрибутов ключ: значение
. Это позволит отдельно
описывать отношение данного текста к разным структурам: положение в книге, роль в уставе, глас, лик, и пр.
Следует определить таксономию этих атрибутов. Собственно - какие бывают ключи
и какие бывают значения
.
Таксономия не зависит от формата хранения или кодировки. Она определяет общий "словарик" и необходима для того чтобы адекватно ориентироваться в текстах размеченных разными командами.
Например, вот так:
Ключ day
помечает блоки, которые относятся к определенному дню недели. Значения могут быть:
1
- понедельник2
- вторник3
- среда4
- четверг5
- пятница6
- суббота7
- воскресение
Ключ glas
помечает блоки, которые поются определенным гласом. Значения могут быть:
1
- глас первый2
- глас второй3
- глас третий4
- глас четвертый5
- глас пятый6
- глас шестой7
- глас седьмой8
- глас восьмой
Оцифровка печатных изданий имеет следующие особенности:
- возможность запросить факсимиле страницы с данным блоком текста. Это подразумевает разметку разбивки страниц.
- разрешение ссылок на определенную страницу по метке страницы.
- невозможность (или нежелательность) помещать иллюстрации точно в то место где они в печатном издании
Отсканированные страницы книги логически нумеруются от 1 до конца. Это - номера страниц. Они зависят от процесса сканирования: сканируем титульный лист или нет. Они никак не связаны с содержанием страниц.
Напечатанные на страницах - это метки страниц. Они являются частью печатного издания и подвержены тем же ошибкам что и основной текст:
- страницы никак не помеченные - иногда позволительно экстаполировать из меток соседних страниц
- одна и та же метка на двух страницах (ошибка издателя)
- опечатка в метке страницы
Разрыв страницы может произойти практически в любом месте связного текста. Нередко параграф начинается на одной странице и продолжается на следующей. Также связность текста может прерываться иллюстрациями.
Для цифрового корпуса это приводит к тому что:
- блок может принадлежать к нескольким печатным страницам
- иллюстрации, которые разрывают параграф, переносятся при оцифровке вперёд и помещаются после окончания разорваного параграфа
Переносы следует убирать. Если по каким-то причинам важно сохранить информацию о точном месте разбивки слова (как в
оригинальном печатном издании), рекомендуем вместо переноса вставлять "мягкий перенос" U+00AD
.
Когда перенос слова происходит на разрыве страницы, то в цифровом представлении следует сместить разрыв страницы вперед до конца перенесенного слова.
Необходимо использовать git для хранения истории.
Ошибки в оцифровке (и разметке), помечаются словом @typo
в тексте git commit
Исправления проблем оригинала, помечаются словом @errata
.
В мета-заголовке файла указывается image-url
например так:
---
image-url: https://ponomar.net/corpora/Oktoih-1854/images?$pageno
---
То есть рекомендуем:
- Выкладавать факсимиле страниц так, чтобы они были доступны по протоколу
HTTP GET
- Организовывать веб-адреса страниц таким образом, чтобы адрес можно было легко сгенерировать для произвольного номера страницы
- В
image-url
можно использовать мета-переменную$pageno
, которая является номером страницы (а не меткой страницы, см. определение выше).
Разметка страниц в ЦСЯ тексте производится в точке смены страниц перед текстом принадлежащем данной странице. То есть, независимо от того где печатается метка страницы (наверху, внизу, сбоку), разметка помещается перед текстом и обязана содержать номер страницы (также обычно указывает и метку страницы, если есть).