Оформление документов с текстом на церковно-славянском языке.
Исходный документ оформляется в Libre Office в соответствии с набором стилей, представленных в шаблоне Гимнография 20 новый.ott.
В ч/б версии киноварь заменена на bold black начертание.
Далее документ можно конвертировать в TeX файл для дальнейшей компиляции - либо в качестве отдельного самостоятельного документа, либо в составе сборника-книги. См. Wiki.
Промежуточный .init.tex файл позволяет сохранить изменения сделанные в итоговом .tex файле при повторной конвертации из .odt. Изменения отслеживать и вносить (из .init.tex в .tex) можно такими средствами как meld, kdiff3 и т.п.
Для TeX-компиляции (xelatex, lualatex) используются класс документа churchslavichymnsbook.cls и стилевой файл churchslavichymn.sty.
В классе churchslavichymnsbook.cls загружается KOMA-Script класс scrbook. Также возможно задать некоторые параметры книги (размеры, поля и т.п.).
При использовании стилевого файла churchslavichymn.sty отдельно, класс scrbook необходимо указать явно.
Опцией single=true пакета churchslavichymn.sty задается компиляция в качестве отдельного самостоятельного документа. Это влияет в основном на колонтитулы и компоновку оглавления. По умолчанию single=false - сборка книги.
Изначально в данной системе оформления использовалась база данных, в которой в числе прочего для каждого документа указан Заголовок - для колонтитула и оглавления, и ЗаголовокРусский - для PDF-закладок (макросы \TITLE и \TITLERU как параметры макроса \section, через макрос \TOCENTRY).
Эти заголовки могут быть указаны в качестве параметров title и title_ru для функции csl_odt2tex() в скрипте convert.py.
Причем, при отсутствии этих параметров их можно получить из user-defined полей odt-документа (см. ниже).
Шаблоны Гимнография 20 новый.ott и Гимнография 20 новый_BLACK.ott созданы для оформления богослужебных книг с опорой на современные образцы. Определены стили для абзацев, символов, страниц и врезок. Нумерация страниц и оглавления - цся.
Все абзацные ЦСЯ-стили наследуются из общего стиля первого уровня АЗБУКИ. Таким образом можно сменить гарнитуру для всех стилей, которые из него наследуются.
Для основного текста (кегль = 20) предполагается абзацный стиль, который так и называется Основной текст (Text Body).
Для разного рода уставных пометок, как правило красного цвета, определены стили с кеглем, на два пункта меньшим основного (18):
Устав- выравнивание по ширине, с красной строкой.Устав влево- выравнивание влево, без красной строки.Устав по центру- выравнивание по центру.
Для заголовков тропарей, стихир, таких как Тропа́рь, глⷭ҇ а҃:, Богородичен:, Слава и ныне, глⷭ҇ ѕ҃: и т.д. определен стиль Глас. Отличие от стиля Устав по центру - неотрывность от следующего абзаца, то есть от текста тропаря, стихиры и т.д.
Стиль Крест вверху - остаток предыдущего варианта шаблона, где символ Креста для "шапки" брался из шрифта Orthodox.tt eRoos.
Стиль Дата и место - для подписи авторских текстов.
Двумя способами:
- Абзацными стилями:
Устав,Глас,Заглавие(и все видыЗаголовков) и т.д. - для выделения абзаца целиком. - Символьные стили:
киноварь,киноварь 18,киноварь 16,киноварь индикти т.п. - для выделения отдельных символов.
Для отмены киновари у фрагмента текста либо с абзацным "киноварным" стилем (Глас, Устав), либо с символьным стилем группы киноварь, определены символьные стили со странными названиями: киноварь черная, киноварь 18 черная, киноварь 16 черная и другие. Т.о. внутри текста с киноварным стилем оказывается фрагмент со стилем без киновари. Это дает удобство в процессе конвертации (см. макросы \cub и \cuB), а также при работе с расширением Kinovar.
Простая заливка киноварным стилем двух отдельных фрагментов абзаца не всегда удобна, хотя иногда это лучший вариант.
Черно-белый шаблон - полная копия цветного, в котором красный цвет заменен на bold black.
При необходимости иметь две версии документа - цветную и черно-белую, можно работать только с цветной версией, а ч/б получать автоматически, для этого есть как oobacis-макросы, так и py-скрипты (будут выложены позже).
Стили страниц определены для документа с различием страниц - первая, правая (нечетная), левая (четная).
В колонтитулах номера страниц выставляются автоматически с учетом четности - на внешних верхних краях. Текст колонтитула (одинаковый для разворота) берется из user-field.
В шаблоне определены специальные user-defined поля, и в числе прочего - RunningHeader - содержимое этого поля автоматически вставляется в колонтитулы правой и левой страницы (первая - титульная, без колонтитулов). Поле доступно для редактирования через Меню|Файл|Свойства|Свойства пользователя.
Также есть oobasic-диалог, доступный через расширение HymnographyCSL, который позволяет получить текст колонтитула из Заглавия документа и отредактировать его.
Остальные поля (кроме TitleInText при работе с диалогом cslRunningHeaderFromTitle) не используются (оставлены в шаблоне для совместимости).
Для документов с данными шаблонами возможна работа LO-расширений (они и были под них написаны):
- https://github.com/EliseyP/oooInsertFW - вставка т.н. кустоды. Стиль врезки определен в шаблоне.
- https://github.com/EliseyP/Kinovar - выделение текста киноварью.
- https://github.com/EliseyP/HymnographyCSL - работа с колонтитулом, стилями; создание и конвертация в
TeX + PDF
После конвертации TeX-файл, как правило, готов к компиляции (его нужно вставить в main-document, в данном примере файлы single.tex и book.tex). Может потребоваться небольшая правка, например, параметров макросов, вставка вертикальных шпаций и т.п. В частности, в файле СлужбаГосподу.init.tex у макроса \section такие параметры:
\section[tocentry={\TOCENTRY},head={\TITLE}]{%
Однако при данной геометрии в оглавлении строка заголовка, которая берется из \TITLE, выдает overfull hbox. Поэтому в окончательном варианте вместо \TOCENTRY используется такая строка (вставлен разрыв \\*):
\section[tocentry={\texorpdfstring{\KI Слꙋ́жба со а҆ка́ѳїстомъ сладча́йшемꙋ гдⷭ҇ꙋ на́шемꙋ і҆и҃сꙋ\\*хрⷭ҇тꙋ}{\TITLERU}},head={\TITLE}]{%
Также добавлена вертикальная (в данном случае отрицательная) шпация (СлужбаГосподу.tex:18):
\VSPACE{-.7}{-.7}%
перед абзацем с большой буквицей, т.к. он сильно сдвинут вниз из-за буквицы с надстрочником.
Два параметра у шпации \VSPACE - для случаев отдельного документа и книги (чтобы можно было использовать один текст для обоих случаев, без дублирования).
При сборке книги команды уровня выше \section вставляются в главном документе, чтобы при повторной конвертации они не затрагивались.
Скрипт csl2tex.py позволяет быстро получить tex-файл или конечный PDF.
Использование (исполняемый файл csl2tex.py должен быть в PATH):
csl2tex.py [-g] [-b] [-p] [-d] [-T] [-I] odt-filename [odt-filename]
-g - gui make PDF dialog.
-G - только для запуска диалога из LibreOffice.
-p - make PDF.
-b - black color PDF.
-T - Не удалять TeX-каталог сборки pdf.
-I - Из ODT получать только .init.tex и также не удалять TeX каталог.
-d DIR - каталог с TeX стилями (churchslavichymn.sty etc) и прочими вспомогательными файлами (как правило, каталог, в котором находится этот скрипт).
Сборка PDF происходит во временном каталоге filename.odt.tex.
Файлы .tex и .pdf создаются в том же каталоге, где находится .odt файл.
Результат автоматической сборки PDF из odt скорее для быстрого предварительного просмотра, т.к. после конвертации TeX-файл может потребовать некоторой доводки.
Для возможности промежуточного редактирования .tex файла, геометрии и прочего - запуск с опциями -T или -I.
При запуске с опцией -I файл .tex не генерируется автоматически из odt, в нем сохраняются изменения, сделанные вручную. Автоматически генерируется только .init.tex.
В дальнейшем с помощью инструментов сравнивания (meld, kdiff3 etc) изменения в исходном odt, которые оказались в .init.tex, можно внести в .tex для сборки pdf.
Рабочий каталог сборки - filename.odt.tex.
Простой диалог для быстрой компиляции PDF с возможностью поменять некоторые параметры.
Расширение HymnographyCSL позволяет запустить этот диалог из LibreOffice для текущего открытого документа.
Основной шрифт: Ponomar Unicode.
Шрифт для русского (гражданского), греческого и латинского текстов: Noto Serif SemiBold.
Для bold black - Noto Serif Black.
Для экзотического случая еврейского текста: Arial (необходима опция hebrew=true для стилевого файла churchslavichymn.sty).
Каждый документ предполагается в структуре книги как \section-level.
Соответственно в стилевом файле определены команды рубрикации, аналогичные уровням \subsection и \subsubsection, \hI (соответствует ODT-стилю Заголовок 1) и \hII (соответствует ODT-стилю Заголовок 2).
Кегль для этих заголовков (а также \section) определяется относительно параметра fontsize пакета churchslavichymn (по умолчанию fontsize=20pt). Для заголовков:
\section: fontsize + 6pt,\subsectionи\hI: fontsize + 4pt,\subsubsectionи\hII: fontsize + 2pt,
Для книги, состоящей из нескольких документов, разделы выше уровнем задаются командами \chapter или \addchap (\part также доступна).
Например (отвлеченный пример):
\renewcommand{\TITLE}{Мл҃твы Гдⷭ҇ꙋ}%
\renewcommand{\TITLERU}{Молитвы Господу}%
\addchap[tocentry={\TOCENTRY}, head={\TITLE}]{\TITLE}
При оформлении TeX-документа текст заглавия используется в четырех местах. В tex-файле это отражается в использовании макроса \section. Например, абзац со стилем Заглавие конвертируется в блок tex-макросов:
\renewcommand{\TITLE}{А҆ка́ѳїстъ Бл҃говѣ́щенїю Прест҃о́й Бцы}%
\renewcommand{\TITLERU}{Акафист Благовещению Богородицы}%
\section[tocentry={\TOCENTRY},head={\TITLE}]{%
А҆ка́ѳїстъ Бл҃говѣ́щенїю\\*%
Прест҃о́й Бцⷣы%
}%%[END_section]
- Собственно текст заглавия - аргумент макроса
\section. Текст значительно большего кегля, поэтому присутствуют разрывы строк (конвертируются в\\%) - Текст колонтитула (для книги - правой нечетной страницы). Параметр
headмакроса\section. Текст меньшего кегля, но ограничен размерами колонтитула, поэтому иногда вместоhead={\TITLE}текст колонтитула можно задать явно, отредактировав его. - Строка в оглавлении. Задается макросом
\TOCENTRY. В силу ограниченности строки оглавления и специфики его компоновки, автоматическая разбивка строки не всегда успешная, поэтому во избежаниеoverfull hboxвместоtocentry={\TOCENTRY}текст оглавления можно также задать явно (см. пример в разделе Конвертация). - Текст pdf-закладки. Текст в русской транскрипции, также задается макросом
\TOCENTRY.
\newcommand{\TOCENTRY}{\texorpdfstring{\KI \TITLE}{\TITLERU}}
Как было указано выше, изначально аргументы макросов \TITLE и \TITLERU брались из базы данных (в базу они помещались как результат анализа meta-полей odt-документа - UserDefinedProperties.TitleInText и DocumentProperties.Title соответственно).
В данном примере эти значения также могут быть получены из исходного odt-документа через функции get_odt_title() и get_odt_title_ru() в функции csl_odt2tex() модуля CslOdt2Tex, в том случае, если параметры title и title_ru не указаны явно для функции csl_odt2tex().
Предполагается, что user-defined поле TitleInText заполнено.
Поле DocumentProperties.Title фактически получается из имени файла, но м.б. изменено (см. информацию о диалоге HymnographyCSL для работы с заглавием и колонтитулом).
Текст колонтитула при необходимости также можно получить из user-defined поля UserDefinedProperties.RunningHeader (если оно заполнено) с помощью функции get_odt_running_header() в функции csl_odt2tex() модуля CslOdt2Tex.
Для этого нужно раскомментировать regex-правило CslOdt2Tex.py:164
# [r'(head={\\TITLE)(})', fr'\1{title_running_header}\2', 'x'],
в списке правил regs_multi в функции csl_odt2tex().
Общая гарнитура для всего документа задается параметром fontfamily пакета churchslavichymn.sty. Значения:
- ponomar [default]
- triodion
- pochaevsk
- acaphist
- fedorovsk
- vilnius
Соответственно, определены \newfontfamily: \ponomar,\trioidion, \pochaevsk, \acaphist, \fedorovsk, \vilnius для возможности установки основной гарнитуры внутри текста командами:
\let\churchslavonicfont\ponomar,
%\let\churchslavonicfont\triodion
и т.п.
Кегль основного текста задается параметром fontsize пакета churchslavichymn.sty, либо явно в параметре fontsize класса scrbook (по умолчанию также fontsize=20pt).
Межстрочный интервал задается опцией linespread пакета churchslavichymn (по умолчанию linespread=1.15).
Для удобства (это, конечно, субъективно) добавлено сокращение для макроса установки киновари \KI = \cuKinovar.
Для отмены действия киновари, например если весь абзац оформлен киноварью, и только некоторый фрагмент нужно оформить без нее, то вместо оформления двух отдельных сегментов киноварью, внутри макроса киновари \cuKinovar можно использовать макрос \cub. Или \cuB, который также отменяет красный цвет внутри \cuKinovar но кроме первой буквы (используется \cu@tokenizeletter).
Например (\glas - макрос для центрированного текста с киноварью) - два отрывка одинаковы по результату:
\glas{%
Стїхи̑ры ᲂу҆мили́тельны, глаⷭ҇~ѕ҃.\\*%
Подо́бенъ: В\cub{сю̀ ѿложи́вше:}%
}
\glas{%
Стїхи̑ры ᲂу҆мили́тельны, глаⷭ҇~ѕ҃.\\*%
Подо́бенъ: \cuB{Всю̀ ѿложи́вше:}%
}
Оформление киноварью диграфа Оу, ᲂу в начале слова встречается в богослужебных книгах в двух вариантах: для обоих символов, или только для первого. Опция nodigraphkinovar стилевого файла churchslavonic.sty позволяет выбрать один из вариантов оформления.
nodigraphkinovar=true - киноварь только для первого символа.
Для стилевого файла churchslavichymn.sty тип цвета киновари определяется параметром kinovarcolor.
Возможные значения: red, grey (gray), boldblack.
- red - обычный красный цвет, определенный макросом
\definecolor{kinovar}{rgb}{1,0,0}(вариант красного цвета). - grey (gray) - соответствует параметру
[grey (gray)]пакетаchurchslavonic. - boldblack - для случая ч/б печати, если серый цвет не подходит по каким-либо причинам. Тогда киноварь заменяется, как и в
odt-шаблоне на bold black начертание.
В ODT-шаблоне определены две группы стилей для абзацев с буквицей. С обычной и большой буквицей.
Абзац с буквицейАбзац с буквицей и надстрочникАбзац с буквицей и два надстрочника
Буквица на две строки. Гарнитура Indiction Unicode (символьный стиль киноварь индикт). Поскольку шрифт Unicode, работать с ним можно как с обычным текстом гарнитуры Ponomar Unicode.
Для этой группы стилей определен один макрос \cul.
Шрифт для обычной буквицы можно переопределять либо в самом стилевом файле, либо в преамбуле главного документа.
Пример: churchslavichymn.sty:112-115:
\let\LettrineFontName\indiction
%\let\LettrineFontName\Vertograd
%\let\LettrineFontName\churchslavonicfont - гарнитура, выбранная по умолчанию.
Абзац с большой буквицейАбзац с большой буквицей и надстрочникАбзац с большой буквицей и два надстрочника
Фигурная буквица на пять строк. Гарнитура Bukvica.ttf - декоративный не-Unicode (UCS) шрифт, соответственно работа с ним специфическая, особенно для случая с надстрочниками.
Соответственно, для этого стиля определены макросы:
\culB - для буквицы без надстрочника и \culs - для буквицы с надстрочниками.
При работе с ODT-документом в некоторых случаях возникает необходимость быстрого перевода Unicode символов буквицы в UCS символы для гарнитуры Bukvica и обратно. Эта задача решается с помощью расширения onik.
\ParFilling
Макрос для управления вида последней строки абзаца.
У макроса шесть параметров-флагов, в тексте он присутствует в таком виде (в конце абзаца):
\ParFilling{}{}{}{}{}{}%{lsp}{lsm}{pis}{pie}{pif}{pih} (в редакторе вставляется сниппетом).
{lsp}{lsm}{pis}{pie}{pif}{pih} - подсказки, названия применяемых макросов.
{lsp}-\looseness=+1- увеличить по возможности абзац на одну строку.{lsm}- уменьшить по возможности абзац на одну строку.{pis}- последняя строка заполнена (по возможности) на 10%.{pie}- последняя строка заполнена (по возможности) на 90%.{pif}- последняя строка заполнена (по возможности) на 100%.{pih}- последняя строка заполнена (по возможности) на 50%.
Флаги можно комбинировать. Заполнение - любым символом, единица в примере (1) выбрана для удобства.
Пример:
\Txt{%%[BEGIN_Txt]
\KI{Бг҃оро́диченъ: І҆}и҃са моего̀ и҆~бг҃а носи́вшаѧ хрⷭ҇та̀ несказа́ннѡ, бцⷣе мр҃і́е, того̀ молѝ при́снѡ ѿ~бѣ́дъ сп҃сти́сѧ рабѡ́мъ твои̑мъ, и҆~пѣвцє́мъ твои̑мъ, неискꙋсомꙋ́жнаѧ дв҃о.%
\ParFilling{}{}{}{}{}{1}%{lsp}{lsm}{pis}{pie}{pif}{pih};
}%%[END_Txt]
В данном случае последнее слово абзаца - дв҃о - оказывалось единственным на последней строке. Был задействован флаг {pih} (\parfillskip=0pt plus .5\textwidth)
Можно использовать вариант неискꙋсомꙋ́жнаѧ~дв҃о, но такое решение не всегда доступно.
Макросы для увеличения/уменьшения строк на странице:
\longpage=\enlargethispage{\baselineskip}\shortpage\longpageII\shortpageII
В модуле OdtTextPortion.py в словарях para_dic и char_dic определены правила конвертации для отдельного стиля. Указаны строки ДО и ПОСЛЕ текста.
Идея взята из проекта Writer2LaTeX в котором можно определять параметры конвертации конкретных стилей в xml-файле конфигурации. В данном случае правила могут быть более гибкими и контроль более полным.
\hI-Заголовок 1(H1)\hII-Заголовок 2(H2)\hIII-Заголовок 3(H3)\hIV-Заголовок 4(H4)
-
\section-Заглавие(Title) -
\Txt- соответствуют стили:Основной текст(Text body). Отдельный макрос определен для удобства контроля над версткой (см. ниже макрос\ParFilling).Без красной строкиДлинная строкаОбратный отступОсновной текст с отступомОтступыПервая строка с отступомСтих жирныйЗаметки
-
\TxtC-По центру -
\sSubtitle-Подзаголовок -
\SmallМалый 18Малый 18 без красной строкиИрмос 18
-
\SmallerМалый 16Ирмос 16
-
\FrameNarrow-Вставка узкая -
\culB-Абзац с большой буквицей -
\culsАбзац с большой буквицей и надстрочникАбзац с большой буквицей и два надстрочника
-
\culАбзац с буквицейАбзац с буквицей и надстрочник
-
\TxtRU-Русский текст
Киноварные стили
\ustav-Устав\ustavL-Устав влево\ustavC-Устав по центру\glas-Глас(по центру, неотрывен от последующего абзаца)
\KI-киноварь\KinovarBold-киноварь жирная\Small-Малый 18\KIsmall-киноварь 18\KIsmaller-киноварь 16\KinovarXXX-киноварь 30\CharSpaced-разрядка\KinovarIndyct-киноварь индикт\KinovarBukvicaBig-Киноварь Буквица большая\Rus-Русский текст
Макросы \Troic, \Troich, \Trisvjat, \Proro позволяют избежать недоработки кернинга для слов под титлом Троиц-, Троич-, Трисвят-, Проро- в случае прописной первой буквы слова (гарнитура Ponomar Unicode).
Соответственно, слово Трⷪ҇ца можно набрать макросом: \Troic{}а. Остальные - аналогично.
Пример: Трⷪ҇ца \Troic{}а.
Для Киновари у первой буквы слова: \expandafter\KI\Troic{}а
Включена автозамена при конвертации ODT->TEX
Данные макросы работают таким образом только если \churchslavonicfont установлен в \ponomar (см. Гарнитуры), т.к. подобные проблемы с кернингом только в гарнитуре Ponomar Unicode (на данный момент).
Кустоду (первое слово следующей страницы в правом нижнем углу страницы, выставляются автоматически) в некоторых случаях необходимо отменить. Для этого определен стиль страницы NoFootStyle. Применяется макросом: \thispagestyle{NoFootStyle}
README.pdf - этот текст
Конвертация Odt->TeX
Скрипт convert.py, функция csl_odt2tex()
Odt-файл filename.odt конвертируется в TeX-файл filename.init.tex.
Если указано через опцию copy_from_init,
filename.init.tex копируется в файл filename.tex.
Скрипт csl2tex.py - быстрая конвертация ODT → TeX [ → PDF ].
- churchslavichymnsbook.cls - класс документа
- churchslavichymn.sty - стилевой файл
- hyphens.tex - пользовательские переносы
- hyph-utf8/hyph-cu.tex - вариант правил переноса, в котором запрещены переносы после первой ѡ҆, ѿ, ᲂу̑ (требуется пересобрать tex-форматы. Находится в
texlive/YEAR/texmf-dist/tex/generic/hyph-utf8/patterns/tex/) - single.tex, single_black.tex - для компиляции отдельным документом
- book.tex, book_black.tex - для компиляции сборника
Конвертированные TeX файлы
- СлужбаГосподу.init.tex
- АкафистБогородице.init.tex
- СлужбаГосподу.tex
- АкафистБогородице.tex
- Полунощница.init.tex
- Полунощница.tex
Компилированные PDF файлы
- book.pdf - сборник (СлужбаГосподу + АкафистБогородице)
- book_black.pdf - сборник ч/б
- single.pdf - Акафист Богородице отдельно
- single_black.pdf - Акафист Богородице отдельно ч/б
- polun.pdf - Полунощница из Часослова.
Скрипты для TeX-компиляции
Шрифты
Images
- cross.png - для "шапки"
- crossblack.png




