diff options
author | Karl Berry <karl@freefriends.org> | 2016-05-15 22:16:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-05-15 22:16:48 +0000 |
commit | 4f080f1e6b8bb62696c07e145f7409340531f24e (patch) | |
tree | f32f753eb85bd701f92c7253489b58fd36ae963d /Master | |
parent | 0268f77d41324e2fcc74e3d36cec0039fef41151 (diff) |
churchslavonic (15may16)
git-svn-id: svn://tug.org/texlive/trunk@41167 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
15 files changed, 1473 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/churchslavonic/LICENSE b/Master/texmf-dist/doc/latex/churchslavonic/LICENSE new file mode 100644 index 00000000000..18ca1a93c72 --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/LICENSE @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright (c) 2016 Aleksandr Andreev and Mike Kroutikov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Master/texmf-dist/doc/latex/churchslavonic/README b/Master/texmf-dist/doc/latex/churchslavonic/README new file mode 100644 index 00000000000..769a09c945d --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/README @@ -0,0 +1,55 @@ +churchslavonic +============== + +LaTeX package to typeset documents in Church Slavonic language (also known as Church Slavic +and Old Church Slavonic), ISO 639-1 code "cu". Includes hyphenation patterns, +fonts, polyglossia driver, and supporting macros. + +Only Unicode input encoding is supported. This package requires use of a modern TeX engine that supports +Unicode, such as XeTeX or LuaTeX. + +Installation +------------ + + tlmgr install churchslavonic + + +Dependencies +------------ + +tlmgr handles dependencies transparently and required packages will be automatically pulled in - no need to do +anything else. + +The following information is only needed if you do not use tlmgr and install churchslavonic package by directly +downloading it from CTAN. + +Dependencies: + +* hyphen-churchslavonic +* fonts-churchslavonic +* intcalc +* etoolbox +* xcolor + +Support +------- + +For bug reports and support questions, please use GitHub issue tracker: + + https://github.com/slavonic/cu-tex/issues + +GitHub url +---------- + + https://github.com/slavonic/cu-tex + +Authors and maintainers +----------------------- + +Mike Kroutikov <pgmmpk@gmail.com>. +Aleksandr Andreev <aleksandr.andreev@gmail.com>. + +License +------- + +MIT diff --git a/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-en.pdf b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-en.pdf Binary files differnew file mode 100644 index 00000000000..879c2e447be --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-en.pdf diff --git a/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-en.tex b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-en.tex new file mode 100644 index 00000000000..d26a9650553 --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-en.tex @@ -0,0 +1,32 @@ +% +% The MIT License (MIT) +% +% Copyright (c) 2016 Aleksandr Andreev and Mike Kroutikov +% +% Permission is hereby granted, free of charge, to any person obtaining a copy of this +% software and associated documentation files (the "Software"), to deal in the Software +% without restriction, including without limitation the rights to use, copy, modify, +% merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +% permit persons to whom the Software is furnished to do so, subject to the following +% conditions: +% +% The above copyright notice and this permission notice shall be included in all copies or +% substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +% INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +% PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +% LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +% OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +% OTHER DEALINGS IN THE SOFTWARE. +% +\documentclass[11pt]{article} +\usepackage{comment} + \includecomment{EN} + \excludecomment{RU} +\usepackage{polyglossia} + \setmainlanguage{english} + \setotherlanguage{russian} + \setotherlanguage{churchslavonic} + +\input churchslavonic.tex diff --git a/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.pdf b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.pdf Binary files differnew file mode 100644 index 00000000000..6f26930e825 --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.pdf diff --git a/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.tex b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.tex new file mode 100644 index 00000000000..433cbac109b --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.tex @@ -0,0 +1,32 @@ +% +% The MIT License (MIT) +% +% Copyright (c) 2016 Aleksandr Andreev and Mike Kroutikov +% +% Permission is hereby granted, free of charge, to any person obtaining a copy of this +% software and associated documentation files (the "Software"), to deal in the Software +% without restriction, including without limitation the rights to use, copy, modify, +% merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +% permit persons to whom the Software is furnished to do so, subject to the following +% conditions: +% +% The above copyright notice and this permission notice shall be included in all copies or +% substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +% INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +% PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +% LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +% OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +% OTHER DEALINGS IN THE SOFTWARE. +% +\documentclass[11pt]{article} +\usepackage{comment} + \includecomment{RU} + \excludecomment{EN} +\usepackage{polyglossia} + \setmainlanguage{russian} + \setotherlanguage{english} + \setotherlanguage{churchslavonic} + +\input churchslavonic.tex diff --git a/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic.tex b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic.tex new file mode 100644 index 00000000000..0d95efd5adb --- /dev/null +++ b/Master/texmf-dist/doc/latex/churchslavonic/churchslavonic.tex @@ -0,0 +1,571 @@ +\newfontfamily\russianfont[Script=Cyrillic,Ligatures=TeX]{Times New Roman} +\newfontfamily\russianfonttt[Ligatures=TeX]{lmmono10-regular.otf} +\newfontfamily\russianfontsf[Ligatures=TeX]{lmsans10-regular.otf} +\newfontfamily\churchslavonicfont[Script=Cyrillic,Ligatures=TeX,HyphenChar="005F]{PonomarUnicode.otf} + +\usepackage{churchslavonic} +\usepackage{hyperref} +\usepackage{xltxtra} +\usepackage{doc} +\usepackage{lettrine} + +\def\pkg#1{\textsf{#1}} +\def\cs#1{\texttt{\textbackslash #1}} +% +\cuDefineDateFormat{long}{% + \cuDayName{\cuDOW}, + \cuNum{\cuDAY}_гѡ~% + \cuMonthName{\cuMONTH}~% + лѣ́та ѿ сотворе́нїѧ мі́ра~\cuNum{\cuYEARAM}% +} +% +\makeatletter +\def\cu@lettrine{\lettrine[lines=3,findent=0pt,nindent=0pt]} +\def\cuLettrine{\cu@tokenizeletter\cu@lettrine} +\renewcommand{\LettrineFontHook}{\cuKinovarColor} +\makeatother + +\begin{document} + +\begin{EN} +\title{\pkg{churchslavonic} package --- Church Slavonic Typography in \LaTeX} +\author{Aleksandr Andreev and Mike Kroutikov\\version~0.1} +\end{EN} + +\begin{RU} +\title{Пакет \pkg{churchslavonic} --- верстка церковнославянских текстов в системе \LaTeX} +\author{Александр Андреев и Михаил Крутиков\\версия~0.1} +\end{RU} + +\date{\today} +\maketitle + +\begin{EN} +\begin{abstract} +Package \pkg{churchslavonic} provides fonts, hyphenation patterns and supporting macros to typeset +Church Slavonic texts. +\end{abstract} +\end{EN} + +\begin{RU} +\begin{abstract} +Пакет \pkg{churchslavonic} позволяет верстать церковнославянские документы. В пакет включены шаблоны переносов, +шрифты и набор необходимых макрокоманд. +\end{abstract} +\end{RU} + +\tableofcontents + +\begin{EN} +\section*{Introduction} +Church Slavonic (also called Church Slavic, Old Church Slavonic +or Old Slavonic; ISO 639-2 code \texttt{cu}) is a literary language used by +the Slavic peoples; presently it is used as a liturgical language by the +Russian Orthodox Church, other local Orthodox Churches, as well +as various Byzantine-Rite Catholic and Old Ritualist communities. +The package \texttt{churchslavonic} provides fonts, hyphenation +patterns and supporting macros to typeset +Church Slavonic texts in \TeX{}. + +The package is designed to support Unicode text encoded in UTF-8. +Texts encoded in legacy codepages (such as HIP and UCS) may be +converted to Unicode using a separate bundle of utilities. +See the \href{http://sci.ponomar.net/} +{Slavonic Computing Initiative website} for more information. +To use the tools in this package, you will need a Unicode-aware \TeX{} +engine such as \XeTeX{} or \LuaTeX{}. +\end{EN} + +\begin{RU} +\section*{Введение} +Церковнославянский язык (ISO 639-2 код \texttt{cu}) -- +древний литературный язык славянских народов, +который теперь используется в основном как богослужебный язык +в Русской Православной Церкви, других поместных православных +церквях, а также в грекокатолических и старообрядческих общинах. +Пакет \pkg{churchslavonic} позволяет верстать церковнославянские тексты +в системе \TeX{}. В пакет включены шаблоны переносов, +шрифты и набор необходимых макрокоманд. + +Данный пакет поддерживает только набор в стандарте Юникод. +Тексты, набранные в устаревших кодировках HIP и UCS, +можно конвертировать в Юникод (точнее -- в UTF-8) с помощью +отдельных утилит, которые можно найти на сайте +\href{http://sci.ponomar.net/} +{Инициативной группы славянской информатики}. +Для того, чтобы использовать возможности этого пакета Вам +понадобится система верстки \TeX{}, поддерживающая Юникод, +например, \XeTeX{} или \LuaTeX{}. +\end{RU} + +\begin{EN} +\section{How to use the package} +To use \pkg{churchslavonic} package one needs to include the following declarations into the document +preamble: +\end{EN} + +\begin{RU} +\section{Как пользоваться пакетом} +Добавьте следующие определения в преамбулу вашего документа: +\end{RU} + +\begin{verbatim} +\usepackage{polyglossia} +\setmainlanguage{churchslavonic} +\usepackage{churchslavonic} +\end{verbatim} + +\begin{EN} +After that, use standard \pkg{polyglossia} commands to control current language. +\end{EN} + +\begin{RU} +После чего переключайтесь между языками стандартными средствами пакета \pkg{polyglossia}. +\end{RU} + +\begin{EN} +\subsection{Options \texttt{color}, \texttt{gray}, and \texttt{bw}} +These options control what color actually being used for text coloring commands like \cs{cuKinovar}. + +\begin{itemize} +\item \texttt{color} this is the default option and it preserves the original color (a shade of red). +\item \texttt{gray} replaces red color with a gray - useful if you are printing on a media that + does not support colors, but is capable of reproduction shades of gray. +\item \texttt{bw} replaces red color with black (effectively turning off commands like \cs{cuKinovar} and \cs{cuKinovarColor}). Use + this option to generate document that will be printed in blank-and-white. +\end{itemize} +Example: +\end{EN} + +\begin{RU} +\subsection{Опции \texttt{color}, \texttt{gray} и \texttt{bw}} +Опции позволяют отключать цвет раскраски текста в командах типа \cs{cuKinovar}. Полезны для создания версий для печати на +устройствах которые не поддерживают цветности. + +\begin{itemize} +\item \texttt{color} эта опция используется по умолчанию и означает что используется нормальный красный цвет. +\item \texttt{gray} заменяет красный цвет серым --- используйте эту опцию если ваше устройство печати не + поддерживает цветности, но может качественно передавать градации серого цвета. +\item \texttt{bw} отключает всякую раскраску --- используйте для создания черно-белой версии документа. +\end{itemize} +Пример: +\end{RU} + +\begin{verbatim} +\usepackage[gray]{churchslavonic} +\end{verbatim} + +\begin{EN} +\section{Numbers} + +Church Slavonic numbering system is heavily based on the Old Greek one and uses +letters as digits. +For more information on the matter, see the appropriate section in \cite{UN41}. +\end{EN} + +\begin{RU} +\section{Числа} +Способ записи чисел в церковнославянском языке основывается на древнегреческом и в +качестве цифр использует буквы. За подробностями отсылаем интересующегося читателя к +соответствующей главе \cite{UN41}. +\end{RU} + +\begin{EN} +\subsection{\cs{cuNum}} +Use this command to typeset a Church Slavonic number. +The command takes a single argument that should expand to a number (register name works too). +\end{EN} + +\begin{RU} +\subsection{\cs{cuNum}} +Команда печатает число в церковнослявянской нотации. +Она принимает единственный аргумент. Аргументом может быть текст, командная последовательность, или имя +целочисленного регистра. Единственное условие --- аргумент должен раскрыться в число. +\end{RU} + +\begin{center} +\begin{churchslavonic} +\begin{tabular}{| l | l |} +\hline +\verb+\cuNum{1}+ & \cuNum{1} \\ +\verb+\cuNum{12}+ & \cuNum{12} \\ +\verb+\cuNum{123}+ & \cuNum{123} \\ +\verb+\cuNum{1234}+ & \cuNum{1234} \\ +\verb+\cuNum{10345}+ & \cuNum{10345} \\ +\verb+\cuNum{12345}+ & \cuNum{12345} \\ +\verb+\cuNum{123456}+ & \cuNum{123456} \\ +\verb+\cuNum{800456}+ & \cuNum{800456} \\ +\verb+\cuNum{1234567}+ & \cuNum{1234567} \\ +\verb+\cuNum{1500567}+ & \cuNum{1500567} \\ +\verb+\cuNum{12345678}+ & \cuNum{12345678} \\ +\verb+\cuNum{123456789}+ & \cuNum{123456789} \\ +\hline +\end{tabular} +\end{churchslavonic} +\end{center} + + +\begin{EN} +\section{Dates} +\end{EN} + +\begin{RU} +\section{Даты} +\end{RU} + +\begin{center} +\begin{churchslavonic} +\begin{tabular}[]{ | l | l | } +\hline +\verb+\cuDate{2016-4-21}+ & \cuDate{2016-4-21} \\ +\verb+\cuJulianDate{2016-4-21}+ & \cuJulianDate{2016-4-21} \\ +\verb+\cuDate{\cuToday}+ & \cuDate{\cuToday} \\ +\hline +\end{tabular} +\end{churchslavonic} +\end{center} + +\begin{EN} +\subsection{\cs{cuDate}} +Command formats the date (according to the current format). Argument is a triplet of numbers \texttt{YYYY-MM-DD} specifying +the date. Output will be something like this: \textchurchslavonic{\cuDate{2016-04-22}}. + +Note that \texttt{YYYY-MM-DD} values are not being normalized or interpreted in any way. Thus, it is totally fine to +call \verb+\cuDate{2016-4-32}+ even though April 32 is not a valid date. It will be formatted and printed as April 32. This +makes it possible to use this macro in a phrase like ``date \verb+\cuDate{2016-4-32}+ is not a valid date in any calendar''. + +However, if your date format uses \cs{cuDOW} (day of the week) or \cs{cuYEARAM} (year Anno Mundi), the later quantities are computed by +interpreting date as a Gregorian calendar date. Also, if input date is not a valid date, it will be normalized via extrapolation. +For example, April 32nd will be interpreted as May 2nd for the purpose of determining values of the day of the week and year Anno Mundi. + +If your format uses \cs{cuDOW} or \cs{cuYEARAM}, and your date is Julian, not Gregorian, you must use \cs{cuJulianDate} to +correctly format days of the week and year Anno Mundi. + +The best practice is to always use \cs{cuDate} with Gregorian dates and use \cs{cuJulianDate} with Julian dates regardless +of the current date format. This way you can later on switch date formatting style without worrying about getting wrong output. +\end{EN} + +\begin{RU} + +\subsection{\cs{cuDate}} +Команда форматирует дату (в соответствии с текущим форматом). Аргумент должен иметь вид \texttt{YYYY-MM-DD}. Результат +может выглядеть примерно так: \textchurchslavonic{\cuDate{2016-04-22}}. + +Отметим что значение даты никоем образом не интерпретируется и не нормализируется. Поэтому можно вызывать макрокоманду и с +невозможными датами, нпример 32-е апреля --- така дата будет отформатирована как 32-е апреля. Так что команду \cs{cuDate} можно +использовать для набора фраз вроде ``дата \verb+\cuDate{2016-04-22}+ не существует ни в одном календаре''. + +Однако, если вы используете свой формат даты и в этом формате задействованы символические переменные \cs{cuDOW} (день недели) +или \cs{cuYEARAM} (год от сотворения мира), то значения этих переменных будут вычислены исходя из даты --- и дата интерпретируется +как дата грегорианского календаря. Кроме того, невозможные даты будут нормализованы методом экстраполяции. Например, 32 апреля +будет интерпретировано как 2 мая для целей определения дня недели и года от сотворения мира. + +Если ваш формат использует день недели (\cs{cuDOW}) или год от сотворения мира (\cs{cuYEARAM}) и вы указываете дату юлианского календаря, +вы должны вместо \cs{cuDate} пользоваться макрокомандой \cs{cuJulianDate} для правильной обработки дня недели и года от сотворения мира. + +Лучше всего всегда использовать \cs{cuDate} для форматирования грегорианских дат и всегда использовать \cs{cuJulianDate} для +форматирования юлианских дат --- вне зависимости от значения текущего формата. Таким образом вы можете впоследствии изменить +формат даты (например, добавив в него день недели) и результат останется правильным. +\end{RU} + +\begin{EN} +\subsection{\cs{cuDefineDateFormat}} +Command allows one to define date format. It does not change how \cs{cuDate} formats its output (for that, use \cs{cuUseDateFormat}). +Example: +\end{EN} + +\begin{RU} +\subsection{\cs{cuDefineDateFormat}} +Команда определяет формат даты. Она никак не влияет на то как \cs{cuDate} форматирует свой вывод (для этого используется \cs{cuUseDateFormat}). +Пример: +\end{RU} + +\begin{center} +\begin{churchslavonic} +\begin{tabular}{l} +\verb+\cuDefineDateFormat{long}{%+\\ +\verb+ \cuDayName{\cuDOW},+\\ +\verb+ \cuNum{\cuDAY}+_гѡ\verb+~%+\\ +\verb+ \cuMonthName{\cuMONTH}~%+\\ +\verb+ +лѣ́та ѿ сотворе́нїѧ мі́ра\verb+~%+\\ +\verb+ \cuNum{\cuYEARAM}%+\\ +\verb+}+\\ +\end{tabular} +\end{churchslavonic} +\end{center} +% +\begin{EN} +defines a format with name \texttt{long}. If we use this format to print the same date as before, we will get: +\textchurchslavonic{\cuUseDateFormat{long}\cuDate{2016-04-22}}. +\end{EN} +% +\begin{RU} +определяет новый формат с именем \texttt{long}. Если мы напечатаем дату этим форматом, то получим: +\textchurchslavonic{\cuUseDateFormat{long}\cuDate{2016-04-22}}. +\end{RU} + +\begin{EN} +Following symbolic names can be used when formatting the date: +\begin{itemize} +\item \cs{cuYEAR} --- year part of date (number, like \texttt{2016}) +\item \cs{cuYEARAM}\footnotemark[1] --- year since world creation, aka Anno Mundi (number, like \texttt{7525}) +\item \cs{cuMONTH} --- month part of date (number from 1 to 12) +\item \cs{cuDAY} --- day of the month +\item \cs{cuDOW}\footnotemark[1] --- day of the week (number from 0 to 6, where 0 means ``Sunday'') +\item \cs{cuINDICTION} --- indiction year (number from 1 to 15) +\end{itemize} +\footnotetext[1]{If your format uses this value, make sure that you format date with a correct macro: you must use +\cs{cuDate} if passed date is Gregorian, or \cs{cuJulianDate} if you pass Julian date.} +\end{EN} + +\begin{RU} +При определении формата можно пользоваться следующими символическими именами: +\begin{itemize} +\item \cs{cuYEAR} --- год (число, например \texttt{2016}) +\item \cs{cuYEARAM}\footnotemark[1] --- год от сотворения мира, Anno Mundi (число, например \texttt{7525}). +\item \cs{cuMONTH} --- месяц (число от 1 до 12) +\item \cs{cuDAY} --- день месяца +\item \cs{cuDOW}\footnotemark[1] --- день недели (число от 0 to 6, где 0 означает ``воскресение'') +\item \cs{cuINDICTION} --- индикт (число от 1 до 15) +\end{itemize} +\footnotetext[1]{Если ваш формат + пользуется этим значением, вы должны форматировать дату правильной макрокомандой: \cs{cuDate} + если вы передаете дату грегорианского календаря, или \cs{cuJulianDate} если используется дата юлианского календаря} +\end{RU} + +\begin{EN} +\subsection{\cs{cuUseDateFormat}} +This command sets the date format to be used by the subsequent \cs{cuDate} and \cs{cuJulianDate}. + +\subsection{\cs{cuJulianDate}} +Formats date, just like \cs{cuDate} does, but argument is interpreted as a Julian calendar date, not a Gregorian calendar one. +This makes difference only if your format is using symbolic names \cs{cuDOW} and/or \cs{cuYEARAM}. + +\subsection{\cs{cuMonthName}} +Command expands numeric argument (month number) into textual representation. It is typically used when defining date format. +For example, date format named \texttt{default} is defined as: +\end{EN} + +\begin{RU} +\subsection{\cs{cuUseDateFormat}} +Макро устанавливает имя текущего формата даты. Этот формат будет использоваться при последующих вызовах макрокоманд +\cs{cuDate} и \cs{cuJulianDate}. + +\subsection{\cs{cuJulianDate}} +Форматирует дату в соответствии с текущим форматом подобно команде \cs{cuDate}. Отличие заключается в том, что аргумент +интерпретируется как дата юлианского а не грегорианского календаря. Это имеет значение только если текущий формат даты +использует символические имена \cs{cuDOW} (день недели) или \cs{cuYEARAM} (год от сотворения мира). + +\subsection{\cs{cuMonthName}} +Команда раскрывает числовой аргумент в текстовое представление месяца. Команда обычно используется при задании формата +даты. Например, формат с именем \texttt{default} определен так: +\end{RU} +% +\begin{center} +\begin{churchslavonic} +\begin{tabular}{l} +\verb+\cuDefineDateFormat{default}{%+\\ +\verb+ \cuNum{\cuDAY}~\cuMonthName{\cuMONTH}%+\\ +\verb+ ~+лѣ́та\verb+~\cuNum{\cuYEAR}%+\\ +\verb+}%+\\ +\end{tabular} +\end{churchslavonic} +\end{center} + +\begin{EN} +\subsection{\cs{cuDayName}} +Expands numeric argument into a textual representation of the day of the week using nominative case. + +\subsection{\cs{cuDayNameAccusative}} +Expands numeric argument into a textual representation of the day of the week using accusative case. + +\subsection{\cs{cuToday}} +This macro expands to a triplet \texttt{YYYY-MM-DD}. Date is generated using Gregorian calendar. + +\subsection{\cs{cuJulianToday}} +This macro expands to a triplet \texttt{YYYY-MM-DD}. Date is generated using Julian calendar. + +It is a shortcut for \verb+\cuAsJulian{\cuToday}+. + +\subsection{\cs{cuAsJulian}} +Converts Gregorian date to Julian date. Input and output use numeric triplet format \texttt{YYYY-MM-DD}. + +Useful when the same date needs to be formatted as Gregorian and as Julian date. + +\subsection{\cs{cuAsGegorian}} +Converts Julian date to Gregorian date. Input and output use numeric triplet format \texttt{YYYY-MM-DD}. + +\end{EN} + +\begin{RU} +\subsection{\cs{cuDayName}} +Команда раскрывает числовой аргумент в текстовое представление дня недели в именительном падеже. + +\subsection{\cs{cuDayNameAccusative}} +Команда раскрывает числовой аргумент в текстовое представление дня недели в винительном падеже. + +\subsection{\cs{cuToday}} +Эта макрокоманда раскрывается в текущую дату в виде триплета \texttt{YYYY-MM-DD}. Используется грегорианский календарь. + +\subsection{\cs{cuJulianToday}} +Эта макрокоманда раскрывается в текущую дату в виде триплета \texttt{YYYY-MM-DD}. Используется юлианский календарь. + +Команда просто ракрывается в: \verb+\cuAsJulian{\cuToday}+. + +\subsection{\cs{cuAsJulian}} +Преобразует грегорианскую дату в юлианскую. Дата задается и выводится как числовой триплет \texttt{YYYY-MM-DD}. + +Команда полезна когда одну и ту же дату надо представить и в грегорианском и в юлианском календаре. + +\subsection{\cs{cuAsGregorian}} +Преобразует юлианскую дату в грегорианскую. Дата задается и выводится как числовой триплет \texttt{YYYY-MM-DD}. + +\end{RU} + +\begin{EN} +\section{Kinovar} +Printed and hand-written Church Slavonic texts often use color to highlight sectional and paragraph structure. Typical style +would use red color to write section names, comments, marginal notes. First letter of each paragraph is also colored red. + +\subsection{\cs{cuKinovar}} +Takes a single argument and prints it using red color. For example, explicitly specifying its argument one gets expected result: + +\end{EN} + +\begin{RU} +\section{Киноварь} +Печатные и рукописные книги на церковнославянском часто пользуются красным цветом для выделения структурных элементов текста. +Обычно заголовки, замечания и пометки на полях печатаются красным цветом. Кроме того, первая буква каждого параграфа тоже +выделяется красным цветом. + +\subsection{\cs{cuKinovar}} +Команда печатает свой аргумент красным цветом. Например, если мы явно зададим текст аргумента, то получим ожидаемый результат: +\end{RU} + +\begin{center} +\begin{churchslavonic} +\begin{tabular}[]{ | l | l | } +\hline +\verb+\cuKinovar{+ли́къ:\verb+}+ гдⷭ҇и поми́лꙋй. & \cuKinovar{ли́къ:} гдⷭ҇и поми́лꙋй. \\ +\hline +\end{tabular} +\end{churchslavonic} +\end{center} + +\begin{EN} +If one uses \TeX\ mechanism of implicit argument detection, then, red color will be used for the first character of the +text after this command. Non-trivial feature of this command is that it will also ``collect'' all diacritical marks that +belong to this first character, and thus all accents will also use the red color! +Use this command in the indirect parameter mode to paint red the first letter of each paragraph.\footnote{You can also experiment +with \TeX\ command \cs{everypar} to autoamte this, but the success or failure of this technique critically depends on the +\LaTeX\ class used and packages loaded. We found it very fragile and thus \pkg{churchslavonic} package does not offer +any automation for this. It may be easier and more robust use Search/Replace functionality embedded in any non-trivial text +editor to just automatically place \cs{cuKinovar} command before every paragraph of the source text.} +\end{EN} + +\begin{RU} +Если же используется механизм \TeX{} неявного задания аргумента, то команда будет применена к первой букве последующего текста. +При этом команда ``соберет'' все необходимые выносные символы, так что все акценты первой буквы будут корректно раскрашены! +Поэтому очень удобно использовать эту команду с неявным заданием аргумента для раскраски первой буквы параграфа.\footnote{Вы также +можете поэкспериментировать со встроенной командой \TeX\ \cs{everypar} с целью полностью автоматизировать раскраску первой буквы +параграфа. Однако успех сильно зависит от того какой класс системы \LaTeX\ используется и от того какие пакеты подгружаются. +Мы не нашли надежного способа заставить \cs{everypar} работать и поэтому пакет \pkg{churchslavonic} не предлагает никаких +макрокоманд для дальнейшей автоматизации этого процесса. На практике, часто проще и надежнее воспользоваться функцией +текстового редактора Найти/Заменить для вставки макрокоманды \cs{cuKinovar} перед каждым параграфом.} +\end{RU} + +\begin{center} +\begin{churchslavonic} +\begin{tabular}[]{ | l | l | } +\hline +\verb+\cuKinovar+ Пои́мъ гдⷭ҇ви пѣ́снь но́вꙋю & +\cuKinovar Пои́мъ гдⷭ҇ви пѣ́снь но́вꙋю \\ +\verb+\cuKinovar+ Ꙗ҆́кѡ тꙋ́ча на тро́скотъ & \cuKinovar Ꙗ҆́кѡ тꙋ́ча на тро́скотъ \\ +\hline +\end{tabular} +\end{churchslavonic} +\end{center} + +\begin{EN} + +\subsection{\cs{cuKinovarColor}} +Switches current color to red. One would typically use this command inside a group that limits the scope of red text, unless +you want all subsequent text to be colored red. +\end{EN} + +\begin{RU} + +\subsection{\cs{cuKinovarColor}} +Команда переключает текущий цвет на красный. Должна использоваться внутри группы, которая ограничит ее действие (если вы не хотите +чтобы весь послеующий текст был напечатан красным цветом). +\end{RU} + +\begin{EN} +\section{Utilities} +The mechanism that \cs{cuKinovar} macro is using to collect all accents (when argument is given implicitly) can be useful for +many other purposes. One example is to typeset a dropletter at the beginning of a chapter (this is often used in Church Slavonic +texts). For this purpose standard \LaTeX\ package \pkg{lettrine} works fine. The only nuisance is that one have to be careful to +pass to \cs{lettrine} not just the first letter, but also all diacritical marks for this letter. Naturally, we want to reuse the +clever mechanism that \cs{cuKinovar} is using to do the collection job. + +Here is an example how to accomplish that: +\end{EN} + +\begin{RU} +\section{Утилиты} +Механизм, используемый командой \cs{cuKinovar} для сбора выносных символов (при неявном задании аргумента), может оказаться полезен +в некоторых других случаях. Один из примеров --- это ``буквицы'' в начале разделов. Для набора буквицы отлично работает стандартный +пакет \pkg{lettrine}. Единственное неудобство --- это необходимость задавать явно первую букву вместе во всеми ее выносными символами. +Естественно желание упростить и автоматизировать эту работу задействовав тот же механизм что и в \cs{cuKinovar}. + +Вот как можно добиться этого: +\end{RU} + +\begin{center} +\begin{churchslavonic} +\begin{tabular}{l} +\verb+\def\cu@lettrine{\lettrine[lines=3,findent=0pt,nindent=0pt]}+\\ +\verb+\def\cuLettrine{\cu@tokenizeletter\cu@lettrine}+\\ +\verb+\renewcommand{\LettrineFontHook}{\cuKinovarColor}+\\ +\end{tabular} +\end{churchslavonic} +\end{center} +% +\begin{EN} +Once this definition of \verb+\cuLettrine+ is created (put is somewhere in preamble, and do not forget to enclose in \cs{makeatletter} and \cs{makeatother}), +you can create drop capitals like this: +\end{EN} +% +\begin{RU} +Поместите это определение команды \verb+\cuLettrine+ в преамбулу вашего документа (и не забудьте окружить его командами \cs{makeatletter} и \cs{makeatother}). +После этого можно набирать буквицы так: +\end{RU} +% +\begin{center} +\begin{churchslavonic} +\begin{tabular}{l} +\verb+\cuLettrine+ И҆́же дх҃а си́ла въ не́мощи соверша́етсѧ\ldots\\ +\end{tabular} +\end{churchslavonic} +\end{center} + +\begin{churchslavonic} + +\cuLettrine +И҆́же дх҃а си́ла въ не́мощи соверша́етсѧ, ꙗ҆́коже пи́сано є҆́сть, и҆ вѣ́рꙋемъ: въ не́мощи же не тѣлесѐ то́чїю, но ᲂу҆́бѡ и҆ сло́ва, +и҆ премꙋ́дрости на ѧ҆зы́цѣ лежа́ща. И҆ сѐ ꙗ҆́вѣ ѿ мно́гихъ ᲂу҆́бѡ и҆ны́хъ, па́че же ѿ и҆́же ѡ҆ вели́комъ бг҃осло́вѣ, и҆ бра́тѣ хрⷭ҇то́вѣ, +благода́тїю зри́мѣмъ. + +\end{churchslavonic} + +\begin{thebibliography}{9} + +\bibitem{UN41} + Aleksandr Andreev, Yuri Shardt, and Nikita Simmons. + \emph{Church Slavonic Typography in Unicode}, + Uncode Technical Note~41, + \url{http://www.unicode.org/notes/tn41/} + +\end{thebibliography} + +\end{document} diff --git a/Master/texmf-dist/tex/latex/churchslavonic/churchslavonic.sty b/Master/texmf-dist/tex/latex/churchslavonic/churchslavonic.sty new file mode 100644 index 00000000000..b988b8e41a2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/churchslavonic/churchslavonic.sty @@ -0,0 +1,16 @@ +% Copyright 2016 Slavonic Computing Initialive +% http://sci.ponomar.net +% +\ProvidesPackage{churchslavonic}[2016/04/19 v0.1 Typesetting in Church Slavonic] + +\DeclareOption{gray}{ + \PassOptionsToPackage{\CurrentOption}{cu-kinovar} +} +\ProcessOptions\relax + +\RequirePackage{cu-num} +\RequirePackage{cu-calendar} +\RequirePackage{cu-util} +\RequirePackage{cu-kinovar} + +\endinput diff --git a/Master/texmf-dist/tex/latex/churchslavonic/cu-calendar.sty b/Master/texmf-dist/tex/latex/churchslavonic/cu-calendar.sty new file mode 100644 index 00000000000..eb1a80914bb --- /dev/null +++ b/Master/texmf-dist/tex/latex/churchslavonic/cu-calendar.sty @@ -0,0 +1,182 @@ +% Copyright 2016 Slavonic Computing Initialive +% http://sci.ponomar.net +% +\ProvidesPackage{cu-calendar}[2016/03/30 v1.0 CU Calendars] + +\RequirePackage{intcalc} +\RequirePackage{cu-num} + +% +% Tools +% +\def\cu@jdn#1-#2-#3-#4{% + \expandafter\cu@@jdn + \expandafter{\the\numexpr \intcalcDiv{14 - #2}{12} \relax}{#1}{#2}{#3}{#4}% +}% +\def\cu@@jdn#1#2#3#4#5{% + \expandafter\cu@@@jdn + \expandafter{\the\numexpr #2 + 4800 - #1\relax}{#1}{#2}{#3}{#4}{#5}% +}% +\def\cu@@@jdn#1#2#3#4#5#6{% y a year month day + \expandafter\cu@@@@jdn + \expandafter{\the\numexpr #4 - 3 + 12 * (#2)\relax}{#1}{#2}{#3}{#4}{#5}{#6}% +}% +\def\cu@@@@jdn#1#2#3#4#5#6#7{% m y a year month day + \expandafter #7% + \expandafter{\the\numexpr #6 + + \intcalcDiv{153 * (#1) + 2}{5} + (365 * (#2)) + \intcalcDiv{#2}{4} - 32083\relax}{#2}% +}% +\def\greg@#1#2{% jdn_julian y + \expandafter\greg@@ + \expandafter{\the\numexpr #1 - \intcalcDiv{#2}{100}\relax}{#2}% +}% +\def\greg@@#1#2{% jdn_julian y + \the\numexpr #1 + \intcalcDiv{#2}{400} + 32083 - 32045\relax% +}% +% +\def\cu@jdnFromJulianDate#1{% + \cu@jdn #1-\@firstoftwo +}% +\def\cu@jdnFromGregorianDate#1{% + \cu@jdn #1-\greg@ +}% +% +\def\cu@calendar#1{% + \expandafter\cu@@calendar + \expandafter{\the\numexpr (#1 + 1401) * 4 + 3\relax}% +}% +\def\cu@@calendar#1{% e + \expandafter\cu@@@calendar + \expandafter{\the\numexpr 2 + + \intcalcMul{5}{\intcalcDiv{\intcalcMod{#1}{1461}}{4}} \relax}{#1}% +}% +\def\cu@@@calendar#1#2{% h e + \expandafter\cu@@@@calendar + \expandafter{\the\numexpr 1 + \intcalcDiv{\intcalcMod{#1}{153}}{5}\relax}{#1}{#2}% +}% +\def\cu@@@@calendar#1#2#3{% day h e + \expandafter\cu@@@@@calendar + \expandafter{\the\numexpr 1 + + \intcalcMod{\intcalcAdd{\intcalcDiv{#2}{153}}{2}}{12}\relax}{#1}{#2}{#3}% +}% +\def\cu@@@@@calendar#1#2#3#4{% month day h e + \the\numexpr + \intcalcDiv{#4}{1461} - 4716 + \intcalcDiv{14-#1}{12}\relax -#1-#2% +}% +\def\cu@calendarJulian#1{\cu@calendar{#1}}% +\def\cu@calendarGregorian#1{% + \expandafter\cu@calendar\expandafter{% + \the\numexpr #1 + + \intcalcDiv{\intcalcMul{\intcalcDiv{274277 + 4 * (#1)}{146097}}{3}}{4} - 38 + \relax +}}% +% +\def\cu@julianToGregorian#1{% + \cu@calendarGregorian{\cu@jdnFromJulianDate{#1}}% +}% +\def\cu@gregorianToJulian#1{% + \cu@calendarJulian{\cu@jdnFromGregorianDate{#1}}% +}% +\let\cu@julianFromGregorian\cu@gregorianToJulian +\let\cu@gregorianFromJulian\cu@julianToGregorian +% +% User API +% +\let\cuAsJulian\cu@julianFromGregorian +\let\cuAsGregorian\cu@gregorianFromJulian +% +\def\cuJulianDate#1{% + \expandafter\cu@formatDate\number\cu@julianFromGregorian{#1}\relax +}% +\def\cuJulianToday{% + \cu@julianFromGregorian{\year -\month -\day}% +}% +\def\cuToday{% + \year -\month -\day +}% +\def\cuDate#1{% + \expandafter\cu@formatDate\number #1\relax +}% +% +\def\cuMonthName#1{% + \ifcase#1\or% + і҆аннꙋа́рїа\or + феврꙋа́рїа\or + ма́рта\or + а҆прі́ллїа\or + ма́їа\or + і҆ꙋ́нїа\or + і҆ꙋ́лїа\or + а҆́ѵгꙋста\or + септе́мврїа\or + ѻ҆ктѡ́врїа\or + ное́мврїа\or + деке́мврїа\fi +}% +% +\def\cuDayName#1{% + \ifcase#1 недѣ́лѧ\or% + понедѣ́льникъ\or + вто́рникъ\or + среда̀\or + четверто́къ\or + пѧто́къ\or + сꙋббѡ́та\fi +}% +% +\def\cuDayNameAccusative#1{% + \ifcase#1 недѣ́лю\or% + понедѣ́льникъ\or + вто́рникъ\or + сре́дꙋ\or + четверто́къ\or + пѧто́къ\or + сꙋббѡ́тꙋ\fi +}% +% +\def\cuDefineDateFormat#1#2{% + \expandafter\def\csname cs@dateformat@#1\endcsname{#2}% +}% +\def\cuUseDateFormat#1{% + \expandafter\let\expandafter\cu@current@dateformat\csname cs@dateformat@#1\endcsname +}% +\def\cu@@formatDate#1-#2-#3\relax{% + \edef\cu@JDN{\cu@jdnFromGregorianDate{#1-#2-#3}}% + \edef\cu@JDN@March@First{\cu@jdnFromJulianDate{#1-3-1}}% + \edef\cuYEAR{\number #1}% + \edef\cuYEARAM{\the\numexpr #1 + 5508\ifnum\cu@JDN<\cu@JDN@March@First\else + 1\fi}% + \edef\cuMONTH{\number #2}% + \edef\cuDAY{\number #3}% + \edef\cuDOW{\intcalcMod{1+\cu@JDN}{7}}% + \edef\cuINDICTION{\intcalcAdd{15}{\intcalcMod{#1 - 312}{-15}}}% + \edef\cuDISPLAYDATE{\cu@current@dateformat}% +}% +\def\cu@@formatJulianDate#1-#2-#3\relax{% + \edef\cu@JDN{\cu@jdnFromJulianDate{#1-#2-#3}}% + \edef\cu@JDN@March@First{\cu@jdnFromJulianDate{#1-3-1}}% + \edef\cuYEAR{\number #1}% + \edef\cuYEARAM{\the\numexpr #1 + 5508\ifnum\cu@JDN<\cu@JDN@March@First\else + 1\fi}% + \edef\cuMONTH{\number #2}% + \edef\cuDAY{\number #3}% + \edef\cuDOW{\intcalcMod{1+\cu@JDN}{7}}% + \edef\cuINDICTION{\intcalcAdd{15}{\intcalcMod{#1 - 312}{-15}}}% + \edef\cuDISPLAYDATE{\cu@current@dateformat}% +}% +\protected\def\cu@formatDate#1-#2-#3\relax{% + \bgroup + \cu@@formatDate#1-#2-#3\relax + \cuDISPLAYDATE + \egroup +}% +% +\protected\def\cu@formatJulianDate#1-#2-#3\relax{% + \bgroup + \cu@@formatJulianDate#1-#2-#3\relax + \cuDISPLAYDATE + \egroup +}% +\cuDefineDateFormat{default}{% + \cuNum{\cuDAY}~\cuMonthName{\cuMONTH}~лѣ́та~\cuNum{\cuYEAR}% +}% +\cuUseDateFormat{default}% +% diff --git a/Master/texmf-dist/tex/latex/churchslavonic/cu-kinovar.sty b/Master/texmf-dist/tex/latex/churchslavonic/cu-kinovar.sty new file mode 100644 index 00000000000..f678b623d76 --- /dev/null +++ b/Master/texmf-dist/tex/latex/churchslavonic/cu-kinovar.sty @@ -0,0 +1,37 @@ +\ProvidesPackage{cu-kinovar}[2016/03/31 v1.0 CU Kinovar] + +\RequirePackage{cu-util} +\RequirePackage{etoolbox} +\RequirePackage{xcolor} + +%% 'color' option (default) +\def\cu@kinovar{\relax} +\def\cu@kinovar@color{\relax} + +\DeclareOption{color}{ + \renewcommand{\cu@kinovar}[1]{\textcolor{kinovar}{#1}} + \renewcommand{\cu@kinovar@color}{\color{kinovar}} +} +\DeclareOption{gray}{ + \renewcommand{\cu@kinovar}[1]{\textcolor{kinovar-gray}{#1}} + \renewcommand{\cu@kinovar@color}{\color{kinovar-gray}} +} +\DeclareOption{bw}{ + \renewcommand{\cu@kinovar}[1]{#1} + \renewcommand{\cu@kinovar@color}{\relax} +} + +\ExecuteOptions{color} +\ProcessOptions\relax + +% define standard colors +\definecolor{kinovar}{rgb}{0.80,0.03,0.01} +\definecolor{kinovar-gray}{rgb}{0.45,0.45,0.45} + +% cuKinovar command colors just one letter with all accents if any +\newrobustcmd{\cuKinovar}{\cu@tokenizeletter{\cu@kinovar}} + +% cuKinovarColorr switches foregrouond color to Kinovar +\newrobustcmd{\cuKinovarColor}{\cu@kinovar@color} + +\endinput diff --git a/Master/texmf-dist/tex/latex/churchslavonic/cu-num.sty b/Master/texmf-dist/tex/latex/churchslavonic/cu-num.sty new file mode 100644 index 00000000000..1a84190eadf --- /dev/null +++ b/Master/texmf-dist/tex/latex/churchslavonic/cu-num.sty @@ -0,0 +1,341 @@ +% Copyright 2016 Slavonic Computing Initialive +% http://sci.ponomar.net +% +\ProvidesPackage{cu-num}[2016/03/03 v1.0 CU Numerics] + +\@ifundefined{detokenize}{% + \PackageError{cu-num}% + {You must upgrade your TeX distribution to be able to use this package}% + {This package depends on eTeX-based engine}% +}{} + +% +% Tools +% +\def\cu@ifempty#1{% + \if\relax\detokenize{#1}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +}% +% +\def\@firstoffour\cu@repeat #1\stop@ #2#3#4#5{#2}% +\def\@firstofthree\cu@repeat@i #1\stop@ #2#3#4{#2}% +\def\cu@switch #1{% + \if\relax\detokenize{#1}\relax + \expandafter\@firstoffour + \fi + \cu@repeat #1\stop@ +}% +\def\cu@repeat #1#2\stop@ #3{% + \if\relax\detokenize{#2}\relax + \expandafter\@firstofthree + \fi + \cu@repeat@i #2\stop@ +}% +\def\cu@repeat@i #1#2\stop@ #3{% + \if\relax\detokenize{#2}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +}% +% +% Slavonic numbering system. Internals. +% +\def\cu@format@small@number#1#2#3{% + \ifcase#1 \or + \expandafter р\or + \expandafter с\or + \expandafter т\or + \expandafter у\or + \expandafter ф\or + \expandafter х\or + \expandafter ѱ\or + \expandafter ѿ\or + \expandafter ц\else + \errmessage{cu-num: Internal error}% + \fi + \if 1#2% + \ifcase#3 \or + \expandafter а\or + \expandafter в\or + \expandafter г\or + \expandafter д\or + \expandafter є\or + \expandafter ѕ\or + \expandafter з\or + \expandafter и\or + \expandafter ѳ\else + \errmessage{cu-num: Internal error}% + \fi + і% + \else + \ifcase#2 \or + \expandafter і\or + \expandafter к\or + \expandafter л\or + \expandafter м\or + \expandafter н\or + \expandafter ѯ\or + \expandafter ѻ\or + \expandafter п\or + \expandafter ч\else + \errmessage{cu-num: Internal error}% + \fi + \ifcase#3 \or + \expandafter а\or + \expandafter в\or + \expandafter г\or + \expandafter д\or + \expandafter є\or + \expandafter ѕ\or + \expandafter з\or + \expandafter и\or + \expandafter ѳ\else + \errmessage{cu-num: Internal error}% + \fi + \fi +}% +% +% +\protected\def\cu@titlo{\char"0483}% +\def\cu@thousand{҂}% +\protected\def\cu@spacer{\,}% +% +\protected\def\stop@{}% +\protected\def\divider@{DIVIDER}% +% +\def\cu@format#1{% + \ifnum#1<0% + \errmessage{cu-num: negative numbers not supported}% + \else\ifnum#1=0% + 0\cu@titlo + \else\ifnum#1<10% + {}% + {}% + \cu@format@xxx 00#1\stop@ + \else\ifnum#1<100% + {}% + {}% + \cu@format@xxx 0#1\stop@ + \else\ifnum#1<1000% + {}% + {}% + \cu@format@xxx #1\stop@ + \else\ifnum#1<10000% + {}% + \cu@format@xxxxxx 00#1\stop@ + \else\ifnum#1<100000% + {}% + \cu@format@xxxxxx 0#1\stop@ + \else\ifnum#1<1000000% + {}% + \cu@format@xxxxxx #1\stop@ + \else\ifnum#1<10000000% + \cu@format@xxxxxxxxx 00#1\stop@ + \else\ifnum#1<100000000% + \cu@format@xxxxxxxxx 0#1\stop@ + \else\ifnum#1<1000000000% + \cu@format@xxxxxxxxx #1\stop@ + \else + \errmessage{cu-num: number too big "#1"}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +}% +% +\def\cu@format@xxx#1#2#3\stop@{% + {% + \cu@format@small@number#1#2#3% + }% +}% +% +\def\cu@format@xxxxxx#1#2#3#4#5#6\stop@{% + {\cu@format@small@number#1#2#3}% + {\cu@format@small@number#4#5#6}% +}% +% +\def\cu@format@xxxxxxxxx#1#2#3#4#5#6#7#8#9\stop@{% + {\cu@format@small@number#1#2#3}% + \cu@format@xxxxxx#4#5#6#7#8#9\stop@ +}% +% +\def\cu@place@titlo #1{% + \cu@switch{#1}{% + {}% + }{% + {\cu@place@titlo@i #1\stop@}% + }{% + {\cu@place@titlo@ii #1\stop@}% + }{% + {\cu@place@titlo@iii #1\stop@}% + }% +}% +\def\cu@place@titlo@iii #1#2#3#4\stop@{% + \cu@ifempty{#4}{% + #1\cu@place@titlo@ii #2#3\stop@ + }{% + #1\cu@place@titlo@iii #2#3#4\stop@ + }% +}% +\def\cu@place@titlo@ii #1#2\stop@{% + \if #1ѿ% + #1#2\cu@titlo\else #1\cu@titlo #2\fi +}% +\def\cu@place@titlo@i #1\stop@{% + \if #10% + 0\else #1\cu@titlo \fi +}% +% +\def\cu@merge@historic #1#2#3{% + \cu@switch{#2}{% + {#1}{#2}{#3}% + }{% + {#1}{#2#3}{0}% + }{% + {#1}{#2}{#3}% + }{% + {#1}{#2}{#3}% + }% +}% +% +\def\cu@place@thousands#1#2#3{% + \cu@ifempty{#1}{% + {}% + }{% + {\cu@thousand\cu@thousand #1}% + }% + \cu@ifempty{#2}{% + {}% + }{% + \if#30% + {\cu@thousand #2}% + \else + \cu@ifempty{#3}{% + {\cu@interleave #2\stop@}% + }{% + {\cu@thousand #2}% + }% + \fi + }% + \if#30% + {}% + \else + {#3}% + \fi +}% +% +\def\cu@interleave#1#2\stop@{% + \ifx#1\cu@titlo + \cu@ifempty{#2}{#1}{% + #1\cu@interleave #2\stop@ + }% + \else + \cu@ifempty{#2}{% + \cu@thousand #1% + }{% + \cu@thousand #1\cu@interleave #2\stop@ + }% + \fi +}% +% +\def\cu@place@all@titlo#1#2#3{% + \cu@place@titlo{#1}% + \cu@place@titlo{#2}% + \cu@place@titlo{#3}% +}% +\def\cu@place#1{% + \if\relax\detokenize{#1}\relax + {}% + \else + \cu@place@i #1\stop@ + \fi +}% +\def\cu@place@i#1#2\stop@{% + \if\relax\detokenize{#2}\relax + {#1\cu@titlo}% + \else + \cu@place@ii #1#2\stop@ + \fi +}% +\def\cu@place@ii #1#2#3\stop@{% + \if\relax\detokenize{#3}\relax + \if#1ѿ{#1#2\cu@titlo}\else + {#1\cu@titlo #2}\fi + \else + \if#2ѿ{#1#2#3\cu@titlo}\else + {#1#2\cu@titlo #3}\fi + \fi +}% +% +\def\cu@compose#1#2#3{% + \cu@ifempty{#1}{% + \cu@compose@ii{#2}{#3}% + }{% + \cu@ifempty{#2}{% + \cu@compose@ii{#1}{#3}% + }{% + \cu@ifempty{#3}{% + \cu@compose@ii{#1}{#2}% + }{% + #1\cu@spacer #2\cu@spacer #3% + }% + }% + }% +}% +% +\def\cu@compose@ii#1#2{% + \cu@ifempty{#1}{% + \cu@ifempty{#2}{}{#2}% + }{% + \cu@ifempty{#2}{#1}{#1\cu@spacer #2}% + }% +}% +% +\def\cu@fmt@#1{% + %\tracingmacros=1% + %\tracingonline=1% + \edef\@x{\number #1}% + \ifnum\@x=0\relax + \edef\@x{0\cu@titlo}% + \else\ifnum\@x<0% + \edef\@x{\number-\@x}% + \edef\@x{\noexpand\cu@format{\@x}}% + \edef\@x{\@x}% + \edef\@x{\noexpand\cu@merge@historic\@x}% + \edef\@x{\@x}% + \edef\@x{\noexpand\cu@place@all@titlo\@x}% + \edef\@x{\@x}% + \edef\@x{\noexpand\cu@place@thousands\@x}% + \edef\@x{\@x}% + \edef\@x{\noexpand\cu@compose\@x}% + \edef\@x{\@x}% + \edef\@x{-\@x}% + \else + \edef\@x{\noexpand\cu@format{\@x}}% + \edef\@x{\@x}% + %\show\@x + \edef\@x{\noexpand\cu@merge@historic\@x}% + \edef\@x{\@x}% + %\show\@x + \edef\@x{\noexpand\cu@place@all@titlo\@x}% + \edef\@x{\@x}% + %\show\@x + \edef\@x{\noexpand\cu@place@thousands\@x}% + \edef\@x{\@x}% + %\show\@x + \edef\@x{\noexpand\cu@compose\@x}% + \edef\@x{\@x}% + %\show\@x + \fi\fi + %\tracingmacros=0% +}% +% +% User API +% +\protected\def\cuNum#1{% + \bgroup + \cu@fmt@{#1}% + \@x + \egroup +}% diff --git a/Master/texmf-dist/tex/latex/churchslavonic/cu-util.sty b/Master/texmf-dist/tex/latex/churchslavonic/cu-util.sty new file mode 100644 index 00000000000..212b58886b0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/churchslavonic/cu-util.sty @@ -0,0 +1,196 @@ +\ProvidesPackage{cu-util}[2016/03/31 v1.0 CU Util] + +\RequirePackage{etoolbox} +% +% Some ideas taken from: +% http://tex.stackexchange.com/questions/33197/parsing-a-macro-argument-character-by-character-for-conditional-execution +% +\def\cu@declare@accent#1{% + \def\cu@@declare@accent##1##2\relax{% + \@namedef{cu@accent@\detokenize{##2}}{\relax}% + }% + \cu@@declare@accent#1\relax +}% +% +\newcommand\cu@tokenizeletter[1]{% + \bgroup + \def\@accum{}% + \def\cu@collectworker{% + \cu@ifnextaccent{% + \cu@collectworker@one + }{% + \expandafter \egroup \expandafter #1\expandafter {\@accum}% + }% + }% + \def\cu@collectworker@one##1{% + \edef\@accum{\@accum ##1}% + \cu@collectworker + }% + \def\cu@collectworker@two##1##2{% + \edef\@accum{\@accum ##1##2}% + \cu@collectworker + }% + \cu@ifnextbgroup{\egroup #1}{% + \cu@ifnextdigraph{\cu@collectworker@two}{\cu@collectworker@one}% + }% +}% +% +\newrobustcmd\cu@ifnextletter[2]{% + \bgroup + \def\cu@worker{% + \ifcat\noexpand\@let@token a% + \expandafter\egroup\expandafter\@firstoftwo + \else + \expandafter\egroup\expandafter\@secondoftwo + \fi + {#1}{#2}% + }% + \futurelet\@let@token\cu@worker +} +% +\newrobustcmd\cu@ifnextaccent[2]{% + \bgroup + \def\cu@letter@i{% + \ifdefequal{\@let@token}{ }{% + \egroup #2% false + }{% + \cu@letter@ii + }% + }% + \def\cu@letter@ii##1{% + \ifcsdef{cu@accent@\detokenize{##1}}{% + \egroup #1##1% true + }{% + \egroup #2##1% false + }% + }% + \futurelet\@let@token\cu@letter@i +}% +% +% Detect Oy and oy digraphs +% kv command colors just one letter with all accents if any +\def\cu@declare@digraph#1#2\relax{% + \@namedef{cu@digraph@start@\detokenize{#1}}{\relax}% + \@namedef{cu@digraph@end@\detokenize{#2}}{\relax}% +}% +% +\cu@declare@digraph оу\relax +\cu@declare@digraph Оу\relax +\cu@declare@digraph ᲂу\relax +% +\newrobustcmd{\cu@ifnextdigraph}[2]{% + \bgroup + \def\cu@digraph@i{% + \ifdefequal{\@let@token}{ }{% + \egroup #2% false! + }{% + \cu@digraph@ii + }% + }% + \def\cu@digraph@ii##1{% + \ifcsdef{cu@digraph@start@\detokenize{##1}}{% + \edef\@accum{\@accum##1}% + \futurelet\@let@token\cu@digraph@iii + }{% + \egroup #2##1% false! + }% + }% + \def\cu@digraph@iii##1{% + \ifcsdef{cu@digraph@end@\detokenize{##1}}{% + \expandafter \egroup \expandafter #1\@accum ##1% true! + }{% + \expandafter \egroup \expandafter #2\@accum ##1% false! + }% + }% + \def\@accum{}% + \futurelet\@let@token\cu@digraph@i +}% +% +\newrobustcmd{\cu@ifnextbgroup}[2]{% + \bgroup + \def\cu@bgroup{% + \ifdefequal{\@let@token}{ }{% + \egroup #2% false! + }{% + \egroup\@ifnextchar\bgroup{#1}{#2}% + }% + }% + \futurelet\@let@token\cu@bgroup +}% +% +\def\cu@test@tokenizeletter#1#2{% + \bgroup + \def\cu@testframe##1##2\@nnil{% + \edef\@aa{##1-##2}% + }% + \cu@tokenizeletter\cu@testframe #1\@nnil + \def\@bb{#2}% + \ifx\@aa\@bb\else + \errmessage{TEST FAILED: #1: "\@aa" expected "\@bb"}% + \fi + \egroup +}% +% +% List all accents +% +%% declare all possible combineres (generated by make_declare_accents) +\cu@declare@accent{◌̀} +\cu@declare@accent{◌́} +\cu@declare@accent{◌̑} +\cu@declare@accent{◌̈} +\cu@declare@accent{◌҆} +\cu@declare@accent{◌̆} +\cu@declare@accent{◌̾} +\cu@declare@accent{◌꙽} +\cu@declare@accent{◌꙼} +\cu@declare@accent{◌̇} +\cu@declare@accent{◌̏} +\cu@declare@accent{◌҃} +\cu@declare@accent{◌҇} +\cu@declare@accent{◌ⷠ} +\cu@declare@accent{◌ⷡ} +\cu@declare@accent{◌ⷢ} +\cu@declare@accent{◌ⷣ} +\cu@declare@accent{◌ⷤ} +\cu@declare@accent{◌ⷥ} +\cu@declare@accent{◌ⷦ} +\cu@declare@accent{◌ⷧ} +\cu@declare@accent{◌ⷨ} +\cu@declare@accent{◌ⷩ} +\cu@declare@accent{◌ⷪ} +\cu@declare@accent{◌ⷫ} +\cu@declare@accent{◌ⷬ} +\cu@declare@accent{◌ⷭ} +\cu@declare@accent{◌ⷮ} +\cu@declare@accent{◌ⷯ} +\cu@declare@accent{◌ⷰ} +\cu@declare@accent{◌ⷱ} +\cu@declare@accent{◌ⷲ} +\cu@declare@accent{◌ⷳ} +\cu@declare@accent{◌ⷴ} +\cu@declare@accent{◌ⷵ} +\cu@declare@accent{◌ⷶ} +\cu@declare@accent{◌ⷷ} +\cu@declare@accent{◌ⷸ} +\cu@declare@accent{◌ⷹ} +\cu@declare@accent{◌ⷺ} +\cu@declare@accent{◌ⷻ} +\cu@declare@accent{◌ⷼ} +\cu@declare@accent{◌ⷽ} +\cu@declare@accent{◌ⷾ} +\cu@declare@accent{◌ⷿ} +\cu@declare@accent{◌ꙴ} +\cu@declare@accent{◌ꙵ} +\cu@declare@accent{◌ꙶ} +\cu@declare@accent{◌ꙷ} +\cu@declare@accent{◌ꙸ} +\cu@declare@accent{◌ꙹ} +\cu@declare@accent{◌ꙺ} +\cu@declare@accent{◌ꙻ} +\cu@declare@accent{◌꙼} +\cu@declare@accent{◌꙽} +\cu@declare@accent{◌҆} +\cu@declare@accent{◌҅} +%% end of generated block + +\endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index c64ecb82ea5..96a0fb92e7b 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -133,7 +133,7 @@ my @TLP_working = qw( chess chess-problem-diagrams chessboard chessfss chet chextras chicago chicago-annote chickenize chivo chkfloat chletter chngcntr chronology - chronosys chscite + chronosys chscite churchslavonic cinzel circ circuitikz cite citeall cjhebrew cjk cjk-gs-integrate cjk-ko cjkpunct classics classpack classicthesis diff --git a/Master/tlpkg/tlpsrc/churchslavonic.tlpsrc b/Master/tlpkg/tlpsrc/churchslavonic.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/churchslavonic.tlpsrc diff --git a/Master/tlpkg/tlpsrc/collection-langcyrillic.tlpsrc b/Master/tlpkg/tlpsrc/collection-langcyrillic.tlpsrc index 6aa6b6ba242..358b307ed12 100644 --- a/Master/tlpkg/tlpsrc/collection-langcyrillic.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-langcyrillic.tlpsrc @@ -12,6 +12,7 @@ depend babel-russian depend babel-serbian depend babel-serbianc depend babel-ukrainian +depend churchslavonic depend cmcyr depend cyrillic depend cyrillic-bin |