Оформление документов с текстом на церковно-славянском языке.
Исходный документ оформляется в 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