% \iffalse meta-comment
% !TEX program  = xeLaTeX
% !Mode:: TEX:DTX:UNIX:UTF-8:US:RU
%<*internal>
\iffalse
%</internal>
%<*readme>
Belarusian language module for Babel, v1.5
==========================================

Released under the LaTeX Project Public License v1.3c or later.
See http://www.latex-project.org/lppl.txt

The package provides support for use of Babel in documents written in Belarusian
(in both official and ‘classic’ forms). The support is adapted for use both
under legacy TEX engines, and under X∃TEX and LuaTEX.

Based on Russian language module v1.3h by Igor A. Kotelnikov <kia999 at mail dot ru>
and Belarusian language module v1.1l by Aleksey Novodvorsky <aen@logic.ru>.

The current maintainer is Andrej Shadura <andrew@shadura.me>.


Installation
------------

- unpack babel-belarusian.zip
- run `xelatex belarusian.dtx` (recommended)
  or `pdflatex belarusian.dtx`;
  run `tex belarusian.dtx`
  or `tex belarusian.ins`, if you don’t need documentation
- move "belarusian.ldf" to ${texmf}/tex/generic/babel/contrib/
- move "belarusian.pdf" and README to ${texmf}/doc/latex/belarusian-babel/
- update filename base (see documentation for your TeX system)


Usage
-----

Belarusian language definition file can be used both with legacy 8-bit engines
(such as latex or pdflatex) and Unicode compilers (xelatex or lualatex).
The Unicode engines can be ran either in Unicode mode or 8-bit
compatibility mode, which emulates the legacy engines. The two modes differ by
a set of packages loaded in the preamble of a source TeX file. It is important
to keep recommended order of the packages loaded, especially when running
Unicode engines in a compatibility 8-bit mode.

In the examples below, it is assumed that a source file has utf8 input encoding.

### 8-bit mode

#### PDFLATeX, LaTeX

    \usepackage[T1,T2A]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[english,belarusian]{babel}

#### LuaLaTeX

    \usepackage[T1,T2A]{fontenc}
    \usepackage[lutf8]{luainputenc}
    \usepackage[english,belarusian]{babel}

#### XeLaTeX

    \XeTeXinputencoding "bytes"
    \usepackage[utf8]{inputenc}
    \usepackage[T2A]{fontenc}
    \usepackage[english,belarusian]{babel}

### Unicode mode, LuaLaTeX or XeLaTeX

    \usepackage{fontspec}
        \defaultfontfeatures{Ligatures={TeX}}
        \setmainfont{CMU Serif}
        \setsansfont{CMU Sans Serif}
        \setmonofont{CMU Typewriter Text}
    \usepackage[english,belarusian]{babel}

Instead of the Computer Modern Unicode (CMU) fonts loaded in this example,
you may use any True Type or Open Type fonts installed on your computer.

### Using "classic" (Taraškievič) spelling

    \usepackage[english,belarusian]{babel}
    \languageattribute{belarusian}{classic}

or

    \usepackage[english,belarusian.classic]{babel}

or

    \usepackage[english,belarusian]{babel}
    \languageattribute{belarusian}{tarask}

or

    \usepackage[english,belarusian.tarask]{babel}

Documentation
-------------

See belarusian.pdf for more information.


Known problems
--------------

Before switching from a legacy 8-bit engine (tex, pdftex) to an Unicode
engine (xetex, luatex) and vise versa delete all .aux, .toc, .lot, .lof
files as they might have stored incompatible internal encodings.


Changes
-------

2018-10-09 version 1.5

  * Replace \cyrmath with \textnormal.
    Patch by Ivan Kokan.

2018-08-25 version 1.4

  * Rename belarusianb.dtx to belarusian.dtx since the patch to Babel
    has been never submitted.
  * Use textcomp package in the documentation.
  * Formatting fixes.
  * Convert the README to Markdown.
  * Rename the Unicode detection macro to fix conflicts with babel-russian.

2016-04-07 version 1.3h

  * Initial version

Original source: russianb.dtx

2016-02-18 v1.3h Russian support from the babel system.
%</readme>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
  \expandafter\begingroup
\fi
%</internal>
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\preamble
----------------------------------------------------------------
Belarusian Language Support for the Babel package
E-mail: andrew@shadura.me
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
\endpreamble
\postamble
----------------------------------------------------------------
Copyright 2016, 2018 Andrej Shadura
Copyright 2011-2016 Igor A. Kotelnikov.
Copyright 2000 Aleksey Novodvorsky
Copyright 1995-2008 Olga Lapko.
Copyright 1989-2012 Johannes L. Braams.

This file is a part of the Belarusian-Babel package.

It may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
version 1.3c of this license or (at your option) any later
version.  The latest version of this license is in the file:

   http://www.latex-project.org/lppl.txt

The package is "maintained" (as per LPPL maintenance status) by
Andrej Shadura.

The package consists of the file  belarusian.dtx
and the derived files             belarusian.ins,
                                  belarusian.ldf,
                                  belarusian.pdf,
                                  README.md
