-
Notifications
You must be signed in to change notification settings - Fork 2
/
churchslavonic.sty
67 lines (57 loc) · 1.7 KB
/
churchslavonic.sty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
% Copyright 2016 Slavonic Computing Initiative
% http://sci.ponomar.net
%
\ProvidesPackage{churchslavonic}[v0.2.5 2024.09.18 Typesetting in Church Slavonic]
\DeclareOption{autocolormarks}{
\PassOptionsToPackage{\CurrentOption}{cu-kruk}
}
\DeclareOption{noautocolormarks}{
\PassOptionsToPackage{\CurrentOption}{cu-kruk}
}
\DeclareOption*{
\PassOptionsToPackage{\CurrentOption}{cu-kinovar}
}
\ProcessOptions\relax
\RequirePackage{ifluatex}
\RequirePackage{cu-num}
\RequirePackage{cu-calendar}
\RequirePackage{cu-util}
\RequirePackage{cu-kinovar}
\RequirePackage{cu-kruk}
% underscore is a valid character in Church Slavonic
\let\cu@oldunderscore=_
{%
\catcode`\_\active
\global\protected\def_{\ifmmode\cu@oldunderscore\else\textunderscore\discretionary{}{}{}\fi}%
}%
\AtBeginDocument{\catcode`\_\active}%
\ifluatex
\AtBeginDocument{\cu@set@hyphenchar@lualatex}
\else
\AtBeginDocument{\cu@set@hyphenchar@xelatex}
\fi
\def\cu@set@hyphenchar@lualatex{
\@ifpackageloaded{polyglossia}{%
\textchurchslavonic{\prehyphenchar=`\_}%
}{%
}%
}%
\def\cu@set@hyphenchar@xelatex{
}%
% suppress variable distance between lines
\lineskiplimit -1ex
% margin marks
\def\cu@mmark@counter{0}%
\def\cuMarginMarkSkip{0.6em}%
\def\cuMarginMarkText#1{#1}%
\protected\def\cuMarginMark#1{%
\leavevmode
\global\edef\cu@mmark@counter{\the\numexpr 1 + \cu@mmark@counter}%
\label{mnote.\cu@mmark@counter}%
\ifodd\getpagerefnumber{mnote.\cu@mmark@counter}\relax
\vadjust{\hbox{\vbox to 0pt{\vss\hbox to 0pt{\hskip\textwidth\hskip\cuMarginMarkSkip \cuMarginMarkText{#1}\hss}\vskip 0.25\baselineskip}}}%
\else
\vadjust{\hbox{\vbox to 0pt{\vss\hbox to 0pt{\hss \cuMarginMarkText{#1}\hskip\cuMarginMarkSkip}\vskip 0.25\baselineskip}}}%
\fi
}%
\endinput