----------------------------------------------------------------
\endpostamble
\usedir{tex/generic/babel/contrib}
\generate{
  \file{\jobname.ldf}{\from{\jobname.dtx}{code}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/babel-belarusian}
\generate{
  \file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\nopreamble\nopostamble
\usedir{doc/latex/babel-belarusian}
\generate{
  \file{README.md}{\from{\jobname.dtx}{readme}}
}
\ifx\fmtname\nameofplainTeX
  \expandafter\endbatchfile
\else
  \expandafter\endgroup
\fi
%</internal>
%<*code>
\NeedsTeXFormat{LaTeX2e}
%\ProvidesFile{belarusian.ldf}[2018/10/09 1.5 Belarusian support for the Babel system]
\ProvidesLanguage{belarusian}[2018/10/09 1.5 Belarusian support for the Babel system]
%</code>
%<*driver>
\documentclass[a4paper]{ltxdoc}
%%
%% This document should be compiled by
%% XeLaTeX or LuaLaTex since some cyrillic
%% glyphs are absent in T2* encodings used
%% by LaTeX.
%%
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi>0
    \usepackage{fontspec}
    \defaultfontfeatures{Ligatures={TeX}}
    \setmainfont{CMU Serif}
    \setsansfont{CMU Sans Serif}
    \setmonofont{CMU Typewriter Text}
    %\setmonofont[Scale=MatchLowercase]{Courier New}
    %\setmonofont[Scale=MatchUppercase]{Courier New}
    %\setmonofont{Courier New}
\else
    \usepackage[X2,T2A]{fontenc}
    \usepackage[utf8]{inputenc}
\fi
\usepackage{textcomp}
\usepackage[belarusian.classic,main=english]{babel}
%\languageattribute{belarusian}{classic}
\usepackage[dvipsnames,usenames]{xcolor}
    \definecolor{thered}  {rgb}{0.65,0.04,0.07}
    \definecolor{thegreen}{rgb}{0.06,0.44,0.08}
    \definecolor{thegrey} {gray}{0.8}
    \definecolor{theshade}{rgb}{1,1,0.97}
    \definecolor{theframe}{gray}{0.6}
    \definecolor{theblue}{cmyk}{1.00, 0.50, 0.00, 0.40}
%\usepackage[numbered]{hypdoc}
\usepackage[colorlinks=true
    ,linkcolor=violet %theblue %
    ,filecolor=purple %thegreen%
    ,citecolor=teal   %thegreen%
]{hyperref}
% ====================================
\newcommand*\TeXhax{\TeX hax}
\newcommand*\babel{\textsf{babel}}
\newcommand*\Babel{\textsf{Babel}}
\newcommand*\xetex{\textsf{xetex}}
\newcommand*\luatex{\textsf{luatex}}
\providecommand*\m[1]{\mbox{$\langle$\normalfont\itshape#1\/$\rangle$}}
\newcommand*\langlist{%
  \meta{language}\texttt{,}\meta{language}\texttt{,}...}
\newcommand*\langvar{\m{lang}}
\newcommand*\note[1]{}
\newcommand*\Lopt[1]{\textsf{#1}}
\newcommand*\Lenv[1]{\textsf{#1}}
\newcommand*\menv[1]{\char`\{#1\char`\}}
\newcommand*\Eenv[1]{%
  \quad\ldots\quad
  \texttt{\color{thered}\string\end\menv{#1}}}
\newcommand*\file[1]{\texttt{#1}}
\newcommand*\cls[1]{\texttt{#1}}
\newcommand*\pkg[1]{\texttt{#1}}
% ====================================
\IfFileExists{listings.sty}{
  \usepackage{listings}
  \lstset{
    gobble=1,
    columns=flexible,
    keepspaces,
    basicstyle=\MacroFont,
    keywords=[0]{\selectlanguage,\foreignlanguage
     ,\babelhyphen,\babelhyphenation
     ,\lefthyphenmin,\righthyphenmin
     ,\StartBabelCommands,\SetString,\EndBabelCommands,\shorthandoff,\shorthandon
     ,\languageshorthands,\useshorthands,\defineshorthand
     ,\AddBabelHook,\SetStringLoop,\SetCase,\AfterBabelLanguage
     ,\defaultfontfeatures,\setmainfont,\setsansfont,\setmonofont
     ,\Belarusian,\cyrdash,\cdash
     ,\cyr,\cyrillictext,\textcyrillic,\cyrillicencoding
     ,\addto,\captionsbelarusian,\datebelarusian,\noextrasbelarusian,\extrasbelarusian
     ,\languageattribute
     ,\Asbuk,\asbuk,\ch,\sh,\tg,\ctg,\arctg,\arcctg\,\th,\cth,\cosec
     ,\nod,\nok,\prog,\NOF\,\NOK,\Prog
     ,\dq,\Proj,\nad,\NAD,\nak,\NAK,\Prob,\Variance
     ,\nod,\NOD,\nok,\NOK
     ,\XeTeXinputencoding
    }
    ,keywordstyle=[0]\color{thered}
    ,keywords=[1]{main,belarusian,english,german,frenchb
     ,shorthands,extrasenglish
     ,stringprocess,afterextras
     ,soft,empty,nobreak,hard
     ,Renderer,Ligatures
     ,official,classic,tarask
     ,T1,T2A,lutf8,utf8
     ,fontspec,babel,inputenc,fontenc
     },
    keywordstyle=[1]\color{thegreen},
    comment=[l]\%,
    commentstyle=\color{thegrey}\itshape,
    alsoother={0123456789_},
    frame=single,
    backgroundcolor=\color{theshade},
    rulecolor=\color{theframe},
    framerule=\fboxrule,
  }
  \let\verbatim\relax
  \lstnewenvironment{verbatim}[1][]{\lstset{##1}}{}
  \AtBeginDocument{%
    \DeleteShortVerb{\|}%
    \lstMakeShortInline|%
  }
}{}
\def\PrintDescribeMacro#1{%
  \strut\MacroFont\color{thered}\normalsize\string#1}
\def\Describe#1{%
  \par\penalty-500\vskip3ex\noindent
  \DescribeMacro{#1}\args}
\def\DescribeOther{\vskip-5.8ex\Describe}
\makeatletter
\def\args#1{%
  \def\bbl@tempa{#1}%
  \ifx\bbl@tempa\@empty\else#1\vskip1ex\fi\ignorespaces}
\makeatother
% ====================================
\EnableCrossrefs
%\DisableCrossrefs   % Say \DisableCrossrefs if index is ready
\CodelineIndex       % Index code by line number
\RecordChanges       % Gather update information
%\PageIndex          % Index code by page number
% ====================================
\begin{document}
  \DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
%\GetFileInfo{belarusian.dtx}
%\GetFileInfo{belarusian.ldf}
%
%\title{^^A
%  \textsf{Belarusian} --- description text\thanks{^^A
%    This file describes version \fileversion, last revised \filedate.^^A
%  }^^A
%}
%\author{^^A
%  You\thanks{E-mail: you@your.domain}^^A
%}
% \title{The Belarusian Language\\
%  in the \babel\ system\\[0.5em]
%  \large Version \fileversion}
%
% \author{Andrej Shadura\footnote{E-mail: \href{mailto:andrew@shadura.me}{andrew@shadura.me}.}}
%
% \date{Released \filedate}
%
% \maketitle
%
% {\small\tableofcontents}
%
%
% \section{The Belarusian Language Definition File}
%
% The file \file{\filename}\footnote{The file described in this document
% has the version number \fileversion\ and was last revised on \filedate.}
% is the source file for the Belarusian Language Definition file
% \file{belarusian.ldf} to be loaded by the \babel\ package with
% the option \Lopt{belarusian}. It's based on the Russian language definition
% file derived by Igor A. Kotelnikov from the original version of \file{\filename}, first
% released by Olga Lapko and Johannes Braams and then
% adapted to the T2* and X2 Cyrillic encodings
% by Vladimir Volovich and Werner Lemberg, and the Belarusian language definition
% file written by Aleksey Novodvorsky based on even older version of the Russian
% language definition file.
%
% Just like \file{russianb.ldf}, \file{belarusian.ldf} is designed to work both with
% legacy non-unicode (8-bit) and new Unicode encodings of the source document
% files (input encodings) and of the font files (font encodings). This is
% achieved by excluding (bypassing) the |\cyr...| macros, which map every letter
% in a source file with given input encoding to a corresponding code point in a
% font file with a given font encoding when running modern engines, such as
% Lua\LaTeX\ or Xe\LaTeX, in native Unicode mode instead of legacy engines, such
% as \LaTeX\ or PDF\LaTeX, or Unicode engines in a compatibility (8-bit) mode. A
% few obsolete and controversial macros has been eliminated in first public
% release of version 1.2 of \file{russianb.ldf}.
%
% Similarly to \file{russianb.ldf}'s support for typesetting ancient and
% Church Slavonic books, \file{belarusian.ldf} supports two versions of Belarusian
% orthography, the official one (\Lopt{official}) and the ‘classic’ (Taraškievič)
% orthography.
%
% \section{Usage}
%
% Typesetting Belarusian texts implies that a special input and output
% encodings should be used. Input encodings are those which are used in source
% (\file{.tex}) file. Output encoding is also known as the font encoding. It is
% implemented within the font files.
%
% Generally, the user may choose between different available Cyrillic
% encodings. The current support for Cyrillic uses LH family of MetaFont fonts
% and theirs Postscript versions such as CM-super. Lua\LaTeX\ and Xe\LaTeX,
% being the Unicode-based succeeders of \LaTeX, allow also for any Open Type
% (OTF) and True Type (TTF) fonts which has Cyrillic script, e.g. Computer
% Modern Unicode, Linux Libertine, and many other system fonts that came with
% Linux, Mac and Windows operating systems.
%
% With the advent of Unicode, \LaTeX\ community are moving towards eliminating
% all existing encodings in favor of Unicode, but nowadays one should take
% care when switching from \LaTeX\ to Lua\LaTeX\ or Xe\LaTeX\ since
% different packages should be loaded for those compilers.
%
% Since earlier versions \pkg{babel} did not
% support Xe\LaTeX\ (at least for some languages including Belarusian), the
% \pkg{polyglossia} package was generally recommended in the past for
% use with Xe\LaTeX\ as a replacement for \pkg{babel}. Nowadays, \pkg{babel}
% can be used with any engines, including \LaTeX, PDF\LaTeX, Lua\LaTeX, and
% Xe\LaTeX. Nevertheless some troubles may occur with some languages which
% have no promptly updated \file{.ldf} files.
%
%
% \subsection{\LaTeX}
%
% When user's document is compiled with \file{latex} or \file{pdflatex},
% recommended set of packages  includes the \pkg{inputenc} and \pkg{fontenc}
% packages. They should be loaded before \pkg{babel}, for example,
% \begin{verbatim}
%    \usepackage[T1,T2A]{fontenc}
%    \usepackage[utf8]{inputenc}
%    \usepackage[english,belarusian]{babel}
%\end{verbatim}
% Some variations in the order of loading the packages are allowed in this case
% but it is better to follow one and the same convention at all circumstances:
% the \pkg{babel} package should go last, and \pkg{fontenc} must be the first.
%
% Input encoding should be declared as option to the \pkg{inputenc}
% package. Known Cyrillic encodings include
% \texttt{cp1251} (Windows), \texttt{koi8-u} (UNIX) and their variants.
% Nowadays, this list is appended with \texttt{utf8} input encoding.
%
% Output encodings (also known as font encodings) are declared as options to
% the \pkg{fontenc} package. Known Cyrillic encodings are \texttt{T2A},
% \texttt{T2B}, \texttt{T2C}, \texttt{LCY},  and \texttt{X2};
% \texttt{LWN} is not supported since \texttt{LWN} has been excluded
% from the \pkg{cyrillic} bundle of related files.
%
%
% \subsection{Lua\LaTeX}
%
% If Unicode fonts are not available, Lua\LaTeX\ can run in compatibility
% (8-bit) mode to use same font as \LaTeX\ does. However the package
% \pkg{inputenc} does not work with Lua\LaTeX\ and should be substituted with
% \pkg{luainputenc}. Source file is to be converted to \texttt{UTF8}
% (Unicode-8) encoding; it is the only input encoding accepted by
% Lua\LaTeX. The 8-bit mode is invoked by the following sequence of packages:
%\begin{verbatim}
%\usepackage[T1,T2A]{fontenc}
%\usepackage[lutf8]{luainputenc}
%\usepackage[english,belarusian]{babel}
%\end{verbatim}
% The order of the packages is crucial for Lua\LaTeX\ in 8-bit mode. Since both
% \pkg{luainputenc} and \pkg{babel} should know what is a selected font encoding,
% the \pkg{fontenc} package should be loaded first. Input encoding management for
% Lua\TeX\ is needed only for compatibility with old documents. For new
% documents, using UTF-8 encoding and Unicode fonts is strongly recommended.
% \emph{You've been warned!} See
% \href{http://tex.stackexchange.com/questions/31709/can-one-instruct-lualatex-to-use-t2a-encoded-fonts}%
% {tex.stackexchange.com/questions/31709/can-one-instruct-lualatex-to-use-t2a-encoded-fonts}.
%
%
% To invoke Unicode mode, one needs to load the \pkg{fontspec} package instead
% of \pkg{luainputenc} and \pkg{fontspec} and explicitly indicate which True Type
% or Open Type fonts should be used for romanic, sans-serif and monospaced types.
% The following example shows how to load Computer Modern Unicode (CMU) fonts,
% which is a part of all modern \LaTeX\ distributions:
%\begin{verbatim}
%\usepackage{fontspec}
%  \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}}
%  \setmainfont{CMU Serif}
%  \setsansfont{CMU Sans Serif}
%  \setmonofont{CMU Typewriter Text}
%\usepackage[english,belarusian]{babel}
%\end{verbatim}
% The |\defaultfontfeatures| declares default font features for subsequent
% |\setmainfont| (which sets romanic fonts), |\setsansfont| (sans-serif) and
% |\setmonofont| (monospaced font). Font features can be set up on per font
% bases; for example
% \begin{verbatim}
% \usepackage{fontspec}
%    \setmainfont[Renderer=Basic,Ligatures={TeX}]{CMU Serif}
%    \setsansfont[Renderer=Basic,Ligatures={TeX,Historic}]{CMU Sans Serif}
%    \setmonofont{CMU Typewriter Text}
% \usepackage[english,belarusian]{babel}
%\end{verbatim}
% Here |Renderer=Basic,Ligatures={TeX}| activates ligatures which are existed
% in \LaTeX.
%
% Recall that the language enlisted last in the list of options of the \pkg{babel}
% package is assumed to be the main language of the document, which is also active
% language right after |\begin{document}|. As of version 3.9, the main language
% can be set as a value of the |main| option as follows
%\begin{verbatim}
% \usepackage{fontspec}
% \usepackage[english,main=belarusian,german]{babel}
%\end{verbatim}
% %\unskip
%
%
%
% \subsection{Xe\LaTeX}
%
% In Xe\LaTeX, there is also a special mode for 8-bit compatibility.
% One can use |\XeTeXinputencoding| to change the input encoding
% temporarily, and the \texttt{"bytes"} encoding makes Xe\LaTeX\ works
% like a 8-bit \LaTeX\ engine:
% \begin{verbatim}
% \XeTeXinputencoding "bytes"
% \usepackage[utf8]{inputenc}
% \usepackage[T2A]{fontenc}
% \usepackage[english,belarusian]{babel}
%\end{verbatim}
% \unskip
% Xe\TeX\ can use a different input encoding but it always uses the Unicode
% internally, so that |\XeTeXinputencoding| performs a conversion of the input
% into Unicode;
% see \href{http://tex.stackexchange.com/questions/36188/do-xetex-and-luatex-always-use-unicode}
% {tex.stackexchange.com/questions/36188/do-xetex-and-luatex-always-use-unicode}.
%
%
% Unicode mode is set up same way as for Lua\LaTeX, however the option
% |Renderer=Basic| can be dropped:
%\begin{verbatim}
% \usepackage{fontspec}
%    \defaultfontfeatures{Ligatures={TeX}}
%    \setmainfont{CMU Serif}
%    \setsansfont{CMU Sans Serif}
%    \setmonofont{CMU Typewriter Text}
% \usepackage[english,belarusian]{babel}
%\end{verbatim}
% %\unskip
%
%
% \subsection{Official and ‘classic’ spelling}
% \label{ssec:spelling}
%
% By default, the official spelling is enabled. The ‘classic’ (Taraškievič)
% spelling can be enabled by setting the attribute to \Lopt{classic} or
% \Lopt{tarask}. To set an attribute, put the |\languageattribute| macro
% within a document preamble after \babel, for example,
%\begin{verbatim}
% \usepackage[english,belarusian]{babel}
% \languageattribute{belarusian}{classic}
%\end{verbatim}
% Setting the \Lopt{classic} attribute changes the built-in strings (caption names)
% and a date format. For example, the references list will be entitled as
% `\textcyrillic{Спіс літаратуры}' by default and as `\textcyrillic{Сьпіс літаратуры}' if the
% Belarusian language attribute is set to \Lopt{classic}.
% The same result can be achieved using a modifier as follows:
%\begin{verbatim}
%\usepackage[english,belarusian.classic]{babel}
%\end{verbatim}
% Using a modifier in a package option is often better. A modifier is set after
% the language name, and is prefixed with a dot (only when the language is set
% as package option, neither global options nor the main key accept them).
%
% Both attributes \Lopt{classic} and \Lopt{tarask} may be used interchangeably.
%
%\section{User's commands}
%
% In a multilingual document, some typographic rules are language
% dependent and should apply to the whole document.
%
%^^AAs of version~1.2, \file{belarusian.ldf} behaves differently
%^^Aaccording to \babel's \emph{main language} defined as the \emph{last}
%^^Aoption. When Belarusian is
%^^A|babel|'s main language, it adjusts global layout of the document
%^^Aaccording to typographical conventions of Belarusian language. Namely,
%^^A\file{belarusian.ldf} makes the following changes to global layout even
%^^Ain the parts where Belarusian is not current language:
%^^A\begin{enumerate}
%^^A\item
%^^A    the first paragraph of any section becomes indented (\LaTeX{} only).
%^^A    (this is obsolete statement starting from version 1.2a)
%^^A\end{enumerate}
%
% Regarding local typography, the macro |\selectlanguage{belarusian}|
% switches to the Belarusian language, with the following effects:
% \begin{enumerate}
% \item Belarusian hyphenation patterns are made active;
% \item |\today| prints the date in Belarusian;
% \item the caption names are translated into Belarusian
%      (\LaTeX{} only);
% \item emdash typed by the ligature |---| might be 20\% shorter when Belarusian
% is the current language; the result depends on the current encoding; |---|
% always produce long emdash in Lua\TeX\ and Xe\TeX\ since these engines
% use same encodings for all languages;
% \item emdash typed by the ligature |"---| in Belarusian is 20\% shorter, however
% the ligature |"---| might not be defined in other languges; a
%      shorter emdash (i.e. |\cyrdash|) can be typeset in any language using
%      special macros enlisted in table \ref{tab:belarusian-quote}.
% \end{enumerate}
%
% By default, the official spelling is used for built-it strings (caption names) and
% the date. The spelling can be reverted to the classic one by setting the language
% attribute to \Lopt{classic} in the document preamble as discussed in
% Sec.~\ref{ssec:spelling}.
%
% Since Belarusian has its own numbering system, \file{belarusian.ldf} adds macros
% |\asbuk|\marg{counter} and |\Asbuk|\marg{counter} for formatting numbers appropriately the alphabetic
% sequence in the Belarusian alphabet. Additional commands are provided
% to typeset quotes:
% \begin{enumerate}
% \item French quotation marks can be entered using the commands
%      |\guillemotleft| and |\guillemotright| which work in \LaTeXe\
%      and Plain\TeX.
% \item German quotation marks can be entered using the commands
%      |\glqq| and |\grqq| which work in \LaTeXe\ and Plain\TeX.
% \end{enumerate}
%
% The macro |\Belarusian| is now defined as an alias for
% |\selectlanguage{belarusian}|, and its ``opponent'' |\English|, existed
% in \file{belarusian.ldf} prior to version 1.2 has been removed since the Belarusian
% language definition file is wrong place for definition of macros which
% switch to a distinct other language.
%
% The macro |\textcyrillic|\marg{text} is intended to typeset small chunks of text
% in Belarusian; it is essentially an alias for |\foreignlanguage{belarusian}|\marg{text}.
%
%
% \subsection{Active character}
%
% Table~\ref{tab:belarusian-quote} shows macros and active string which can be
% used to typeset various dashes and quotes.
% In the Belarusian language, the character |"| is made active. It can be
% considered as second escape character in addition to |\|. Some dashes and
% all quotes can be typed using both active character |"| and ordinary
% macros as indicated in the table. However, some shorthanded hyphenations
% have no macro counterpart.
%
% \begin{table}[ht]\centering
%  \caption{Extra definitions made
%           by \file{belarusian.ldf}}\label{tab:belarusian-quote}
%  \medskip
%  \begin{tabular}{llp{7cm}}
%  \hline\hline\\[-0.5em]
%   |\glqq| & |"`| &
%       German opening double quote (looks like ,\kern-0.08em,).     \\
%   |\grqq| & |"'| &
%       German closing double quote (looks like ``).                \\
%   |\guillemotleft| & |"<| &
%       French opening double quote (looks like $<\!\!<$).           \\
%   |\guillemotright| & |">| &
%       French closing double quote (looks like $>\!\!>$).          \\
%   |\dq|   &  &
%       Original quotes character (|"|).                       \\[0.5em]
%   |\babelhyphen{soft}|
%   & |"-| & Optional (soft) hyphen sign, similar to |\-| but allows
%            hyphenation in the rest of the word;
%            equivalent to |\babelhyphen{soft}| in \pkg{babel} 3.9. \\
%   |\babelhyphen{empty}|
%   & |""| & Similar to |"-| but prints no hyphen sign
%            (used for compound words with hyphen, e.g. |x-""y|);
%            equivalent to |\babelhyphen{empty}| in \pkg{babel} 3.9. \\
%   |\babelhyphen*{nobreak}|
%   & |"~| & Compound word mark without a breakpoint, prints hyphen
%            prohibiting hyphenation at the point;
%            equivalent to |\babelhyphen*{nobreak}| in \pkg{babel} 3.9. \\
%   |\babelhyphen{hard}|
%   & |"=| & A compound word mark with a breakpoint, prints hyphen
%            allowing hyphenation in the composing words.
%            equivalent to |\babelhyphen{hard}| in \pkg{babel} 3.9. \\
%   |\babelhyphen{nobreak}|
%   & \verb="|= & Disables ligature at this position;
%            equivalent to |\babelhyphen{nobreak}| (??) in \pkg{babel} 3.9.
%                                                                  \\[0.5em]
%   |\cyrdash|  &        & Row Cyrillic emdash (does not care
%       spaces around).                                            \\
%   |\cdash---| & |"---| &
%       Cyrillic emdash in plain text.                              \\
%   |\cdash--~| & |"--~| &
%       Cyrillic emdash in compound names
%                                 (as in |Mendeleev"--~Klapeiron|). \\
%   |\cdash--*| & |"--*| &
%       Cyrillic emdash for denoting direct speech.                           \\
%   & |",| & Thin space
%               (allows further hyphenation as in |D.",Mendeleev|). \\[0.5em]
%  \hline\hline
%  \end{tabular}
% \end{table}
% Note that the standard soft hyphen |\-| is equivalent to |\babelhyphen*{soft}|.
%
% \medskip
%
% The quotation marks traditionally used in Belarusian were borrowed from
% other languages (e.g., French and German) so they keep their original
% names.
%
% The French quotes are also available as ligatures `|<<|' and `|>>|' in
% 8-bit Cyrillic font encodings (\texttt{LCY}, \texttt{X2}, \texttt{T2*})
% and in Unicode encodings (\texttt{EU1} and \texttt{EU2})
% and as `|<|' and `|>|' characters in 7-bit Cyrillic font encodings
% (\texttt{OT2} and \texttt{LWN}).
%
% In Unicode encodings \texttt{EU1} and \texttt{EU2} cyrdashes and quotes
% can be typed as single character if text editor makes it possible to
% insert characters which absent of standard keyboard. This method works
% as well for 8-bit fonts encoded according to \texttt{T2A} if source file
% is encoded with \texttt{cp1251} or {utf8}.
%
% By default, active double quote is switched on. It can be switched off
% any time using |\shorthandoff{"}| and the switched on again using
% |\shorthandon{"}|. The aliases |\mdqoff| and |\mdqon| for these two macros
% has been removed from \file{belarusian.ldf} starting from version 1.3 in favour of
% the macros |\shorthandon| and |\shorthandoff| provided in the \pkg{babel} core.
%
%
% \subsection{Math commands}
%
% \file{\filename} defines few macros than can be used independently
% of current language. These are 9 macros to be used in math mode to type
% the names of trigonometric functions common for Belarusian documents:
% |\sh|, |\ch|, |\tg|, |\ctg|, |\arctg|, |\arcctg|, |\th|, |\cth|, and
% |\cosec|. Cyrillic letters in math mode can be typed with the aid of
% text commands such as |\textbf|, |\textsf|, |\textit|, |\texttt|, e.t.c.
%
% The macros |\Prob|, |\Variance|, |\NAD|, |\nad|, |\NAK|, |\nak|, |\Proj|
% print  some rare Belarusian mathematical symbols.
%
%
%    \section{\TeX{}nical details}
%
%    The packages \pkg{inputenc} and  \pkg{luainputenc}
%    make Cyrillic letters active so that a compiler converts them into
%    corresponding |\cyr...| macro at compilation time.
%    For example, Belarusian letter `a' matches
%    macro |\cyra|, and capital Belarusian letter `A' matches |\CYRA|. The
%    package \pkg{fontenc} then matches every macro |\cyr...| to corresponding
%    glyph in a font file depending on a declared font encoding.
%
%    Nowadays, Unicode makes |\cyr...| macros outdated since both source
%    file and font file are encoded consistently. These macros
%    should therefore be removed because mixing them with Unicode characters
%    breaks sorting mechanism of such utilities as \file{bibtex} and
%    \file{makeindex}. For the sake of backward compatibility, |\cyr...| are
%    still kept for \LaTeX, but they are bypassed if Lua\LaTeX\ or  Xe\LaTeX\
%    are detected.
%
%    Some inconsistences of prior versions of \file{\filename} was also
%    overcame in the version 1.2. Those users who used |\selectlanguage| macro,
%    defined in the core \pkg{babel} system, to switch between
%    different languages should not worry. However, the macros
%    |\Belarusian|, |\Englsih| and their aliases |\Rus|, |\cyr|,
%    |\Eng| are modified or removed as they did not
%    conform the mechanism of language switching encoded into the
%    core of \pkg{babel} and therefore can mess it.
%
%
%    \section{Known problems}
%
%    Before switching from a legacy 8-bit engine (tex, pdftex) to an Unicode
%    engine (xetex, luatex) and vise versa delete all |.aux|, |.toc|, |.lot|,
%    |.lof| files as they might have stored incompatible internal encodings.
%
%    \cs{cyrdash} might produce dashes of different width in same document after
%    switching to/from Belarusian language if the document is compiled with legacy
%    engines.
%
% \section{History}
%
%\StopEventually{^^A
%  \setlength{\postmulticols}{100pt} % 20pt by default
%  \PrintChanges
%  \PrintIndex
%}
%
%\iffalse
%<*code>
%\fi
%
%
%    \section{Implementation}
%
% \changes{1.3e}{2014/10/14}{Update documentation}
% \changes{1.3d}{2014/10/02}{Fix bug in \cs{Proj}}
% \changes{1.3c}{2014/06/02}{Fix bug in \cs{datebelarusian}}
% \changes{1.3b}{2013/04/06}{Renamed to belarusian to work with babel 3.9}
% \changes{1.2b}{2013/01/08}{Renamed to belarusianu to work with babel-beta 3.9}
% \changes{1.2a}{2012/06/06}{Indentation of 1st paragraph removed}
% \changes{1.1c}{1996/07/11}{Replaced \cs{undefined} with
%    \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
%    with \LaTeX}
% \changes{1.1d}{1996/10/10}{Moved the definition of
%    \cs{atcatcode} right to the beginning.}
% \changes{1.1k}{1999/08/19}{replaced all \cs{penalty}\cs{@M}
%    with \cs{nobreak}}
% \changes{1.1f}{1998/06/26}{%
%    Added definitions of Cyrillic emdash stuff and thinspace}
% \changes{1.1f}{1998/06/26}{%
%    Added definitions of Cyrillic emdash stuff and thinspace}
%
%
%    \subsection{Initial setup}
%
%    The macro |\LdfInit| performs a couple of standard checks that
%    must be made at the beginning of a language definition file,
%    such as checking the category code of the \texttt{@}-sign, preventing
%    the \file{.ldf} file from being processed twice, etc.
%
% \changes{1.1d}{1996/11/03}{Now use \cs{LdfInit} to perform
%    initial checks}
% \changes{1.1e}{1996/12/29}{Added closing brace to second
%    argument of \cs{LdfInit}}
%    \begin{macrocode}
\LdfInit{belarusian}{captionsbelarusian}
%    \end{macrocode}
%
%    First, we check if Lua\LaTeX\ or Xe\LaTeX\ is running. If so, we set
%    boolean key |\if@uni@ode@be| to true. It will be used to eliminate |\cyr...|
%    commands, which were introduced in \LaTeX2e\ to handle various
%    Cyrillic input encoding. With the advent of Unicode \LaTeX\ is
%    moving to universal input encoding, so we consider these |\cyr...|
%    commands as obsolete. They are preserved though for backward
%    compatibility in case if \LaTeX\ or PDF\LaTeX\ are running.
%
%    We don't load the \pkg{ifluatex} or \pkg{ifxetex} package because
%    |\RequirePackage| is not allowed at the stage of processing options
%    (note that babel loads this file right when it processes its own options)
%    but we borrow code from these packages.
%
% \changes{1.2}{2011/10/20}{Check for LuaTeX}
%    \begin{macrocode}
\ifdefined\if@uni@ode@be
  \PackageError{babel}{if@uni@ode already defined.\MessageBreak
    Please contact author of belarusian.ldf}
  \relax
\fi
\newif\if@uni@ode@be
\ifdefined\luatexversion \@uni@ode@betrue \else
\ifdefined\XeTeXrevision \@uni@ode@betrue \fi\fi
%    \end{macrocode}
%
%    Check if hyphenation patterns for the Belarusian language have been
%    loaded in \file{language.dat}. Namely, we check for the existence of
%    |\l@belarusian|. If it is not defined, we declare Belarusian as dialect
%    for the default language number 0 which almost for sure is English.
%
%    \begin{macrocode}
\ifx\l@belarusian\@undefined
  \@nopatterns{Belarusian}
  \adddialect\l@belarusian0
\fi
%    \end{macrocode}
%    Now |\l@belarusian| is always defined.
%
%    \subsection{Output encoding}
%
%    We need to know font encoding that is supposed to be
%    active at the end of the \babel\ package. Default font encoding, set by
%    \LaTeX\ core, is \texttt{OT1}. This can be changed by the \pkg{fontenc}
%    package in case of \LaTeX\ and by \pkg{fontspec} package in case of
%    Lua\LaTeX. It matters weather these packages are loaded before of after
%    \pkg{babel}. In the latter case or if these packages are not loaded at all,
%    \file{belarusian.ldf} ignores their effect and tries to provide some
%    reasonable settings. In particular, \texttt{T2A} will be selected for
%    Belarusian language if \LaTeX\ is running but \texttt{EU1} in case of
%    Xe\LaTeX\ and \texttt{EU2} in case of Lua\LaTeX.
%
%  \begin{macro}{\latinencoding}
% \changes{1.2}{2011/10/20}{Removed \cs{latinencoding}}
%
%    The macro |\latinencoding| keeps the name of Latin encoding. It is
%    defined in \file{babel.def} and is wrapped into |\AtBeginDocument| to allow
%    for late loading \pkg{fontenc}. Therefore it does not matter
%    whether \pkg{babel} is loaded before or after the \pkg{fontenc}.
%    As of version 1.2, definition of |\latinencoding| was removed from
%    \file{belarusian.ldf} since it is overruled in \file{babel.def}.
%    For example, after
%\begin{verbatim}
%\usepackage[T1,T2A]{fontenc}
%\usepackage[english,belarusian]{babel}
%\end{verbatim}%
%    as well as after
%\begin{verbatim}
%\usepackage[english,belarusian]{babel}
%\usepackage[T1,T2A]{fontenc}
%\end{verbatim}%
%    |\latinencoding| will be set to \texttt{T1}.
%    After
%\begin{verbatim}
%\usepackage[english,belarusian]{babel}
%\end{verbatim}%
%    |\latinencoding| will be \texttt{OT1}.
%
%    In Unicode mode, the package \pkg{fontspec} should be loaded instead of
%    \pkg{fontenc} to make font preparation; \pkg{fontspec} loads the package
%    \pkg{xunicode} which sets current encoding (kept in |\cf@encoding|) to
%    \texttt{EU1} for Xe\LaTeX\ and \texttt{EU2} for Lua\LaTeX, and the \pkg{babel}
%    package sets the macro |\latinencoding| to |\cf@encoding|. Since \pkg{babel} scan
%    for value |\cf@encoding| within |\AtBeginDocument|, |\latinencoding| will
%    be set to either \texttt{EU1} for Xe\LaTeX\ or \texttt{EU2} for Lua\LaTeX\
%    no matter which of the packages, \pkg{babel} or \pkg{fontspec} is loaded first.
%
%  \end{macro}
%
%  \Describe\cyrillicencoding{}
%    There is a limited list of encodings appropriate for Cyrillic text. We
%    will look which of them is declared and keep its name in the macro
%    |\cyrillicencoding|.
%    Correct (but obsolete and now deleted) 7-bit Cyrillic encoding is
%    \texttt{LWN}.
%    Correct 8-bit Cyrillic encodings are
%    \texttt{T2A} (default for 8-bit compilers), \texttt{T2B}, \texttt{T2C},
%    \texttt{LCY} and \texttt{X2}.
%    Correct utf8 encodings are
%    \texttt{EU1} (default for Xe\LaTeX),
%    \texttt{EU2} (default for Lua\LaTeX).
%
%    In 8-bit (\LaTeX) mode, user may choose between different non-unicode Cyrillic
%    encodings---e.g., \texttt{X2} or \texttt{LCY}.\@ If user wants
%    to use another font encoding rather than default (\texttt{T2A}),
%    he has to load the corresponding file \emph{before} \file{babel.sty}.
%
%    Remember that for the Belarusian language, the \texttt{T2A} encoding is
%    better than \texttt{X2}, because \texttt{X2} does not contain Latin
%    letters, and users should be very careful to switch the language
%    every time they want to typeset a Latin word inside a Belarusian phrase
%    or vice versa.
%
%
%    We parse the |\cdp@list| containing encodings known to \LaTeX\
%    in the order they were loaded by the time when \pkg{babel} is loaded.
%    We set the |\cyrillicencoding| to the \emph{last} loaded encoding in the
%    list of supported Cyrillic encodings: \texttt{OT2}, \texttt{LCY},
%    \texttt{X2}, \texttt{T2C}, \texttt{T2B}, \texttt{T2A}. In Unicode mode
%    we also try the Unicode encodings \texttt{EU1} and \texttt{EU2}; 8-bit
%    encodings are kept for Unicode compilers (Lua\LaTeX\ and Xe\LaTeX) since
%    they can run in compatibility (8-bit) mode.
%
% \changes{1.2}{2011/10/20}{EU1 and EU2  encodings added}
%    \begin{macrocode}
\def\@setcyrillicencoding{%
  \def\sce@a##1##2{%
    \edef\sce@b{##1}%
    \edef\sce@c{##2}%
    \ifx\sce@b\sce@c
      \let\cyrillicencoding\sce@c
    \fi}%
  \def\cdp@elt##1##2##3##4{%
    \sce@a{##1}{OT2}%
    \sce@a{##1}{LCY}%
    \sce@a{##1}{X2}%
    \sce@a{##1}{T2C}%
    \sce@a{##1}{T2B}%
    \sce@a{##1}{T2A}%
    \if@uni@ode@be
      \sce@a{##1}{EU1}%
      \sce@a{##1}{EU2}%
    \fi}%
  \cdp@list
}
\@setcyrillicencoding
\@onlypreamble\@setcyrillicencoding
\@onlypreamble\sce@a
\@onlypreamble\sce@b
\@onlypreamble\sce@c
%    \end{macrocode}
%    The last lines are to free the memory occupied by the macros
%    |\@setcyrillicencoding| and |\sce@x| that are useless in the document.
%    The contents of |\@begindocumenthook| is cleared automatically.
%
%    If |\cyrillicencoding| is still undefined, we issue warning and provide
%    reasonable default value for |\cyrillicencoding|. We then load default
%    encoding definitions; we use the lowercase names (i.e.,
%    \texttt{lcyenc.def} instead of \texttt{LCYenc.def}) when we do that.
%
% \changes{1.2}{2011/10/20}{Removed test for present of
%    encoding files}
%    \begin{macrocode}
\ifdefined\cyrillicencoding
\else
  \if@uni@ode@be
    \ifdefined\XeTeXrevision
      \edef\cyrillicencoding{EU1}
    \else\ifdefined\luatexversion
      \edef\cyrillicencoding{EU2}
    \fi\fi
  \else
    \edef\cyrillicencoding{T2A}
  \fi
  \PackageWarning{babel}%
    {No Cyrillic font encoding has been loaded so far.\MessageBreak
     A font encoding should be declared before babel.\MessageBreak
     Default `\cyrillicencoding' encoding will be loaded
    }%
  \lowercase\expandafter{\expandafter\input\cyrillicencoding enc.def\relax}%
%    \end{macrocode}
%    As final wisdom, we repeat |\@setcyrillicencoding| at |\begin{document}|
%    time. We could not avoid previous call to |\@setcyrillicencoding| since
%    compiler scan \file{.aux} file before it executes delayed code, and
%    \file{.aux} may contain |\set@langauge{belarusian}|; the latter rises an
%    error if |\cyrillicencoding| would not be defined by that time.
%    \begin{macrocode}
  \AtBeginDocument{\@setcyrillicencoding}
\fi
%    \end{macrocode}
%
%  \Describe\Belarusian{}
%  \DescribeOther\cyr{}
%  \DescribeOther\cyrillictext{}
%    For the sake of backward compatibility we keep the macro |\Belarusian|
%    but redefine its meaning; now  |\Belarusian| is simply an alias for
%    |\selectlanguage{belarusian}|.
%
%    We define |\cyrillictext| and its alias |\cyr| but remove another alias
%    |\Rus|; these macros are intended for use within \texttt{babel} macros and
%    do not perform complete switch of the language.
%    In particular, they to do no switch captions and the name of current
%    language stored in the macro |\languagename|. This inconsistency might
%    break some assumptions embedded into \pkg{babel}'s.
%    For example, the |\iflanguage| macro will fail.
%
%    Second, |\cyrillictext| does
%    not activate shorthands, so that |"<|, |">|, |"`|, |"'|,
%    |"---|, e.t.c. will not work.
%
%    And third, |\cyrillictext| does not write its trace
%    to \file{.aux} file, which might result in wrong typesetting of
%    table of content, list of table and list of figures in multilingual
%    documents.
%
%    Due to any of these reasons the use of the declaration |\cyrillictext| and
%    its aliases in ordinary text is strongly discouraged. Instead of the
%    declaration |\cyrillictext| it is recommended to use |\Belarusian| or the
%    command |\foreignlanguage| defined in the \pkg{babel} core; their
%    functionality is similar to |\selectlanguage{belarusian}| but they did not
%    switch caption names, dates and shorthands.
%
%    \begin{macrocode}
\DeclareRobustCommand{\Belarusian}{\selectlanguage{\belarusian}}
\DeclareRobustCommand{\cyrillictext}{%
  \fontencoding\cyrillicencoding\selectfont
  \let\encodingdefault\cyrillicencoding
  \expandafter\set@hyphenmins\belarusianhyphenmins
  \language\l@belarusian}%
\let\cyr\cyrillictext
%    \end{macrocode}
%
%    Starting from version v.1.2 we remove the |\English| macro and its
%    aliases. We believe that reasonable place for defining these macros
%    would be \file{englishb.ldf}.
%    Note also that the macro |\English| and its  alias |\Eng| are absent
%    in \file{belarusian.ldf}'s counterpart in the package \pkg{polyglossia},
%    analog of \pkg{babel} for Xe\LaTeX.
%
% \changes{1.2}{2011/10/20}{Removed \cs{English} macro}
%    \begin{macrocode}
%%\DeclareRobustCommand{\English}{%
%%  \fontencoding\latinencoding\selectfont
%%  \let\encodingdefault\latinencoding
%%  \expandafter\set@hyphenmins\englishhyphenmins
%%  \language\l@english}%
%%\let\Eng\English
%    \end{macrocode}
%
%    \textsc{Next part of code should be moved to \texttt{X2enc.def},
%    \texttt{X2enc.dfu}, if needed.}
%    Since the \texttt{X2} encoding does not contain Latin letters, we
%    should make some redefinitions of \LaTeX\ macros which implicitly
%    produce Latin letters.
%
%    Unfortunately, the commands |\AA| and |\aa| are not encoding dependent
%    in \LaTeX\ (unlike e.g., |\oe| or |\DH|). They are defined as |\r{A}| and
%    |\r{a}|. This leads to unpredictable results when the font encoding
%    does not contain the Latin letters `A' and `a' (like \texttt{X2}).
%
%    \begin{macrocode}
\expandafter\ifx\csname T@X2\endcsname\relax\else
  \DeclareTextSymbolDefault{\AA}{OT1}
  \DeclareTextSymbolDefault{\aa}{OT1}
  \DeclareTextCommand{\aa}{OT1}{\r a}
  \DeclareTextCommand{\AA}{OT1}{\r A}
\fi
%    \end{macrocode}
%
%
%   The macro |\cyrillictext| switches current (e.g., Latin) font encoding
%   to a Cyrillic font encoding stored in |\cyrillicencoding|. The macro
%   |\latintext| switches back. This method assumes that an font
%   encoding is a Latin one. But in fact the latter assumption does not matter
%   if any other language is switched on using same method, i.e.
%   if corresponding \file{.ldf} file defines required macros to switch that
%   language on from same standard (Latin) state.
%   Since |\latintext| is defined by the core of babel we do not repeat its
%   definition here.
%
% \changes{1.1o}{2003/10/12}{\cs{latintext} is already
%    defined by the core of babel}
% \changes{1.2}{2011/10/20}{\cs{lat} removed}
%    \begin{macrocode}
%\DeclareRobustCommand{\latintext}{%
%  \fontencoding{\latinencoding}\selectfont
%  \def\encodingdefault{\latinencoding}}
%\let\lat\latintext
%    \end{macrocode}
%
%  \Describe\textcyrillic{\marg{text}}
%    The macros |\cyrillictext|  and |\latintext| are declarations.
%    For shorter chunks of text the commands |\textcyrillic| and |\textlatin|
%    can be used.
%
%    The macro |\textcyrillic| takes an argument which is then typeset using the
%    requested font encoding. It is thus an equivalent or
%    |\foreignlangauge{belarusian}|.
% \changes{1.1o}{2003/10/12}{\cs{textlatin} already defined
%    by the core of babel}
%    \begin{macrocode}
\DeclareTextFontCommand{\textcyrillic}{\cyrillictext}
%    \end{macrocode}
%
%
%    \subsection{Input encoding}
%
%    User should use the \pkg{inputenc} package when any 8-bit Cyrillic
%    font encoding is used, selecting one of the Cyrillic input encodings.
%    We do not assume any default input encoding, so
%    the \pkg{inputenc} package should be  explicitly called by
%    |\usepackage{inputenc}| \emph{before} \pkg{babel}.
%    Note however that default font encoding \texttt{T2A} fits
%    well enough to Belarusian version of Windows ANSI encoding which is almost
%    equivalent to \texttt{cp1251}.
%
%    \textsc{Should we wrap this chunk into At Begin document?}
%
% \changes{1.1l}{1999/08/27}{Made not using inputenc a
%    warning instead of an error}
% \changes{1.2}{2011/10/11}{Added EU1 and EU2 encodings}
% \changes{1.2}{2011/10/11}{Removed LWN encoding}
%    \begin{macrocode}
\@ifpackageloaded{inputenc}{%
 \if@uni@ode@be
   \PackageWarning{babel}{inputenc should not be used with LuaTeX or XeTeX}
 \fi
}{%
  %\def\reserved@a{LWN}%
  %\ifx\reserved@a\cyrillicencoding\else
    \def\reserved@a{OT2}%
    \ifx\reserved@a\cyrillicencoding\else
       \def\reserved@a{EU1}%
       \ifx\reserved@a\cyrillicencoding\else
          \def\reserved@a{EU2}%
          \ifx\reserved@a\cyrillicencoding\else
             \PackageWarning{babel}%
                {No input encoding specified for Belarusian language}
    \fi\fi\fi
  %\fi
}
%    \end{macrocode}
%
%
%    \subsection{Shorthands}
%
%    The double quote  character \texttt{"} is declared to be active in
%    Belarusian language.
%
% \changes{1.1a}{1995/03/07}{Use the new mechanism for dealing
%    with active characters}
%    \begin{macrocode}
\initiate@active@char{"}
%    \end{macrocode}
%
% \changes{1.1f}{1998/06/26}{Added switch for
%    doublequote shorthands}
% \changes{1.3}{2013/01/10}{Removed switch for
%    doublequote shorthands}
%
%  \begin{macro}{\mdqon}
%  \begin{macro}{\mdqoff}
%    Obsolete: Active double quote can be both activated and deactivated at any time
%    using the macros |\mdqon| and  |\mdqoff|.
%    \begin{macrocode}
%\def\mdqon{\bbl@activate{"}}
%\def\mdqoff{\bbl@deactivate{"}}
%    \end{macrocode}
%    Initial activation state will set to on later in section \ref{sss:extra}.
%  \end{macro}
%  \end{macro}
%
%  \Describe\dq{}
%    The active character |"| is used as indicated in
%    table~\ref{tab:belarusian-quote}. We save the original double quote
%    character in the |\dq| macro to keep it available.
%    The math accent |\"| can now be typed as `|"|'.
%
%    \begin{macrocode}
\begingroup \catcode`\"12
\def\reserved@a{\endgroup
  \def\@SS{\mathchar"7019 }
  \def\dq{"}}
\reserved@a
%    \end{macrocode}
%
%    \subsubsection{Quotes}
%
%    We set |"`| and |"'| as shorthands for |\quotedblbase| and
%    |\textquotedblleft|, respectively. Prior to ver.1.2, these shorthands
%    were defined through german quotes |\glqq| and |\grqq|, which in their turn
%    are defined in \pkg{babel.def} via |\quotedblbase| and |\textquotedblleft|,
%    respectively. It occurred, that old definition caused errors in Unicode
%    mode if \pkg{fontspec} is loaded.
%
%    Prior to version 1.2, the shorthands |"<| and |">| were
%    declared to be equivalents for the French quotes |\flqq| and |\frqq|,
%    respectively. They are defined in \pkg{babel.def} via |\guillemotleft| and
%    |\guillemotrigh|. However, |\flqq| and |\guillemotleft| (and their right
%    counterparts) are typeset differently if current encoding is not
%    \texttt{T1}. Therefore, since v.1.2, we define |"<| and |">|  directly
%    through |\guillemotleft| and |\guillemotrigh|.
%
%    \begin{macrocode}
\declare@shorthand{belarusian}{"`}{\quotedblbase}
\declare@shorthand{belarusian}{"'}{\textquotedblleft}
\declare@shorthand{belarusian}{"<}{\guillemotleft}
\declare@shorthand{belarusian}{">}{\guillemotright}
%    \end{macrocode}
%
%    Next set of shorthands is intended for variations of standard macro |\-|
%    which indicates explicitly breakpoint for hyphenation in a word. Meaning
%    of these shorthands is explained in table~\ref{tab:belarusian-quote}.
%
%    \begin{macrocode}
\declare@shorthand{belarusian}{""}{\hskip\z@skip}
\declare@shorthand{belarusian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
\declare@shorthand{belarusian}{"=}{\nobreak-\hskip\z@skip}
\declare@shorthand{belarusian}{"|}{%
  \textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}
%    \end{macrocode}
%
%    \subsubsection{Emdash, endash and hyphenation sign}
%
%    To distinguish between |"-| and |"---| we must check whether the next
%    after |-| token is a hyphen character.
%    If it is, we output an emdash, otherwise a hyphen sign. Therefor
%    \TeX\ looks for the next token after the first `|-|', writes
%    its meaning to |\belarusian@sh@next| and finally call for |\belarusian@sh@tmp|.
%
%    \begin{macrocode}
\declare@shorthand{belarusian}{"-}{%
  \def\belarusian@sh@tmp{%
    \if\belarusian@sh@next-\expandafter\belarusian@sh@emdash
    \else\expandafter\belarusian@sh@hyphen\fi}%
  \futurelet\belarusian@sh@next\belarusian@sh@tmp}
%    \end{macrocode}
%    Two macros |\belarusian@sh@hyphen| and |\belarusian@sh@emdash| called by
%    |\belarusian@sh@tmp|  are defined below. The second of
%    them has two parameters since it must gobble next two hyphen signs.
%    \begin{macrocode}
\def\belarusian@sh@hyphen{\nobreak\-\bbl@allowhyphens}
\def\belarusian@sh@emdash#1#2{\cdash-#1#2}
%    \end{macrocode}
%
%  \Describe\cdash{}
%    In its turn, |\belarusian@sh@emdash| simply calls for |\cdash| which has
%    rich use. It analyses 3rd of 3 characters and calls for one of few
%    predefined macros |\@Acdash|, |\@Bcdash|, |\@Ccdash|.
%    \begin{macrocode}
\def\cdash#1#2#3{\def\tempx@{#3}%
\def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
 \ifx\tempx@\tempa@\@Acdash\else
  \ifx\tempx@\tempb@\@Bcdash\else
   \ifx\tempx@\tempc@\@Ccdash\else
    \errmessage{Wrong usage of cdash}\fi\fi\fi}
%    \end{macrocode}
%
%   All these 3 internal macros call for |\cyrdash|, which type Cyrillic
%   emdash, but put different spaces around the dash.
%
%   |\@Acdash| is invoked by |"---|. It types Cyrillic emdash to be used
%   inside a text and puts an unbreakable thin space before the dash if a
%   \textit{space} is placed before |"---| in the source file;
%   can be used after display maths formulae, formatted lists, enumerations, etc.
%    \begin{macrocode}
\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
  \cyrdash\hskip.2em\ignorespaces}%
%    \end{macrocode}
%
%   |\@Bcdash| is invoked by |"--~|. It types Cyrillic emdash in compound
%   names (like Mendeleev--Klapeiron); requires no space characters around and
%   adds extra space after the dash.
%    \begin{macrocode}
\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
 \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
%    \end{macrocode}
%
%   |\@Ccdash| is invoked by |"--*|. It denotes direct speech and adds small
%   space after the dash.
%    \begin{macrocode}
\def\@Ccdash{\leavevmode
 \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
%    \end{macrocode}
%
%  \Describe\cyrdash{}
%   The |\cyrdash| can be defined in a fontenc file as it is done for
%   the \texttt{T2*} encodings. We provide fake definition of |\cyrdash| only if
%   it is not defined there.
%
%   Cyrillic \texttt{T2*} fonts contains shorter (Cyrillic) emdash. It can be
%   typeset also via the ligature |---|. So, if |\laticencoding| differs from
%   \texttt{T2*} switching of languages also changes the emdash length typed as
%   ligature in the source file.
%
% \changes{1.2}{2011/10/20}{Warning is added if \cs{cyrdash} defined}
% \changes{1.3h}{2016/02/18}{\cs{cyrdash} is redefined}
% |\textthreequartersemdash|=!\textthreequartersemdash!
%    \begin{macrocode}
%\ifx\cyrdash\undefined
%  \def\cyrdash{\hbox to.8em{--\hss--}}
%  \PackageInfo{babel}{\string\cyrdash\space is defined}
%\fi
\ProvideTextCommandDefault{\cyrdash}{\iflanguage{belarusian}%
    {\hbox to.8em{--\hss--}}{\textemdash}}
%    \end{macrocode}
%
% \changes{1.1f}{1998/06/26}{%
%    Add macro for thin space between initials}
%
%    Finally, we define a shorthand thin space to be placed between initials
%    as in |D.",Mendeleev|. When used instead of |\,| as in |D.\,Mendeleev|
%    it allows hyphenation in the next word.
%
%    \begin{macrocode}
\declare@shorthand{belarusian}{",}{\nobreak\hskip.2em\ignorespaces}
%    \end{macrocode}
%
%
%   \subsection{Switching to and from Belarusian}
%
%   Now we define additional macros used to reset current language to
%   Belarusian and back
%   to some original state. The package \pkg{babel} based on the assumption
%   that original state is characterized by a Latin encoding. Previously,
%   for back reset the macro |\OriginalTeX| was used, but now use |\latintext|
%   for the same purpose.
%
%
%    \subsubsection{Caption names}
%
%    First, we define Belarusian equivalents for Belarusian caption names.
%
% \Describe\captionsbelarusian{}
%    The macro |\captionsbelarusian| defines caption names used in the
%    four standard document classes provided with \LaTeX. The macro |\cyr|
%    activates Cyrillic encoding. It could be dropped if we would be sure
%    that Belarusian captions are called only if current language is Belarusian.
%    However, the macros such as |\Belarusian| do not conform to strict rules
%    of the package \pkg{babel} as explained in the above.
%
%    As of version v.1.2 we eliminate |\cyr...| macros from caption names
%    if Unicode engine is running. In the latter case, Cyrillic letters are typed
%    in by their Unicode code-points, the |^^^^abcd| notation is not used
%    since it causes error at compilation time in case if \LaTeX\ is running
%    and \texttt{utf8} input encoding is not declared.
%
% \changes{1.2}{2011/10/20}{Unicode code-points added for LuaLaTeX}
%    \begin{macrocode}
\if@uni@ode@be
  %\captionsbelarusian@official
  \addto\captionsbelarusian{%
    \def\prefacename{Прадмова}%   [babel]
    \def\refname{Спіс літаратуры}% [only article]
    \def\abstractname{Анатацыя}%    [only article, report]
    \def\bibname{Літаратура}%        [only book, report]
    \def\chaptername{Глава}%         [only book, report]
    \def\appendixname{Дадатак}%
    \def\contentsname{Змест}%
    \let\tocname=\contentsname
    \def\listfigurename{Спіс ілюстрацый}%
    \def\listtablename{Спіс табліц}%
    \def\indexname{Прадметны паказальнік}%
    \def\authorname{Паказальнік імён}%
    \def\figurename{Рыс.}%
    \def\tablename{Табліца}%
    \def\partname{Частка}%
    \def\enclname{укл.}%
    \def\ccname{зых.}%
    \def\headtoname{вх.}%
    \def\pagename{с.}%               [letter]
    \def\seename{гл.}%
    \def\alsoname{гл.\ таксама}%
    \def\proofname{Доказ}%  [amsthm]
    \def\glossaryname{Слоўнік тэрмінаў}%
    \def\acronymname{Абрэвіятуры}%  [glossaries] {Acronyms}
    \def\lstlistingname{Лістынг}%    [listings]  (the environment) {Listing}
    \def\lstlistlistingname{Лістынгі}% [listings]  (the "List of") {Listings}
    \def\notesname{Нататкі}%         [endnotes] {Notes}
  }%
%    \end{macrocode}
%    Additional definitions for the package \pkg{nomencl}:
%    \begin{macrocode}
  %% =========================================
  %% nomencl
  \ifdefined\nomname
    \addto\captionsbelarusian{%
        \def\nomname{Азначэнні}%
        \def\eqdeclaration#1{, гл.\nobreakspace(#1)}%
        \def\pagedeclaration#1{, стар.\nobreakspace#1}%
    }%
  \fi
%    \end{macrocode}
%    Additional captions for the \cls{revtex} class.
%    \begin{macrocode}
  %% =========================================
  %% RevTeX4 & RevTeX4-1
  %%\@ifclassloaded{revtex4-1}
  %%{<true code>}
  %%{<false coode>}%
  %\@ifclassloaded{revtex4-1}
  %{%
  \ifnum\@ifclassloaded{revtex4}{1}{\@ifclassloaded{revtex4-1}{1}{0}}>0
    \addto\captionsbelarusian{%
    \def\lofname{\listfigurename}
    \def\lotname{\listtablename}
    \def\figuresname{Рысункі}%{Figures}%
    \def\tablesname{Табліцы}%{Tables}%
    \def\appendixesname{Дадаткі}%{Appendixes}%
    \def\acknowledgmentsname{Падзякі}%{Acknowledgments}
    \def\andname{и}%{and}
    \def\@pacs@name{PACS коды: }%{PACS numbers: }%
    \def\@keys@name{Ключавыя словы: }%{Keywords: }%
    \def\Dated@name{Дата: }%{Dated: }%
    \def\Received@name{Атрымана }%{Received }%
    \def\Revised@name{Выпраўленая версія }%{Revised }%
    \def\Accepted@name{Прынята }%{Accepted }%
    \def\Published@name{Апублікавана }%{Published }%
    }%
  %}{}%
  \fi
%    \end{macrocode}
%
% \changes{1.3h}{2016/02/18}{Revtex captions fixed}
%    Now we proceed to the classic version in Unicode encoding.
%    \begin{macrocode}
  \addto\captionsbelarusian@tarask{%
    \def\prefacename{Прадмова}%   [babel]
    \def\refname{Сьпіс літаратуры}% [only article]
    \def\abstractname{Анатацыя}%    [only article, report]
    \def\bibname{Літаратура}%        [only book, report]
    \def\chaptername{Глава}%         [only book, report]
    \def\appendixname{Дадатак}%
    \def\contentsname{Зьмест}%
    \let\tocname=\contentsname
    \def\listfigurename{Сьпіс ілюстрацый}%
    \def\listtablename{Сьпіс табліц}%
    \def\indexname{Прадметны паказальнік}%
    \def\authorname{Паказальнік імён}%
    \def\figurename{Рыс.}%
    \def\tablename{Табліца}%
    \def\partname{Частка}%
    \def\enclname{укл.}%
    \def\ccname{зых.}%
    \def\headtoname{вх.}%
    \def\pagename{с.}%               [letter]
    \def\seename{гл.}%
    \def\alsoname{гл.\ таксама}%
    \def\proofname{Доказ}%  [amsthm]
    \def\glossaryname{Слоўнік тэрмінаў}%
    \def\acronymname{Абрэвіятуры}%  [glossaries] {Acronyms}
    \def\lstlistingname{Лістынг}%    [listings]  (the environment) {Listing}
    \def\lstlistlistingname{Лістынгі}% [listings]  (the "List of") {Listings}
    \def\nomname{Азначэньні}%
    \def\notesname{Нататкі}%         [endnotes] {Notes}
  }
  %% =========================================
  %% RevTeX4 & RevTeX4-1
  %\@ifclassloaded{revtex4-1}
  %{%
  \ifnum\@ifclassloaded{revtex4}{1}{\@ifclassloaded{revtex4-1}{1}{0}}>0
    \addto\captionsbelarusian@tarask{%
    \def\lofname{\listfigurename}
    \def\lotname{\listtablename}
    \def\figuresname{Рысункі}%{Figures}%
    \def\tablesname{Табліцы}%{Tables}%
    \def\appendixesname{Дадаткі}%{Appendixes}%
    \def\acknowledgmentsname{Падзякі}%{Acknowledgments}
    \def\andname{и}%{and}
    \def\@pacs@name{PACS коды: }%{PACS numbers: }%
    \def\@keys@name{Ключавыя словы: }%{Keywords: }%
    \def\Dated@name{Дата: }%{Dated: }%
    \def\Received@name{Атрымана }%{Received }%
    \def\Revised@name{Выпраўленая вэрсыя }%{Revised }%
    \def\Accepted@name{Прынята }%{Accepted }%
    \def\Published@name{Апублікавана }%{Published }%
    }%
  %}{}%
  \fi
  %% =========================================
\else
  %\def\captionsbelarusian@official{%
  \addto\captionsbelarusian{%
    \def\prefacename{\CYRP\cyrr\cyra\cyrd\cyrm\cyro\cyrv\cyra}%   [babel]
    \def\refname{\CYRS\cyrp\cyrii\cyrs \cyrl\cyrii\cyrt\cyra\cyrr\cyra\cyrt\cyru\cyrr\cyrery}% [only article]
    \def\abstractname{\CYRA\cyrn\cyra\cyrt\cyra\cyrc\cyrery\cyrya}%    [only article, report]
    \def\bibname{\CYRL\cyrii\cyrt\cyra\cyrr\cyra\cyrt\cyru\cyrr\cyra}%        [only book, report]
    \def\chaptername{\CYRG\cyrl\cyra\cyrv\cyra}%         [only book, report]
    \def\appendixname{\CYRD\cyra\cyrd\cyra\cyrt\cyra\cyrk}%
    \def\contentsname{\CYRZ\cyrm\cyre\cyrs\cyrt}%
    \let\tocname=\contentsname
    \def\listfigurename{\CYRS\cyrp\cyrii\cyrs \cyrii\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyrery\cyrishrt}%
    \def\listtablename{\CYRS\cyrp\cyrii\cyrs \cyrt\cyra\cyrb\cyrl\cyrii\cyrc}%
    \def\indexname{\CYRP\cyrr\cyra\cyrd\cyrm\cyre\cyrt\cyrn\cyrery \cyrp\cyra\cyrk\cyra\cyrz\cyra\cyrl\cyrsftsn\cyrn\cyrii\cyrk}%
    \def\authorname{\CYRP\cyra\cyrk\cyra\cyrz\cyra\cyrl\cyrsftsn\cyrn\cyrii\cyrk \cyrii\cyrm\cyryo\cyrn}%
    \def\figurename{\CYRR\cyrery\cyrs.}%
    \def\tablename{\CYRT\cyra\cyrb\cyrl\cyrii\cyrc\cyra}%
    \def\partname{\CYRCH\cyra\cyrs\cyrt\cyrk\cyra}%
    \def\enclname{\cyru\cyrk\cyrl.}%
    \def\ccname{\cyrz\cyrery\cyrh.}%
    \def\headtoname{\cyrv\cyrh.}%
    \def\pagename{\cyrs.}%               [letter]
    \def\seename{\cyrg\cyrl.}%
    \def\alsoname{\cyrg\cyrl.\ \cyrt\cyra\cyrk\cyrs\cyra\cyrm\cyra}%
    \def\proofname{\CYRD\cyro\cyrk\cyra\cyrz}%  [amsthm]
    \def\glossaryname{\CYRS\cyrl\cyro\cyrushrt\cyrn\cyrii\cyrk \cyrt\cyrerev\cyrr\cyrm\cyrii\cyrn\cyra\cyrushrt}%
    \def\acronymname{\CYRA\cyrb\cyrr\cyrerev\cyrv\cyrii\cyrya\cyrt\cyru\cyrr\cyrery}%  [glossaries] {Acronyms}
    \def\lstlistingname{\CYRL\cyrii\cyrs\cyrt\cyrery\cyrn\cyrg}%    [listings]  (the environment) {Listing}
    \def\lstlistlistingname{\CYRL\cyrii\cyrs\cyrt\cyrery\cyrn\cyrg\cyrii}% [listings]  (the "List of") {Listings}
    \def\nomname{\CYRA\cyrz\cyrn\cyra\cyrch\cyrerev\cyrn\cyrn\cyrii}%
    \def\notesname{\CYRN\cyra\cyrt\cyra\cyrt\cyrk\cyrii}%         [endnotes] {Notes}
  }%
  %% =========================================
  %% RevTeX4 & RevTeX4-1
  \ifnum \@ifclassloaded{revtex4}{1}{\@ifclassloaded{revtex4-1}{1}{0}}>0
    \addto\captionsbelarusian{%
    \def\lofname{\listfigurename}
    \def\lotname{\listtablename}
    \def\figuresname{\CYRR\cyrery\cyrs\cyru\cyrn\cyrk\cyrii}%{Figures}%
    \def\tablesname{\CYRT\cyra\cyrb\cyrl\cyrii\cyrc\cyrery}%{Tables}%
    \def\appendixesname{\CYRD\cyra\cyrd\cyra\cyrt\cyrk\cyrii}%{Appendixes}%
    \def\acknowledgmentsname{\CYRP\cyra\cyrd\cyrz\cyrya\cyrk\cyrii}%{Acknowledgments}
    \def\andname{\cyri}%{and}
    \def\@pacs@name{PACS \cyrk\cyro\cyrd\cyrery: }%{PACS numbers: }%
    \def\@keys@name{\CYRK\cyrl\cyryu\cyrch\cyra\cyrv\cyrery\cyrya \cyrs\cyrl\cyro\cyrv\cyrery: }%{Keywords: }%
    \def\Dated@name{\CYRD\cyra\cyrt\cyra: }%{Dated: }%
    \def\Received@name{\CYRA\cyrt\cyrr\cyrery\cyrm\cyra\cyrn\cyra }%{Received }%
    \def\Revised@name{\CYRV\cyrery\cyrp\cyrr\cyra\cyrushrt\cyrl\cyre\cyrn\cyra\cyrya \cyrv\cyre\cyrr\cyrs\cyrii\cyrya }%{Revised }%
    \def\Accepted@name{\CYRP\cyrr\cyrery\cyrn\cyrya\cyrt\cyra }%{Accepted }%
    \def\Published@name{\CYRA\cyrp\cyru\cyrb\cyrl\cyrii\cyrk\cyra\cyrv\cyra\cyrn\cyra }%{Published }%
    }%
  \fi
  %% =========================================
  \addto\captionsbelarusian@tarask{%
    \def\prefacename{\CYRP\cyrr\cyra\cyrd\cyrm\cyro\cyrv\cyra}%   [babel]
    \def\refname{\CYRS\cyrsftsn\cyrp\cyrii\cyrs \cyrl\cyrii\cyrt\cyra\cyrr\cyra\cyrt\cyru\cyrr\cyrery}% [only article]
    \def\abstractname{\CYRA\cyrn\cyra\cyrt\cyra\cyrc\cyrery\cyrya}%    [only article, report]
    \def\bibname{\CYRL\cyrii\cyrt\cyra\cyrr\cyra\cyrt\cyru\cyrr\cyra}%        [only book, report]
    \def\chaptername{\CYRG\cyrl\cyra\cyrv\cyra}%         [only book, report]
    \def\appendixname{\CYRD\cyra\cyrd\cyra\cyrt\cyra\cyrk}%
    \def\contentsname{\CYRZ\cyrsftsn\cyrm\cyre\cyrs\cyrt}%
    \let\tocname=\contentsname
    \def\listfigurename{\CYRS\cyrsftsn\cyrp\cyrii\cyrs \cyrii\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyrery\cyrishrt}%
    \def\listtablename{\CYRS\cyrsftsn\cyrp\cyrii\cyrs \cyrt\cyra\cyrb\cyrl\cyrii\cyrc}%
    \def\indexname{\CYRP\cyrr\cyra\cyrd\cyrm\cyre\cyrt\cyrn\cyrery \cyrp\cyra\cyrk\cyra\cyrz\cyra\cyrl\cyrsftsn\cyrn\cyrii\cyrk}%
    \def\authorname{\CYRP\cyra\cyrk\cyra\cyrz\cyra\cyrl\cyrsftsn\cyrn\cyrii\cyrk \cyrii\cyrm\cyryo\cyrn}%
    \def\figurename{\CYRR\cyrery\cyrs.}%
    \def\tablename{\CYRT\cyra\cyrb\cyrl\cyrii\cyrc\cyra}%
    \def\partname{\CYRCH\cyra\cyrs\cyrt\cyrk\cyra}%
    \def\enclname{\cyru\cyrk\cyrl.}%
    \def\ccname{\cyrz\cyrery\cyrh.}%
    \def\headtoname{\cyrv\cyrh.}%
    \def\pagename{\cyrs.}%               [letter]
    \def\seename{\cyrg\cyrl.}%
    \def\alsoname{\cyrg\cyrl.\ \cyrt\cyra\cyrk\cyrs\cyra\cyrm\cyra}%
    \def\proofname{\CYRD\cyro\cyrk\cyra\cyrz}%  [amsthm]
    \def\glossaryname{\CYRS\cyrl\cyro\cyrushrt\cyrn\cyrii\cyrk \cyrt\cyrerev\cyrr\cyrm\cyrii\cyrn\cyra\cyrushrt}%
    \def\acronymname{\CYRA\cyrb\cyrr\cyrerev\cyrv\cyrii\cyrya\cyrt\cyru\cyrr\cyrery}%  [glossaries] {Acronyms}
    \def\lstlistingname{\CYRL\cyrii\cyrs\cyrt\cyrery\cyrn\cyrg}%    [listings]  (the environment) {Listing}
    \def\lstlistlistingname{\CYRL\cyrii\cyrs\cyrt\cyrery\cyrn\cyrg\cyrii}% [listings]  (the "List of") {Listings}
    \def\nomname{\CYRA\cyrz\cyrn\cyra\cyrch\cyrerev\cyrn\cyrsftsn\cyrn\cyrii}%
    \def\notesname{\CYRN\cyra\cyrt\cyra\cyrt\cyrk\cyrii}%         [endnotes] {Notes}
  }%
  %% =========================================
  %% RevTeX4 & RevTeX4-1
  \ifnum \@ifclassloaded{revtex4}{1}{\@ifclassloaded{revtex4-1}{1}{0}}>0
    \addto\captionsbelarusian@tarask{%
    \def\lofname{\listfigurename}
    \def\lotname{\listtablename}
    \def\figuresname{\CYRR\cyrery\cyrs\cyru\cyrn\cyrk\cyrii}%{Figures}%
    \def\tablesname{\CYRT\cyra\cyrb\cyrl\cyrii\cyrc\cyrery}%{Tables}%
    \def\appendixesname{\CYRD\cyra\cyrd\cyra\cyrt\cyrk\cyrii}%{Appendixes}%
    \def\acknowledgmentsname{\CYRP\cyra\cyrd\cyrz\cyrya\cyrk\cyrii}%{Acknowledgments}
    \def\andname{\cyri}%{and}
    \def\@pacs@name{PACS \cyrk\cyro\cyrd\cyrery: }%{PACS numbers: }%
    \def\@keys@name{\CYRK\cyrl\cyryu\cyrch\cyra\cyrv\cyrery\cyrya \cyrs\cyrl\cyro\cyrv\cyrery: }%{Keywords: }%
    \def\Dated@name{\CYRD\cyra\cyrt\cyra: }%{Dated: }%
    \def\Received@name{\CYRA\cyrt\cyrr\cyrery\cyrm\cyra\cyrn\cyra }%{Received }%
    \def\Revised@name{\CYRV\cyrery\cyrp\cyrr\cyra\cyrushrt\cyrl\cyre\cyrn\cyra\cyrya \cyrv\cyrerev\cyrr\cyrs\cyrery\cyrya }%{Revised }%
    \def\Accepted@name{\CYRP\cyrr\cyrery\cyrn\cyrya\cyrt\cyra }%{Accepted }%
    \def\Published@name{\CYRA\cyrp\cyru\cyrb\cyrl\cyrii\cyrk\cyra\cyrv\cyra\cyrn\cyra }%{Published }%
    }%
  \fi
  %% =========================================
\fi
%    \end{macrocode}
%
%    \subsubsection{Date in Belarusian}
%
% \Describe\datebelarusian{}
%    The macro |\datebelarusian| is used to reset the macro |\today| in Belarusian.
%
% \changes{1.2}{2011/10/20}{Unicode code-points added for LuaLaTeX}
%    \begin{macrocode}
\if@uni@ode@be
  \addto\datebelarusian{%
   \def\today{\number\day~\ifcase\month\or
    студзеня\or
    лютага\or
    сакавіка\or
    красавіка\or
    мая\or
    чэрвеня\or
    ліпеня\or
    жніўня\or
    верасня\or
    кастрычніка\or
    лістапада\or
    снежня\fi
    \space \number\year~г.}}
  \def\datebelarusian@tarask{%
   \def\today{\number\day~\ifcase\month\or%
    студзеня\or
    лютага\or
    сакавіка\or
    красавіка\or
    траўня\or
    чэрвеня\or
    ліпеня\or
    жніўня\or
    верасьня\or
    кастрычніка\or
    лістапада\or
    сьнежня\fi%
    \space \number\year~г.}}
\else
  \def\datebelarusian{%
   \def\today{\number\day~\ifcase\month\or
    \cyrs\cyrt\cyru\cyrd\cyrz\cyre\cyrn\cyrya\or
    \cyrl\cyryu\cyrt\cyra\cyrg\cyra\or
    \cyrs\cyra\cyrk\cyra\cyrv\cyrii\cyrk\cyra\or
    \cyrk\cyrr\cyra\cyrs\cyra\cyrv\cyrii\cyrk\cyra\or
    \cyrm\cyra\cyrya\or
    \cyrch\cyrerev\cyrr\cyrv\cyre\cyrn\cyrya\or
    \cyrl\cyrii\cyrp\cyre\cyrn\cyrya\or
    \cyrzh\cyrn\cyrii\cyrushrt\cyrn\cyrya\or
    \cyrv\cyre\cyrr\cyra\cyrs\cyrn\cyrya\or
    \cyrk\cyra\cyrs\cyrt\cyrr\cyrery\cyrch\cyrn\cyrii\cyrk\cyra\or
    \cyrl\cyrii\cyrs\cyrt\cyra\cyrp\cyra\cyrd\cyra\or
    \cyrs\cyrn\cyre\cyrzh\cyrn\cyrya\fi
    \space \number\year~\cyrg.}}
  \def\datebelarusian@tarask{%
   \def\today{\number\day~\ifcase\month\or
    \cyrs\cyrt\cyru\cyrd\cyrz\cyre\cyrn\cyrya\or
    \cyrl\cyryu\cyrt\cyra\cyrg\cyra\or
    \cyrs\cyra\cyrk\cyra\cyrv\cyrii\cyrk\cyra\or
    \cyrk\cyrr\cyra\cyrs\cyra\cyrv\cyrii\cyrk\cyra\or
    \cyrt\cyrr\cyra\cyrushrt\cyrn\cyrya\or
    \cyrch\cyrerev\cyrr\cyrv\cyre\cyrn\cyrya\or
    \cyrl\cyrii\cyrp\cyre\cyrn\cyrya\or
    \cyrzh\cyrn\cyrii\cyrushrt\cyrn\cyrya\or
    \cyrv\cyre\cyrr\cyra\cyrs\cyrsftsn\cyrn\cyrya\or
    \cyrk\cyra\cyrs\cyrt\cyrr\cyrery\cyrch\cyrn\cyrii\cyrk\cyra\or
    \cyrl\cyrii\cyrs\cyrt\cyra\cyrp\cyra\cyrd\cyra\or
    \cyrs\cyrsftsn\cyrn\cyre\cyrzh\cyrn\cyrya\fi%
    \space \number\year~\cyrg.}}
\fi
%    \end{macrocode}
%
%    \subsubsection{Hyphenation patterns}
%
%    Belarusian hyphenation patterns are automatically activated every time
%    Belarusian language is selected via |\selectlanguage|, |\foreignlanguage|
%    or equivalent command. But we need to declare values of
%    |\lefthyphenmin| and |\righthyphenmin|; both are set to~2.
%
%    As of v.1.2 we removed a definition for |\englishhyphenmins|. It is
%    not deal of \file{belarusian.ldf}.
%
% \changes{1.1a}{1995/07/04}{use \cs{belarusianhyphenmins} to
%    store the correct values}
% \changes{1.1m}{2000/09/22}{Now use \cs{providehyphenmins} to
%    provide a default value}
% \changes{1.2}{2011/10/20}{\cs{englishhyphenmins} is removed}
%    \begin{macrocode}
\providehyphenmins{\CurrentOption}{\tw@\tw@}
\providehyphenmins{belarusian}{\tw@\tw@}
%    \end{macrocode}
%
%    \subsubsection{Extra definitions}
%    \label{sss:extra}
%
% \Describe\extrasbelarusian{}
% \DescribeOther\noextrasbelarusian{}
%    The macro |\extrasbelarusian| performs extra definitions in addition to
%    resetting the caption names and date.
%    The macro |\noextrasbelarusian| is used to cancel the actions of
%    |\extrasbelarusian|.
%
% \changes{1.1b}{1996/02/20}{Added switch to \texttt{LWN}
%    encoding}
%
%    First, we instruct \pkg{babel} to switch font encoding using earlier
%    defined macros |\cyrillictext| and |\latintext|.
%
%    \begin{macrocode}
\addto\extrasbelarusian{\cyrillictext}
\addto\noextrasbelarusian{\latintext}
%    \end{macrocode}
%
%    Second, we specify that the Belarusian group of shorthands should be used.
%
%    \begin{macrocode}
\addto\extrasbelarusian{\languageshorthands{belarusian}}
\addto\extrasbelarusian{\bbl@activate{"}}
\addto\noextrasbelarusian{\bbl@deactivate{"}}
%    \end{macrocode}
%
%    Now the action |\extrasbelarusian| has to execute is to make sure that the
%    command |\frenchspacing| is in effect. If this is not the case the
%    execution of |\noextrasbelarusian| will switch it off again.
%
%    \begin{macrocode}
\addto\extrasbelarusian{\bbl@frenchspacing}
\addto\noextrasbelarusian{\bbl@nonfrenchspacing}
%    \end{macrocode}
%
%
%    \subsection{Alphabetic counters}
%
%    Do we need to reset |\@alph| and |\@Alph|? They are used in the
%    \LaTeX\ core to define the macros |\alph| and |\Alph|, respectively, which
%    type a counter with a corresponding letter of Latin alphabet.
%    We just want to make sure that correct |\latinencoding| is used instead of
%    |\latinencoding| to typeset the counter. Starting from v.1.2 we do not
%    reset these macros since all Cyrillic encoding but \texttt{X2} do have
%    Latin letters. When using the \texttt{X2} encoding user must himself
%    take care about selecting correct encoding when he switches his keyboard.
%    Our decision is motivated as follows. If selected Cyrillic font is visually
%    different from Latin font, the macro |\@alph| and |\@Alph| will produce
%    visually different output from surrounding text if they are used with
%    Belarusian text, which is completely legitimate.
%
%    Notice for commented code:\\
%    We put |\latinencoding| in braces to avoid problems with
%    |\@alph| inside minipages (e.g., footnotes inside minipages) where
%    |\@alph| is expanded and we get for example `|\fontencoding OT1|'
%    (|\fontencoding| is robust).
%
%    Note added on 2013/03/22: |{\fontencoding{\latinencoding}\selectfont|
%    rises an error with recent version of \pkg{microtype} package after the
%    |\appendix| declaration (which resets |\thechapter| to |\@Alph\c@chapter}|).
%    Most languages do not reset |\@alph| and |\@Alph| macros and only
%    \pkg{ukrainian} and \pkg{bulgarian} add |\fontencoding| to |\@alph| and
%    |\@Alph|.
%
%    Since v.1.3 we do not reset |\@alph| and |\@Alph| here.
%    Resetting |\fontencoding| in |\@alph| and |\@Alph| causes an error
%    if the package |smartref| is loaded and a |\sref| occurs after the
%    |\appendix| declaration which resets |\thechapter| to |\@Alph\c@chapter|.
% \changes{1.3}{2013/03/22}{Removed \cs{@alph} and \cs{@Alph}}
%
%    \begin{macrocode}
%\def\@alph#1{{\fontencoding{\latinencoding}\selectfont
%  \ifcase#1\or
%    a\or b\or c\or d\or e\or f\or g\or h\or
%    i\or j\or k\or l\or m\or n\or o\or p\or
%    q\or r\or s\or t\or u\or v\or w\or x\or
%    y\or z\else\@ctrerr\fi}}%
%\def\@Alph#1{{\fontencoding{\latinencoding}\selectfont
%  \ifcase#1\or
%    A\or B\or C\or D\or E\or F\or G\or H\or
%    I\or J\or K\or L\or M\or N\or O\or P\or
%    Q\or R\or S\or T\or U\or V\or W\or X\or
%    Y\or Z\else\@ctrerr\fi}}%
%    \end{macrocode}
%
%    We add new enumeration style for Belarusian manuscripts with
%    Cyrillic letters.
%
%  \Describe\Asbuk{}
%    We begin by defining |\Asbuk| which works like |\Alph|, but produces
%    (uppercase) Cyrillic letters instead of Latin ones. The letters YO,
%    ISHRT, USHRT, ERY, and SFTSN are skipped, as usual for such
%    enumeration.
%
%    \begin{macrocode}
\def\Asbuk#1{\expandafter\belarusian@Alph\csname c@#1\endcsname}
\if@uni@ode@be
  \def\belarusian@Alph#1{\ifcase#1\or
    А\or Б\or В\or Г\or Д\or Е\or Ж\or
    З\or І\or К\or Л\or М\or Н\or О\or
    П\or Р\or С\or Т\or У\or Ф\or Х\or
    Ц\or Ч\or Ш\or Э\or Ю\or Я\else\@ctrerr\fi}
\else
  \def\belarusian@Alph#1{\ifcase#1\or
    \CYRA\or\CYRB\or\CYRV\or\CYRG\or\CYRD\or\CYRE\or\CYRZH\or
    \CYRZ\or\CYRII\or\CYRK\or\CYRL\or\CYRM\or\CYRN\or\CYRO\or
    \CYRP\or\CYRR\or\CYRS\or\CYRT\or\CYRU\or\CYRF\or\CYRH\or
    \CYRC\or\CYRCH\or\CYRSH\or\CYREREV\or\CYRYU\or
    \CYRYA\else\@ctrerr\fi}
\fi
%    \end{macrocode}
%
%  \Describe\asbuk{}
%    The macro |\asbuk| is similar to |\alph|; it produces lowercase
%    Belarusian letters.
%
%    \begin{macrocode}
\def\asbuk#1{\expandafter\belarusian@alph\csname c@#1\endcsname}
\if@uni@ode@be
  \def\belarusian@alph#1{\ifcase#1\or
    а\or б\or в\or г\or д\or е\or ж\or
    з\or і\or к\or л\or м\or н\or о\or
    п\or р\or с\or т\or у\or ф\or х\or
    ц\or ч\or ш\or э\or ю\or я\else\@ctrerr\fi}
\else
  \def\belarusian@alph#1{\ifcase#1\or
    \cyra\or\cyrb\or\cyrv\or\cyrg\or\cyrd\or\cyre\or\cyrzh\or
    \cyrz\or\cyrii\or\cyrk\or\cyrl\or\cyrm\or\cyrn\or\cyro\or
    \cyrp\or\cyrr\or\cyrs\or\cyrt\or\cyru\or\cyrf\or\cyrh\or
    \cyrc\or\cyrch\or\cyrsh\or\cyrerev\or\cyryu\or
    \cyrya\else\@ctrerr\fi}
\fi
%    \end{macrocode}
%
%    Babel 3.9 has introduced a notion of a language attribute.
%    The \Lopt{classic} attribute (or its alias \Lopt{tarask}) changes
%    the default behavior which uses the official Belarusian spelling,
%    and activates an alternative set of captions and date macros.
%    \begin{macrocode}
\bbl@declare@ttribute{belarusian}{classic}{%
 \PackageInfo{babel}{Belarusian attribute set to classic}%
 \let\captionsbelarusian=\captionsbelarusian@tarask
 \let\datebelarusian=\datebelarusian@tarask
}
\bbl@declare@ttribute{belarusian}{tarask}{%
 \PackageInfo{babel}{Belarusian attribute set to tarask}%
 \let\captionsbelarusian=\captionsbelarusian@tarask
 \let\datebelarusian=\datebelarusian@tarask
}
%    \end{macrocode}
%    We don't want for long internal macros to waste memory. So we declare
%    them to be usable within the preamble only.
%    \begin{macrocode}
\@onlypreamble\captionsbelarusian@tarask
\@onlypreamble\datebelarusian@tarask
%    \end{macrocode}
%
%    \subsection{Cyrillic math}
%
%    For compatibility with older Russian packages we could define the |\No|
%    macro. However the Belarusian number sign is now superseded with |\textnumero|.
%    Moreover, it can be found of Belarusian keyboard. Therefore we discard |\No|
%    since v.1.2.
%    \begin{macrocode}
%\DeclareRobustCommand{\No}{%
%   \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi}
%    \end{macrocode}
%
%
%    As of version 1.2 the macros |\cyrmath..| are not supported any more. They
%    requires package \pkg{textmath} which is not available now. Instead of
%    |\cyrmath..| it is advised to use corresponding |\text..| commands; they
%    do work in math mode.
%    \begin{macrocode}
%\RequirePackage{textmath}
%  \@ifundefined{sym\cyrillicencoding letters}{}{%
%  \SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding
%    \rmdefault\bfdefault\updefault
%  \DeclareSymbolFontAlphabet\cyrmathrm{\cyrillicencoding letters}
%    \end{macrocode}
%    And we need few commands to switch to different variants.
%    \begin{macrocode}
%\DeclareMathAlphabet\cyrmathbf\cyrillicencoding
%  \rmdefault\bfdefault\updefault
%\DeclareMathAlphabet\cyrmathsf\cyrillicencoding
%  \sfdefault\mddefault\updefault
%\DeclareMathAlphabet\cyrmathit\cyrillicencoding
%  \rmdefault\mddefault\itdefault
%\DeclareMathAlphabet\cyrmathtt\cyrillicencoding
%  \ttdefault\mddefault\updefault
%
%\SetMathAlphabet\cyrmathsf{bold}\cyrillicencoding
%  \sfdefault\bfdefault\updefault
%\SetMathAlphabet\cyrmathit{bold}\cyrillicencoding
%  \rmdefault\bfdefault\itdefault
%}
%    \end{macrocode}
%
%    \Describe\sh{}
%    \DescribeOther\ch{}%
%    \DescribeOther\tg{}%
%    \DescribeOther\ctg{}%
%    \DescribeOther\arctg{}%
%    \DescribeOther\arcctg{}%
%    \DescribeOther\th{}%
%    \DescribeOther\cth{}%
%    \DescribeOther\cosec{}%
%    We also define few math operator names according to Belarusian typesetting
%    traditions. Some math functions in Belarusian math books have names
%    different from English writings. For example, \texttt{sinh} in
%    Belarusian is called \texttt{sh}. Special consideration needs the
%    macro |\th| that conflicts with the text symbol |\th|
%    defined in Latin~1 encoding:
%
% \changes{1.2}{2004/05/21}{Change definition of \cs{th}
%    only for this language}
%    \begin{macrocode}
\def\sh{\mathop{\operator@font sh}\nolimits}
\def\ch{\mathop{\operator@font ch}\nolimits}
\def\tg{\mathop{\operator@font tg}\nolimits}
\def\ctg{\mathop{\operator@font ctg}\nolimits}
\def\arctg{\mathop{\operator@font arctg}\nolimits}
\def\arcctg{\mathop{\operator@font arcctg}\nolimits}
\addto\extrasbelarusian{%
  \babel@save{\th}%
  \let\ltx@th\th
  \def\th{\textormath{\ltx@th}%
                     {\mathop{\operator@font th}\nolimits}}%
  }
\def\cth{\mathop{\operator@font cth}\nolimits}
\def\cosec{\mathop{\operator@font cosec}\nolimits}
%    \end{macrocode}
%
%    \Describe\Prob{}%
%    \DescribeOther\Variance{}%
%    \DescribeOther\nod{}%
%    \DescribeOther\nok{}%
%    \DescribeOther\NOD{}%
%    \DescribeOther\NOK{}%
%    \DescribeOther\Proj{}%
%    Finally, we define some rare Belarusian mathematical symbols:
%    \begin{macrocode}
\def\Prob{\mathop{\kern\z@\mathsf{P}}\nolimits}
\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits}
\if@uni@ode@be
  \def\nod{\mathop{\mathrm{н.а.д.}}\nolimits}
  \def\nok{\mathop{\mathrm{н.а.к.}}\nolimits}
  \def\NOD{\mathop{\mathrm{НАД}}\nolimits}
  \def\NOK{\mathop{\mathrm{НАК}}\nolimits}
  \def\nad{\mathop{\mathrm{н.а.д.}}\nolimits}
  \def\nak{\mathop{\mathrm{н.а.к.}}\nolimits}
  \def\NAD{\mathop{\mathrm{НАД}}\nolimits}
  \def\NAK{\mathop{\mathrm{НАК}}\nolimits}
  \def\Proj{\mathop{\mathrm{Пр}}\nolimits}
\else
  \def\nod{\mathop{\textnormal{\cyrn.\cyra.\cyrd.}}\nolimits}
  \def\nok{\mathop{\textnormal{\cyrn.\cyra.\cyrk.}}\nolimits}
  \def\NOD{\mathop{\textnormal{\CYRN\CYRA\CYRD}}\nolimits}
  \def\NOK{\mathop{\textnormal{\CYRN\CYRA\CYRK}}\nolimits}
  \def\nad{\mathop{\textnormal{\cyrn.\cyra.\cyrd.}}\nolimits}
  \def\nak{\mathop{\textnormal{\cyrn.\cyra.\cyrk.}}\nolimits}
  \def\NAD{\mathop{\textnormal{\CYRN\CYRA\CYRD}}\nolimits}
  \def\NAK{\mathop{\textnormal{\CYRN\CYRA\CYRK}}\nolimits}
  \def\Proj{\mathop{\textnormal{\CYRP\cyrr}}\nolimits}
\fi
%    \end{macrocode}
%
%    \subsection{Final settings}
%
%    The macro |\ldf@finish| does work needed
%    at the end of each \file{.ldf} file. This
%    includes resetting the category code of the \texttt{@}-sign,
%    loading a local configuration file, and preparing the language
%    to be activated at |\begin{document}| time.
%
% \changes{1.1d}{1996/11/03}{Now use \cs{ldf@finish} to wrap
%    up}
%    \begin{macrocode}
\ldf@finish{belarusian}
%    \end{macrocode}
%
%    \begin{macrocode}
%    \end{macrocode}
%\iffalse
%</code>
%\fi
% \CheckSum{2215}
%\Finale
