summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/babel-contrib/bulgarian/bulgarian.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/babel-contrib/bulgarian/bulgarian.dtx')
-rw-r--r--macros/latex/contrib/babel-contrib/bulgarian/bulgarian.dtx2092
1 files changed, 2092 insertions, 0 deletions
diff --git a/macros/latex/contrib/babel-contrib/bulgarian/bulgarian.dtx b/macros/latex/contrib/babel-contrib/bulgarian/bulgarian.dtx
new file mode 100644
index 0000000000..ea52aa26f9
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/bulgarian/bulgarian.dtx
@@ -0,0 +1,2092 @@
+% \iffalse meta-comment
+%
+% Copyright 2013 Georgi N. Boshnakov
+% Copyright 1989-2008 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part of the Babel system.
+% --------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work is Georgi N. Boshnakov
+%
+% \fi
+% \CheckSum{1881}
+%
+% \iffalse
+% Tell the \LaTeX\ system who we are and write an entry on the
+% transcript.
+%<*dtx>
+\ProvidesFile{bulgarian.dtx}
+%</dtx>
+%<code>\ProvidesLanguage{bulgarian}
+ [2013/10/14 v1.2g Bulgarian support from the babel system]
+%
+%% File `bulgarian.dtx'
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989-2008
+%% by Johannes Braams,TeXniek
+%
+%% Bulgarian Language Definition File
+%% Copyright (C) 1995-2008
+%% by Georgi N. Boshnakov <georgi.boshnakov at umist.ac.uk>
+%% Johannes Braams, TeXniek
+%
+%% Original version adapted from russianb.dtx (August-1998 version)
+%% by Georgi N. Boshnakov <georgi.boshnakov at umist.ac.uk>
+%
+%% Copyright (C) 2013
+%% by Georgi N. Boshnakov
+%
+%% Please report errors to: Georgi N. Boshnakov
+%% georgi.boshnakov at manchester dot ac dot uk
+%
+%<*filedriver>
+\documentclass{ltxdoc}
+\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}
+\else
+ \usepackage[T1,T2A]{fontenc}
+ \usepackage[utf8]{inputenc}
+\fi
+\usepackage[main=bulgarian,english]{babel}
+%
+\newcommand\TeXhax{\TeX hax}
+\newcommand\babel{\textsf{babel}}
+\newcommand\langvar{$\langle\it lang \rangle$}
+\newcommand\note[1]{}
+\newcommand\Lopt[1]{\textsf{#1}}
+\newcommand\file[1]{\texttt{#1}}
+\newcommand\pkg[1]{\texttt{#1}}
+%\AtBeginDocument{\OnlyDescription} % uncomment to print only the user's guide
+% Indexes
+\AtBeginDocument{\CodelineIndex}
+%\PageIndex % Index code by page number
+\AtBeginDocument{\EnableCrossrefs}
+%\DisableCrossrefs % Say \DisableCrossrefs if index is ready
+\AtBeginDocument{\RecordChanges} % Gather update information
+% print the indexes
+\AtEndDocument{\PrintIndex}
+\AtEndDocument{\PrintChanges}
+% To process the indexes do (see the documentation of 'doc'):
+% makeindex -s gind.ist bulgarian.idx
+% makeindex -s gglo.ist -o bulgarian.gls bulgarian.glo
+\DoNotIndex{%
+ \cyra,\cyrb,\cyrv,\cyrg,\cyrd,\cyre,\cyrzh,\cyrz,\cyri,\cyrishrt%
+ ,\cyrk,\cyrl,\cyrm,\cyrn,\cyro,\cyrp,\cyrr,\cyrs,\cyrt,\cyru,\cyrf%
+ ,\cyrh,\cyrc,\cyrch,\cyrsh,\cyrshch,\cyrhrdsn,\cyrsftsn,\cyryu,\cyrya%
+ ,\cyrery,\cyrerev,\cyrii,\cyryar
+ ,\CYRA,\CYRB,\CYRV,\CYRG,\CYRD,\CYRE,\CYRZH,\CYRZ,\CYRI,\CYRISHRT%
+ ,\CYRK,\CYRL,\CYRM,\CYRN,\CYRO,\CYRP,\CYRR,\CYRS,\CYRT,\CYRU,\CYRF%
+ ,\CYRH,\CYRC,\CYRCH,\CYRSH,\CYRSHCH,\CYRHRDSN,\CYRSFTSN,\CYRYU,\CYRYA%
+ ,\CYRERY,\CYREREV,\CYRII,\CYRYAR
+ ,\def,\edef,\else,\fi,\if
+}
+
+
+\begin{document}
+\GetFileInfo{bulgarian.dtx}
+
+\title{The Bulgarian language definition file \\
+ for the \babel\ system\footnote{The file described in this
+section has version number \fileversion\ and was last revised on
+\filedate.} \\[0.5em]
+ \large Version \fileversion}
+
+\author{Georgi N. Boshnakov\footnote{
+The original, non-babel, version (bulgaria.sty) was developed by Georgi
+N. Boshnakov in 1994--1996. It was later adapted for \babel{} by Georgi
+N. Boshnakov and Johannes Braams using as a template the August-1998
+version of \file{russianb.dtx} and heavily borrowing code from there. I
+am also grateful to Vladimir Volovich for his helpful and timely
+advice.
+For versions 1.1-1.2 of the Bulgarian style, significant additions and
+modification to the code were made and the user manual was almost
+completely rewritten.}
+%
+%\footnote{Current maintainer}
+%and
+%Johannes Braams\footnote{Maintainer from 1998-2008}
+%
+}
+
+\date{\filedate}
+
+\maketitle
+
+{\small\tableofcontents}
+
+
+\section{Introduction}
+
+This file provides Bulgarian language support for the \babel{} system.
+
+This version of the Bulgarian style is the first public revision afer the release of version
+3.9 of \babel{} but it should be compatible with previous versions of \babel. More
+specifically, documents that compile successfully with the last version of \babel{} before
+3.9 should continue to compile.
+% The main purpose of this release of the Bulgarian style is to establish if this statement
+% is true.
+The documentation is draft, suggestions and meaningful examples are welcome.
+
+This version corrects some bugs and introduces support for Luatex and
+XeTeX. The documentation has been rewritten (to a large extent).
+A few other small changes have been made as well, see the index
+of changes at the end of this document for details.
+
+Please report any bugs to the current maintainer (Georgi N. Boshnakov).
+
+
+
+% For The Bulgarian language the character |"| is made active. % | to make Emacs
+ % fontification happy
+
+\section{User guide}
+
+
+\subsection{Settings things up}
+\label{sec:settings-things-up}
+
+The Bulgarian style described in this document is used by supplying
+|bulgarian| as one of the language options to \babel{} when loading it.
+If more than one language is requested, the last one designates the main
+language of the document and it will be active after |begin{document}|.
+For example, the command
+\begin{verbatim}
+ \usepackage[english,bulgarian]{babel}
+\end{verbatim}
+loads \babel{} with the English and Bulgarian styles and sets Bulgarian
+as the main language.
+
+For recent versions of \babel{} the main language can be specified also
+with the help of the option |main|:
+\begin{verbatim}
+ \usepackage[main=bulgarian,english]{babel}
+\end{verbatim}
+
+
+For typesetting with the classic engines, \LaTeX{} and pdf\LaTeX{}, it
+is also necessary to specify the encoding of the source file (input
+encoding) and the font encoding. For the unicode based engines,
+LuaLaTeX and Xetex, this is not necessary but but one needs to specify
+fonts. These issues are briefly considered below.
+
+
+\subsubsection{Settings for LaTeX and pdfLaTeX }
+\label{sec:latex}
+
+Here is a template to be inserted towards the beginning of the main
+\LaTeX{} file, after the |documentclass| command:
+\begin{verbatim}
+ \usepackage[T1,T2A]{fontenc}
+ \usepackage[utf8]{inputenc}
+ \usepackage[bulgarian]{babel}
+\end{verbatim}
+This assumes UTF-8 encoded file. If this is not the case, |utf8| should
+be replaced by the actual encoding, most likely |cp1251|:
+\begin{verbatim}
+ \usepackage[T1,T2A]{fontenc}
+ \usepackage[cp1251]{inputenc}
+ \usepackage[bulgarian]{babel}
+\end{verbatim}
+If the input encoding is not specified (i.e. the corresponding line
+above is missing), a warning is issued in the log file and \LaTeX{}
+still tries to typeset the document. It may be sucessful but it is
+better to specify the encoding explicitly.
+
+The options for |fontenc| may look misterious but it is safe to ignore
+the details and simply insert the above command as is. Basically, |T1|
+and |T2A| can be considered standard \TeX{} encodings for the Latin
+and Cyrillic letters, respectively. |T2A| contains Latin letters, as
+well, so |\usepackage[T2A]{fontenc}| is often good enough.
+
+Actually, the encodings have some fallback defaults and a document may
+compile successfully even if one or both of |fontenc| and |inputenc| are
+omitted. However, it is a good idea to supply explicit |inputenc| in any
+case.
+
+
+The support provided by \texttt{inputenc} package for unicode symbols is not
+complete. If \LaTeX{} complains about undefined or unknown unicode
+symbols, there is the alternative to use package |ucs| and specify
+|utf8x| for inputenc, as in:
+\begin{verbatim}
+ \usepackage{ucs}
+ \usepackage[utf8x]{inputenc}
+\end{verbatim}
+In many cases this simply works. Otherwise see the documentation of
+package |ucs| for further details.
+
+
+\subsubsection{Settings for Lualatex}
+\label{sec:lualatex}
+
+Lualatex requires that the source file is in UTF-8 encoding. It requires
+also the specification of fonts. This is done by loading package
+|fontspec| (attention: not |fontenc|) and issuing a sequence of font
+setting commands. The following can be used to arrange for the unicode
+versions of the traditional Computer Roman fonts to be used in the
+document:
+\begin{verbatim}
+ \usepackage{fontspec}
+ \setmainfont{CMU Serif}
+ \setsansfont{CMU Sans Serif}
+ \setmonofont{CMU Typewriter Text}
+ \usepackage[english,bulgarian]{babel}
+\end{verbatim}
+Any system fonts can be used instead. For example, the main font command
+above could be replaced by the following:
+\begin{verbatim}
+ \setmainfont[Ligatures=TeX]{Times New Roman}
+\end{verbatim}
+Package |fontspec| offers a lot of flexibility for the font selection,
+see its documentation.
+%Another useful template is
+% \begin{verbatim}
+% \usepackage{fontspec}
+% \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}}
+% \setmainfont{CMU Serif}
+% \setsansfont{CMU Sans Serif}
+% \setmonofont{CMU Typewriter Text}
+% ...
+% \usepackage[english,bulgarian]{babel}
+% \end{verbatim}
+%
+
+\paragraph{Compatibility mode}
+
+Lualatex can be set up to use 8-bit fonts if the Unicode fonts do not
+work for some reason. Note that the source file still needs to be in
+UTF-8! Here is a template for this (the difference from \LaTeX{} is in
+the second line):
+\begin{verbatim}
+ \usepackage[T1,T2A]{fontenc}
+ \usepackage[lutf8]{luainputenc}
+ \usepackage[english,bulgarian]{babel}
+\end{verbatim}
+The compatibility mode is a remedy for emergencies, not for routine
+use.
+
+
+\subsection{Switching to and from Bulgarian language}
+\label{sec:switch-from-bulg}
+
+The language at the beginning of the document, i.e. after
+|\begin{document}|, is determined by the options used to load package
+ \babel. Several ways of changing the language are available,
+ depending on what the user needs.
+
+
+
+\subsubsection{The most common case}
+\label{sec:typical-change}
+
+In the most common case the user just wants to typeset some piece of
+text in a different language, using the typesetting and hyphenation
+rules of that language, without changing generic strings like
+|\today|, names of sections and things like |\proofname| to the chosen
+language. This can be done with the command |\foreignlanguage| or the
+environment |otherlanguage*|.
+
+Here are some unimaginative examples to illustrate this. Here is a
+phrase in Bulgarian %we need to change to english to pretend
+\selectlanguage{english}%that English is the main language!
+ \foreignlanguage{bulgarian}{"`тази дата е форматирана по
+ американския начин: \today"'},
+\selectlanguage{bulgarian}
+typeset in a sentence written in English. This phrase was typeset as
+follows:
+\begin{verbatim}
+ \foreignlanguage{bulgarian}{"`тази дата е форматирана
+ по американския начин: \today"'}
+\end{verbatim}
+For longer pieces of text it is more convenient to use the equivalent
+environment.
+\begin{verbatim}
+\begin{otherlanguage*}{bulgarian}
+ Това е пример за американския начин за форматиране на дати: \today.
+ А тук думата \proofname е отпечатана с командата |\proofname|.
+\end{otherlanguage*}
+\end{verbatim}
+Notice the `*' in the name of the environment.
+The result is:
+
+\selectlanguage{english}
+\begin{quote}
+\begin{otherlanguage*}{bulgarian}
+ Това е пример за американския начин за форматиране на дати: \today.
+ А тук думата \proofname{} е отпечатана с командата |\proofname|.
+\end{otherlanguage*}
+\end{quote}
+\selectlanguage{bulgarian}
+
+
+Notice that the date and the heading for a proof are still in English.
+To change these and similar language dependent strings we need a total
+change of language. This is discussed below.
+
+
+\subsubsection{Total change of language}
+\label{sec:total-change-lang}
+
+The \babel{} system controls a number of typesetting features for each
+language. The command |\selectlanguage| is used to do a complete
+change to a new language. For example, |\selectlanguage{bulgarian}|
+switches every aspect of the \babel{} system to Bulgarian language. For
+example, the following snippet: {
+\begin{verbatim}
+ \selectlanguage{bulgarian}
+ Този документ е компилиран на \today.
+
+ Думата "`\proofname"'{} е отпечатана с командата |\proofname|.
+ \selectlanguage{english}
+ Some English text...
+\end{verbatim}
+}
+
+\noindent
+produces:
+\begin{quote}
+ \selectlanguage{bulgarian}
+ Този документ е компилиран на \today.
+
+ Думата "`\proofname"'{} е отпечатана с командата |\proofname|.
+ \selectlanguage{english}
+ Some English text...
+\end{quote}
+\selectlanguage{bulgarian}
+
+
+Compare the result here to the similar example in the previous
+section. Now everything is changed, including |\today| and other
+names.
+
+\subsubsection{Compatibility commands for change of language}
+\label{sec:comm-prov-bulg}
+
+Version 1.1 of the Bulgarian style continues to provide a number of
+additional commands for change of language. They are kept mainly for
+compatibility with older versions of the Bulgarian style and their use
+is discouraged.
+
+The command |\Bulgarian| changes only the hyphenation patterns and the
+encoding. It does not make a complete change of language and is really
+suitable for short fragments which do not contain special
+features. This may cause trouble in some cases, e.g. with |aux| files.
+Similarly, the command |\English| switches to the English language. It
+is left for compatibility.
+
+
+For historical and compatibility reasons with ancient version of the
+Bulgarian style, there are also several abbreviations equivalent to
+|\Bulgarian|. These are: |\Bul|, |\Bg|, |\cyrillictext|, |\cyr|. Also,
+|\selectbglanguage| is equivalent to |\selectlanguage{bulgarian}|.
+
+Similarly, |\Eng| is equivalent to |\English| and |\selectenglanguage|
+is equivalent to |\selectlanguage{english}|.
+
+
+
+
+
+
+\subsection{Quotation marks}
+
+Quotation marks with typographic quality used to be a problem in the
+past. They were not available on typewrites and keyboards. Moreover,
+the opening quotes used in Bulgarian typesetting were not available in
+the standard fonts and needed to be generated by other means. With
+modern computers, fonts and editing programs it is no longer a problem
+to enter directly the correct opening and closing quotation marks,
+especially when Unicode based encodigs are in use.
+
+Nevertheless, commands and shorthands are convenient. The special
+commands for quotation marks available for the Bulgarian language are
+shown in Table~\ref{tab:bulgarian-quote}.
+\begin{table}[htb]
+ \begin{center}
+ \begin{tabular}{llp{8cm}}
+ Command & Shorthand & Meaning \\ \hline
+ |\glqq| & |"`| & for German left double quotes (looks like,\kern-0.08em,). \\
+ |\grqq| & |"'| & for German right double quotes (looks like ``).\\^^A%''
+ |\flqq| & |"<| & for French left double quotes (looks like $<\!\!<$).\\
+ |\frqq| & |">| & for French right double quotes (looks like $>\!\!>$).\\
+ |\dq| & & the original quotes character (|"|). % |
+ \end{tabular}
+ \caption{Special quotes available for Bulgarian typesetting}
+ \label{tab:bulgarian-quote}
+ \end{center}
+\end{table}
+The German quotes are the current norm. The French ones can be
+found mostly in older texts.
+
+The French quotes are also available as ligatures `|<<|' and
+`|>>|' in 8-bit Cyrillic font encodings (\texttt{LCY},
+\texttt{X2}, \texttt{T2*}) and as `|<|' and `|>|' characters in
+7-bit Cyrillic font encodings (\texttt{OT2} and \texttt{LWN}).
+
+
+\subsection{Hyphens and dashes}
+
+The em-dash in Bulgarian texts is used for several purposes.
+Table~\ref{tab:bulgarian-emdash} shows the available commands and
+their intended contexts. The second column shows also the
+shorthands that are usually used to enter these dashes.
+\begin{table}[htb]
+ \begin{center}
+ \begin{tabular}{llp{7.8cm}}
+ Command & Shorthand & Meaning \\ \hline
+ |\cdash---| & |"---| & Cyrillic emdash in plain text. \\
+ |\cdash--~| & |"--~| & Cyrillic emdash in compound names (surnames). \\
+ |\cdash--*| & |"--*| & Cyrillic emdash for denoting direct speech.
+ \end{tabular}
+ \caption{The emdashes available for Bulgarian typesetting}
+ \label{tab:bulgarian-emdash}
+ \end{center}
+\end{table}
+
+
+\subsection{Hyphenation control}
+
+Table~\ref{tab:bulgarian-hyphen} gives commands for hyphenation
+control. Most of them aim to facilitate hyphenation in compound words
+and related circumstances.
+
+
+\begin{table}
+ \centering
+ \begin{tabular}{ll}
+ \LaTeX{} source & Typeset output \\ \hline
+ |П. П. Славейков| & П. П. Славейков \\
+ |П.",П.",Славейков| & П.",П.",Славейков
+ \end{tabular}
+ \caption{Example for initials spaced out by ordinary space (first line) and the
+ special command (second line). The command leaves a smaller, more visually
+ appealing space. It also allows hyphenation of the surname, although
+ this is not visible here.}
+\end{table}
+
+% П.",П.",Славейков
+
+\begin{table}[htb]
+ \begin{center}
+ \begin{tabular}{lp{8cm}}
+ Shorthand & Meaning \\ \hline
+ |"-| & an explicit hyphen sign, allowing hyphenation
+ in the rest of the word. \\
+ |""| & like |"-|, but producing no hyphen sign
+ (for compound words with hyphen, e.g.\ |x-""y|
+ or some other signs as ``disable/enable''). \\
+ |"~| & for a compound word mark without a breakpoint. \\
+ |"=| & for a compound word mark with a breakpoint, allowing
+ hyphenation in the composing words. \\
+ |",| & thinspace for initials with a breakpoint
+ in following surname. \\
+ \end{tabular}
+ \caption{Extra definitions, mainly for hyphenation control}
+ \label{tab:bulgarian-hyphen}
+ \end{center}
+\end{table}
+Hyphenating words containing a hyphen is not particularly desirable
+but may be necessary not only for long compounds words like
+министър-председател (prime minister), but also for comparative and
+superlative adjectives like по-""красноречива (more eloquent) or
+най-""безопасният (the safest), since the Bulgarian equivalents of
+`more' and `most' are connected to the adjective by a hyphen. Even so,
+when the line width is not short, which is the case for this document,
+\TeX{} is usually able to avoid hyphenating such words. In this
+paragraph one of the example words is hyphenated only because I
+deliberately edited it until this happened.
+
+
+\subsection{Other shorthands}
+%\label{sec:other-commands}
+
+Table~\ref{tab:lig} gives some additional shorthands.
+Currently there is only one entry and it concerns ligatures.
+Ligatures are not common in Bulgarian texts. A ligature is used to
+replace a sequence of two or more symbols by a more visually appealing
+glyph. This topic is not of much importance for typesetting Bulgarian
+texts and is beyond the scope of this document.
+For example, two dashes, `|--|', normally form a ligature to produce an
+en-dash, `--'. The command \verb+"|+ provides a way to prevent the
+formation of the ligature. So, `\verb+-"|-+' gives
+\DeleteShortVerb{\|}
+ `-"|-'.
+\MakeShortVerb{\|} % |
+
+\begin{table}[htb] % \label{tab:lig} - If I put the label here, the
+ % reference to this table is with two numbers
+ % like 2.5 rather than 5, as in other places!
+ % :TODO: incestigate!
+ \begin{center}
+ \begin{tabular}{lp{8cm}}
+ Shorthand & Meaning \\ \hline
+ \verb="|= & disable ligature at this position.
+ \end{tabular}
+ \caption{Extra shorthands.}
+ \label{tab:lig}
+ \end{center}
+\end{table}
+
+\subsection{Dates}
+\label{sec:dates}
+
+The command |\today| prints the current date. It is in Bulgarian if that
+is the active language, see also Section~\ref{sec:switch-from-bulg}.
+Alternatively, the command |\todayRoman| prints the current date using
+Roman numerals for months.
+So, when this document is compiled, |\today| and |\todayRoman|
+give "`\today"' and "`\todayRoman"', respectively.
+
+
+Note: Following a suggestion by Boyko Bantchev, the space between the
+year and `г.' was reduced in version 1.2b of this style.
+
+% \monthivname{}
+
+The command |\weekdaynamebulgarian| can be used to typeset the names of
+the days of the week. It is mostly intended for use in macros and has
+one argument, the number of the required day of the week. For example,
+|\weekdaynamebulgarian{1}| and
+|\weekdaynamebulgarian{7}|
+give
+\weekdaynamebulgarian{1} and
+\weekdaynamebulgarian{7},
+respectively.
+
+% \weekdayiname{} \weekdayiiname{}
+
+
+\subsection{Enumerations}
+
+The traditional alphabetical enumerations in Bulgarian texts use the
+Cyrillic alphabet (bar several letters). In principle, enumerations are
+a matter for class and style designers but the same can be said also
+about things, other than enumerations, such as names of sections and
+bibliography lists.
+% The alphabet is not the only difference differences are not only
+% in the letters --- Bulgarian authors generally prefer labels formatted
+% as `a)' rather than `(a)'.
+
+The Bulgarian style by default turns on enumeration with Cyrillic
+letters. This means that enumerated lists that would be labelled with
+Latin letters in Latin scripts are labelled with Cyrillic ones instead.
+
+This automatic feature may not always be desirable, so Version 1.1d of
+the Bulgarian style streamlines somewhat the support for Cyrillic
+enumerations. For compatibility with older documents, the default is
+still to turn on the Bulgarian enumerations when the active language is
+Bulgarian but facilities to control this are provided.
+
+The Cyrillic enumeration can also be turned on and off selectively for
+parts of the document using the commands |\abvon| and |\abvoff|.
+The command |\abvoff| turns off the Cyrillic enumeration.
+The command |\abvon| turns it on. It is thus possible to turn
+the feature on and off for parts of the document.
+
+The user can turn off the Cyrillic enumeration by using attribute
+`abvoff' when loading \babel, e.g.
+\begin{verbatim}
+ \usepackage[english,bulgarian .abvoff]{babel}
+\end{verbatim}
+The dot in front of the attribute's name is required and tells \babel{}
+that this is an attribute.
+
+\subsection{Mathematical functions}
+\label{sec:math-funct}
+
+The Bulgarian style provides definitions
+for some mathematical functions whose names differ from the
+corresponding English names.
+
+Currently these functions are:
+|\tg|,
+|\ctg|,
+|\cosec|,
+|\arctg|,
+|\arcctg|,
+|\sh|,
+|\ch|,
+|\cth|.
+
+
+\subsection{Troubleshooting}
+\label{sec:handl-cyrill-lett}
+
+The standard font encoding handling for Cyrillic letters in non-Uniceode
+encodings is based on
+definitions like |\CYRA| for the Cyrillic letters. These are not
+necessary for unicode engines (Luatex, XeTeX) but may still be
+present in other packages (for example |varioref|) that handle
+different languages by storing hard coded strings.
+
+If your document is using a Unicode encoding, most likely UTF-8, and you
+get errors like "`undefined command |\CYRA|"', then
+the command |\cyrxtounicode| may be used as an emergency patch.
+It is not to be used routinely as its use may hide
+unrelated bugs. Just put it at the beginning of your document.
+
+
+
+
+\section{History}
+
+\subsection{Changes in version 1.2}
+
+The user visible changes are in the documentation.
+
+The minor version number was changed from 1 to 2 (hence 1.2 rather than
+1.1) to accomodate a change in \babel{}~3.9g which removed the command
+|UseStrings| and replaced it with a starred version of
+\cs{StartBabelCommands}.
+
+
+\subsection{Changes in version 1.1}
+
+This is the first release after the individual languages were taken out
+of the core \babel{} system (\babel{} version 3.9f). Some of the most
+visible changes:
+
+\begin{itemize}
+\item Support for LuaTeX and XeTeX;
+\item Documentation rewritten;
+\item Facilities for turning on and off automatic Bulgarian enumeration;
+\item Some long standing bugs fixed. In particular, it should no longer
+ be necessary to load |amsmath| before \babel.
+
+
+\end{itemize}
+For more details on the changes, see the "`Change history"' index at
+the end of this document.
+
+
+\subsection{Changes in version 1.0a--1.0g}
+
+Bug fixes and small changes by Johannes Braams.
+
+
+\subsection{Version 1.0}
+
+Johannes Braams modified (and improved) the original draft to conform to
+the \babel{} system and incorporated \file{\filename} into it.
+
+
+\subsection{Older versions}
+
+The first draft of the Bulgarian style for \babel{} was created by
+modifying the August-1998 version of \file{russianb.dtx} for the
+Bulgarian language along the lines of the 1994/1996 (non-babel)
+Bulgarian style (\file{bulgaria.sty}) by Georgi N. Boshnakov. It is
+(reasonably) backward compatible with that style---files prepared for
+that style should compile successfully (with vastly improved appearance
+due to usage of standard fonts).
+
+ % Users should take note of the vaious ``cyrillic'' dashes
+ % available now (see below). These should remove many causes of
+ % headache. Also, although by default the Bulgarian quotation marks
+ % will appear automatically when typesetting in Bulgarian, it is
+ % better to use the new commands |"`| and |"'| which
+ % explicitly typeset them.
+ % Note: automatic switch to Bulgarian quotation is withdrawn
+ % for the moment and may not be reintroduced at all.
+ %
+
+
+
+\DocInput{bulgarian.dtx}
+\end{document}
+%</filedriver>
+%\fi
+%
+% \StopEventually{}
+%
+% \GetFileInfo{bulgarian.dtx}
+%
+% \section{Implementation}
+%
+% \changes{bulgarian-0.99}{2000/06/10}{
+% This is a prerelease version of this file.
+% Features needing further testing are removed.}
+%
+% \changes{bulgarian-1.2a}{2013/09/23}{Switch to babel 3.9g which
+% replaced \cs{UseStrings} with a mechanism based on starred
+% \cs{StartBabelCommands} commands.}
+%
+% \changes{bulgarian-1.2d}{2013/10/02}{Substantial clean-up of the
+% code and comments. In particular, removed commented out old code.}
+%
+% The macro |\LdfInit| takes care of preventing that this file is
+% loaded more than once, checking the category code of the
+% \texttt{@} sign, etc.
+%
+% \begin{macrocode}
+%<*code>
+\LdfInit{bulgarian}{captionsbulgarian}
+% \end{macrocode}
+%
+% When this file is read as an option, i.e., by the |\usepackage|
+% command, \texttt{bulgarian} will be an `unknown' language, in
+% which case we have to make it known. So we check for the
+% existence of |\l@bulgarian| to see whether we have to do
+% something here.
+%
+% \begin{macrocode}
+\ifx\l@bulgarian\@undefined
+ \@nopatterns{Bulgarian}
+ \adddialect\l@bulgarian0
+\fi
+% \end{macrocode}
+%
+% New in version 1.1: detect luatex or xetex. The code is taken from
+% russinab.dtx but the counter is renamed to avoid possible conflicts.
+% \begin{macrocode}
+\newif\if@bul@unicode
+\ifdefined\luatexversion \@bul@unicodetrue \else
+\ifdefined\XeTeXrevision \@bul@unicodetrue \fi\fi
+% \end{macrocode}
+%
+%
+%
+% \subsection{Font encodings}
+% \label{sec:font-encodings}
+%
+%
+% \begin{macro}{\latinencoding}
+% \changes{bulgarian-1.1}{2013/06/08}{Removed.}
+%
+% We need to know the fond encoding for text that is supposed to be
+% active at the end of the \babel\ package. This is effectively assumed
+% to be a Latin encoding and the macro \cs{latinencoding}, defined by
+% \babel{}, contains the name of the Latin encoding.
+%
+% \end{macro}
+%
+% \begin{macro}{\cyrillicencoding}
+% We need also to determine the encoding for Cyrillic text. It is
+% normally loaded by the |fontenc| package. These days it is usually
+% \texttt{T2A}.
+%
+% We parse the |\cdp@list| containing the encodings known to \LaTeX\
+% in the order they were loaded. We set the |\cyrillicencoding| to the
+% \emph{last} loaded encoding in the list of supported Cyrillic
+% encodings: \texttt{OT2}, \texttt{LWN}, \texttt{LCY},
+% \texttt{X2}\footnote{Encoding \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 Bulgarian
+% phrase or vice versa.}, \texttt{T2C}, \texttt{T2B}, \texttt{T2A}, if
+% any.
+%
+%
+% \begin{macrocode}
+\def\reserved@a#1#2{%
+ \edef\reserved@b{#1}%
+ \edef\reserved@c{#2}%
+ \ifx\reserved@b\reserved@c
+ \let\cyrillicencoding\reserved@c
+ \fi}
+\def\cdp@elt#1#2#3#4{%
+ \reserved@a{#1}{OT2}%
+ \reserved@a{#1}{LWN}%
+ \reserved@a{#1}{LCY}%
+ \reserved@a{#1}{X2}%
+ \reserved@a{#1}{T2C}%
+ \reserved@a{#1}{T2B}%
+ \reserved@a{#1}{T2A}}
+ \cdp@list
+% \end{macrocode}
+%
+% \changes{bulgarian-1.1b}{2013/06/12}{%
+% Changing completely the handling of the case when
+% \cs{cyrillicencoding} is not defined, see russianb.dtx.
+% The old code is commented out.}
+%
+% \changes{bulgarian-1.2d}{2013/10/02}{%
+% Deleted the the old code for the case when the user did not
+% specify font encoding (it had been already commented out in
+% version 1.1b).}
+%
+% If |\cyrillicencoding| is undefined, then the user did not load any
+% of the supported encodings. The code below is new in version 1.1 of
+% this file and considers also the active \TeX{} engine. It was
+% inspired by russianb.dtx. We set a sensible default
+% |\cyrillicencoding| but still issue a warning to alert the user that
+% a default font encoding is used.
+% \begin{macrocode}
+\ifx\cyrillicencoding\undefined
+ \if@bul@unicode
+ \ifdefined\XeTeXrevision
+ \edef\cyrillicencoding{EU1}
+ \else\ifdefined\luatexversion
+ \edef\cyrillicencoding{EU2}
+ \fi\fi
+ \else
+ \edef\cyrillicencoding{T2A}
+ \fi
+ \PackageWarning{bulgarian.ldf}%
+ {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
+ }%
+% \end{macrocode}
+%
+% We avoid |\usepackage[\cyrillicencoding]{fontenc}| because we
+% don't want to force the switch of |\encodingdefault|.
+% \begin{macrocode}
+ \lowercase\expandafter{\expandafter\input\cyrillicencoding enc.def\relax}%
+\fi
+% \end{macrocode}
+%
+% \changes{bulgarian-1.1a}{2013/06/12}{PackageInfo was commented out, uncommented it}
+% \begin{macrocode}
+\PackageInfo{babel}
+ {Using `\cyrillicencoding' as a default Cyrillic encoding}%
+% \end{macrocode}
+% \unskip
+%
+% \end{macro}
+%
+% TODO: add |\English| to the extras for Bulgarian. It should not be
+% defined globally as it may be defined at a more appropriate place elsewhere.
+% In any case, the value of these abbreviations is limited as they do
+% not do a complete switch of language.
+%
+% The following commands are shorthands for switching to Bulgarian and
+% English. They are present here mainly for compatibility with older
+% versions of the Bulgarian style.
+% \begin{macro}{\Bulgarian}
+% A simple switch to Bulgarian language:
+% \begin{macrocode}
+\DeclareRobustCommand{\Bulgarian}{%
+ \fontencoding\cyrillicencoding\selectfont
+ \let\encodingdefault\cyrillicencoding
+ \expandafter\set@hyphenmins\bulgarianhyphenmins
+ \language\l@bulgarian}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\English}
+% A simple switch, similar to the above, but to the English language:
+% \begin{macrocode}
+\DeclareRobustCommand{\English}{%
+ \fontencoding\latinencoding\selectfont
+ \let\encodingdefault\latinencoding
+ \expandafter\set@hyphenmins\englishhyphenmins
+ \language\l@english}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Bul}
+% \begin{macro}{\Bg}
+% \begin{macro}{\cyrillictext}
+% \begin{macro}{\cyr}
+% \begin{macro}{\Eng}
+% \begin{macro}{\selectenglanguage}
+% \begin{macro}{\selectbglanguage}
+% Finally, a few shorthands for switching the languages. These are
+% mostly remnants from pre-babel times.
+% \begin{macrocode}
+\let\Bul\Bulgarian
+\let\Bg\Bulgarian
+\let\cyrillictext\Bulgarian
+\let\cyr\Bulgarian
+\let\Eng\English
+\def\selectenglanguage{\selectlanguage{english}}
+\def\selectbglanguage{\selectlanguage{bulgarian}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%\subsubsection{Adjustments for X2 encoding}
+%
+% The code in this section is executed only if the font encoding is
+% \texttt{X2}
+%
+% Since the \texttt{X2} encoding does not contain Latin letters, we
+% should make some redefinitions of \LaTeX\ macros which implicitly
+% produce Latin letters.
+%
+% \begin{macrocode}
+\expandafter\ifx\csname T@X2\endcsname\relax\else
+% \end{macrocode}
+%
+% 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).
+%
+% \changes{bulgarian-1.0c}{2003/06/14}{Added missing closing brace}
+% \begin{macrocode}
+\def\@Alph@eng#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@eng#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}}%
+ \let\@Alph\@Alph@eng
+ \let\@alph\@alph@eng
+% \end{macrocode}
+%
+% 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}
+ \DeclareTextSymbolDefault{\AA}{OT1}
+ \DeclareTextSymbolDefault{\aa}{OT1}
+ \DeclareTextCommand{\AA}{OT1}{\r A}
+ \DeclareTextCommand{\aa}{OT1}{\r a}
+\fi
+% \end{macrocode}
+%
+%
+% \changes{bulgarian-1.1a}{2013/06/12}{Commenting out the code in
+% section ``Some Greek letters for maths'', which is not needed any
+% more. This also resolves a trouble with amsmath, which made it
+% necessary in the past to load the latter before babel.}
+%
+% \changes{bulgarian-1.2d}{2013/10/02}{Removed section "`Some Greek
+% letters for maths"'. The command had already been commented out in
+% version 1.1a.}
+%
+%
+%\subsection{Input encoding}
+%
+%
+% For \LaTeX{}, pdf\LaTeX{}, and compatibility mode of Lua\LaTeX{}, the
+% user should use the \pkg{inputenc} package (before loading \babel) to
+% specify the encoding of the input file\footnote{After the changes in
+% version 1.1b of |bulgarian.dtx|, if the font and input encoding are
+% \texttt{T2A} and \texttt{cp1251}, respectively, the document might be
+% processed correctly even without the |inputenc| package. Even so, it
+% is better to be explicit about the input encoding.}. For the Unicode
+% engines this is not necessary, as they require Unicode based encoding.
+%
+% We issue a warning if the input encoding has not been specified but do
+% not consider this an error.
+%
+% \changes{bulgarian-1.1b}{2013/06/12}{Added EU1 and EU2 and removed
+% LWN}
+% \changes{bulgarian-1.1b}{2013/06/12}{Produce warning rather then
+% an error when inputenc has not been loaded}
+% \begin{macrocode}
+\@ifpackageloaded{inputenc}{%
+ \if@bul@unicode
+ \PackageWarning{bulgarian.ldf}{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{bulgarian.ldf}%
+ {No input encoding specified for Bulgarian language}
+ \fi\fi\fi
+ %\fi
+}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\cyrillictext}
+% \begin{macro}{\latintext}
+% \begin{macro}{\lat}
+%
+%\subsection{Switching between Cyrillic and Latin encodings}
+%
+% The command |\cyrillictext| will switch from Latin font encoding to
+% the Cyrillic font encoding, the command |\latintext| switches back.
+% We add the shorthand |\lat| for |\latintext|. This assumes that the
+% `normal' font encoding is a Latin one. These commands are
+% \emph{declarations}, for shorter peaces of text the commands
+% |\textlatin| and |\textcyrillic| can be used.
+%
+% |\latintext| is defined in the core of \babel, while |\cyrillictext|
+% is defined above.
+%
+% \begin{macrocode}
+\let\lat\latintext
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\textcyrillic}
+% \begin{macro}{\textlatin}
+%
+% These commands take an argument which is then typeset using the
+% requested font encoding. |\textlatin| is defined in the core of
+% babel. (It is defined there with |\DeclareRobustCommand| instead.)
+%
+% \begin{macrocode}
+\DeclareTextFontCommand{\textcyrillic}{\cyrillictext}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%\subsection{Captions for Bulgarian}
+%
+%
+%
+% If |\bbl@version| is undefined we use the old approach (using
+% |\addto| commands).
+% \begin{macrocode}
+\ifx\bbl@version\@undefined
+\PackageInfo{bulgarian.ldf}{Executing the pre 3.9 branch for captions}
+% \end{macrocode}
+%
+% \subsubsection{Captions for pre3.9 babel}
+%
+% \begin{macro}{\captionsbulgarian}
+%
+% The macro |\captionsbulgarian| defines all strings used in the
+% four standard document classes provided with \LaTeX. The two
+% commands |\cyr| and |\lat| activate Cyrillic, resp. Latin, encoding.
+%
+% \changes{bulgarian-1.1}{2013/06/08}{Added translation for Proof}
+% \changes{bulgarian-1.1}{2013/06/08}{Added translation for
+% Glossary. todo: need to check if this is appropriate.}
+% \begin{macrocode}
+\addto\captionsbulgarian{%
+ \def\prefacename{%
+ {\cyr\CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr}}%
+ \def\refname{%
+ {\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}%
+ \def\abstractname{%
+ {\cyr\CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt}}%
+ \def\bibname{%
+ {\cyr\CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrya}}%
+ \def\chaptername{%
+ {\cyr\CYRG\cyrl\cyra\cyrv\cyra}}%
+ \def\appendixname{%
+ {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre}}%
+ \def\contentsname{%
+ {\cyr\CYRS\cyrhrdsn\cyrd\cyrhrdsn\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}%
+ \def\listfigurename{%
+ {\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ \cyrn\cyra\
+ \cyrf\cyri\cyrg\cyru\cyrr\cyri\cyrt\cyre}}%
+ \def\listtablename{%
+ {\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ \cyrn\cyra\
+ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyri\cyrt\cyre}}%
+ \def\indexname{%
+ {\cyr\CYRA\cyrz\cyrb\cyru\cyrch\cyre\cyrn\
+ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl}}%
+ \def\authorname{%
+ {\cyr\CYRI\cyrm\cyre\cyrn\cyre\cyrn\
+ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl}}%
+ \def\figurename{%
+ {\cyr\CYRF\cyri\cyrg\cyru\cyrr\cyra}}%
+ \def\tablename{%
+ {\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra}}%
+ \def\partname{%
+ {\cyr\CYRCH\cyra\cyrs\cyrt}}%
+ \def\enclname{%
+ {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyrya}}%
+ \def\ccname{%
+ {\cyr\cyrk\cyro\cyrp\cyri\cyrya}}%
+ \def\headtoname{%
+ {\cyr\CYRZ\cyra}}%
+ \def\pagename{%
+ {\cyr\CYRS\cyrt\cyrr.}}%
+ \def\seename{%
+ {\cyr\cyrv\cyrzh.}}%
+ \def\alsoname{%
+ {\cyr\cyrv\cyrzh.\ \cyrs\cyrhrdsn\cyrshch\cyro\ \cyri}}%
+ \def\proofname{%
+ {\cyr\CYRD\cyro\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrs\cyrt\cyrv\cyro}}%
+ \def\glossaryname{%
+ {\cyr\CYRP\cyrr\cyri\cyrt\cyru\cyrr\cyrk\cyra}}% Glossary: Притурка, Глосар?
+}%
+% \end{macrocode}
+% \end{macro}
+%%
+% \subsubsection{Captions for babel 3.9 or later}
+%
+% \begin{macrocode}
+\else
+\PackageInfo{bulgarian.ldf}{Executing the post 3.9 branch for captions}
+\StartBabelCommands*{bulgarian}{captions}[unicode, fontenc=EU1 EU2, charset=utf8]
+ \SetString\prefacename{Предговор}
+ \SetString\refname{Литература}
+ \SetString\abstractname{Абстракт}
+ \SetString\bibname{Библиография}
+ \SetString\chaptername{Глава}
+ \SetString\appendixname{Приложение} % todo: Апендикс ?
+ \SetString\contentsname{Съдържание}
+ \SetString\listfigurename{Списък на фигурите}
+ \SetString\listtablename{Списък на таблиците}
+ \SetString\indexname{Азбучен указател}
+ \SetString\authorname{Именен указател}
+ \SetString\figurename{Фигура}
+ \SetString\tablename{Таблица}
+ \SetString\partname{Част}
+ \SetString\enclname{Приложения}
+ \SetString\ccname{копия}
+ \SetString\headtoname{За}
+ \SetString\pagename{Стр.} % todo: shouldn't this be all lowercase?
+ \SetString\seename{вж.}
+ \SetString\alsoname{вж. също и}
+ \SetString\proofname{Доказателство}
+ \SetString\glossaryname{Притурка}
+
+\StartBabelCommands*{bulgarian}{captions}
+ \SetString\prefacename{%
+ {\cyr\CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr}}%
+ \SetString\refname{%
+ {\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}%
+ \SetString\abstractname{%
+ {\cyr\CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt}}%
+ \SetString\bibname{%
+ {\cyr\CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrya}}%
+ \SetString\chaptername{%
+ {\cyr\CYRG\cyrl\cyra\cyrv\cyra}}%
+ \SetString\appendixname{%
+ {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre}}%
+ \SetString\contentsname{%
+ {\cyr\CYRS\cyrhrdsn\cyrd\cyrhrdsn\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}%
+ \SetString\listfigurename{%
+ {\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ \cyrn\cyra\
+ \cyrf\cyri\cyrg\cyru\cyrr\cyri\cyrt\cyre}}%
+ \SetString\listtablename{%
+ {\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ \cyrn\cyra\
+ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyri\cyrt\cyre}}%
+ \SetString\indexname{%
+ {\cyr\CYRA\cyrz\cyrb\cyru\cyrch\cyre\cyrn\
+ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl}}%
+ \SetString\authorname{%
+ {\cyr\CYRI\cyrm\cyre\cyrn\cyre\cyrn\
+ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl}}%
+ \SetString\figurename{%
+ {\cyr\CYRF\cyri\cyrg\cyru\cyrr\cyra}}%
+ \SetString\tablename{%
+ {\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra}}%
+ \SetString\partname{%
+ {\cyr\CYRCH\cyra\cyrs\cyrt}}%
+ \SetString\enclname{%
+ {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyrya}}%
+ \SetString\ccname{%
+ {\cyr\cyrk\cyro\cyrp\cyri\cyrya}}%
+ \SetString\headtoname{%
+ {\cyr\CYRZ\cyra}}%
+ \SetString\pagename{%
+ {\cyr\CYRS\cyrt\cyrr.}}%
+ \SetString\seename{%
+ {\cyr\cyrv\cyrzh.}}%
+ \SetString\alsoname{%
+ {\cyr\cyrv\cyrzh.\ \cyrs\cyrhrdsn\cyrshch\cyro\ \cyri}}%
+ \SetString\proofname{%
+ {\cyr\CYRD\cyro\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrs\cyrt\cyrv\cyro}}%
+ \SetString\glossaryname{%
+ {\cyr\CYRP\cyrr\cyri\cyrt\cyru\cyrr\cyrk\cyra}}% Glossary: Притурка, Глосар?
+\EndBabelCommands
+\fi
+% \end{macrocode}
+%
+%
+%\subsection{Dates in Bulgarian}
+%
+% \changes{bulgarian-1.2b}{2013/09/26}{Change the ordinary space between
+% the date and g. to \cs{,} in \cs{today} and \cs{todayRoman} (suggested
+% by Boyko Bantchev).}
+%
+% The month is often written with Roman numbers in Bulgarian dates.
+% Below we define a version of \cs{today} in this format but here we
+% define a couple of potentially useful general commands.
+%
+% \begin{macro}{\month@Roman}
+% \begin{macro}{\Romannumeral}
+% |\Romannumeral| converts its argument to a capitalized Roman numeral.
+% |\month@Roman| gives the current month using capital Roman
+% numerals.
+% \begin{macrocode}
+\def\month@Roman{\expandafter\@Roman\month}%
+\def\Romannumeral#1{\uppercase\expandafter{\romannumeral #1}}
+%%% 2013-10-02 comment this out (it is repeated below):
+%%% \def\todayRoman{\number\day.\Romannumeral{\month}.\number\year\,\cyrg.}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+% Define the dates of the switch from Julian to Gregorian calendar in Bulgaria.
+% \begin{macro}{\lastJulianDatebulgarian}
+% \changes{bulgarian-1.2e}{2013/10/10}{New macro.}
+% \begin{macro}{\firstGregorianDatebulgarian}
+% \changes{bulgarian-1.2e}{2013/10/10}{New macro.}
+% \begin{macro}{\weekdaynamebulgarian}
+% \changes{bulgarian-1.2e}{2013/10/10}{New macro.}
+% \begin{macrocode}
+\def\lastJulianDatebulgarian{19160331}
+\def\firstGregorianDatebulgarian{19160414}
+\def\weekdaynamebulgarian#1{\csname weekday\romannumeral#1 name\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Dates for pre3.9 babel}
+%
+% We use the new mechanism provided by \babel~v3.9 but for backward
+% compatibility, at least until version v3.9 of \babel{} becomes
+% ubiquitous we keep old code. The macro |\bbl@version| is undefined
+% in \babel{} versions prior to 3.9, so we use it.
+%
+% If |\bbl@version| is undefined we use the old approach
+% \begin{macrocode}
+\ifx\bbl@version\@undefined
+\PackageInfo{bulgarian.ldf}{Executing the pre 3.9 branch for dates}
+% \end{macrocode}
+%
+% \begin{macro}{\datebulgarian}
+%
+% The macro |\datebulgarian| redefines the command |\today| to
+% produce Bulgarian dates.
+% It also provides the command |\todayRoman| which produces the
+% date with the month in capital roman numerals, a popular format
+% for dates in Bulgarian.
+%
+% \begin{macrocode}
+\def\datebulgarian{%
+ \def\month@bulgarian{\ifcase\month\or
+ \cyrya\cyrn\cyru\cyra\cyrr\cyri\or
+ \cyrf\cyre\cyrv\cyrr\cyru\cyra\cyrr\cyri\or
+ \cyrm\cyra\cyrr\cyrt\or
+ \cyra\cyrp\cyrr\cyri\cyrl\or
+ \cyrm\cyra\cyrishrt\or
+ \cyryu\cyrn\cyri\or
+ \cyryu\cyrl\cyri\or
+ \cyra\cyrv\cyrg\cyru\cyrs\cyrt\or
+ \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrv\cyrr\cyri\or
+ \cyro\cyrk\cyrt\cyro\cyrm\cyrv\cyrr\cyri\or
+ \cyrn\cyro\cyre\cyrm\cyrv\cyrr\cyri\or
+ \cyrd\cyre\cyrk\cyre\cyrm\cyrv\cyrr\cyri\fi}%
+ \def\abbgyear{\cyrg.}
+
+ \def\today{\number\day~\month@bulgarian\ \number\year\,\abbgyear}%
+ \def\todayRoman{\number\day.\,\month@Roman.\,\number\year\,\abbgyear}%
+}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \subsubsection{Dates for babel 3.9 or later}
+%
+% \changes{bulgarian-1.2e}{2013/10/04}{Use \cs{SetStringLoop} for months}
+% \changes{bulgarian-1.2e}{2013/10/04}{Introduce names of days of week}
+%
+% \begin{macrocode}
+\else
+\PackageInfo{bulgarian.ldf}{Executing the post 3.9 branch for dates}
+\StartBabelCommands*{bulgarian}{date}[unicode, fontenc=EU1 EU2, charset=utf8]
+ \SetStringLoop{month#1name}{%
+ януари,февруари,март,април,май,юни,%
+ юли,август,септември,октомври,ноември,декември}
+
+ \SetStringLoop{weekday#1name}{%
+ понеделник,вторник,сряда,четвъртък,петък,събота,неделя}
+
+ \SetString\abbgyear{г.}
+% \end{macrocode}
+% The following |\if| clause is a patch.
+% |\if@bul@unicode| ensures that the following will not be executed
+% Unicode engines are in use. It should not be anyway but
+% |\SetStringLoop| seems to expand its argument prematurely and |\cyrya|
+% etc. are not defined for Unicode engines.
+%
+% \changes{bulgarian-1.2f}{2013/10/13}{(bug fix) put \cs{if@bul@unicode}
+% before \cs{StartBabelCommands} (the dates one)
+% to avoid an error when processing with Luatex.}
+%
+% \begin{macrocode}
+\StartBabelCommands*{bulgarian}{date}
+%%% %(princ (to-cyrx-string bulmonths))
+\if@bul@unicode
+\else
+ \SetStringLoop{month#1name}{%
+ \cyrya\cyrn\cyru\cyra\cyrr\cyri,\cyrf\cyre\cyrv\cyrr\cyru\cyra\cyrr\cyri,%
+ \cyrm\cyra\cyrr\cyrt,\cyra\cyrp\cyrr\cyri\cyrl,\cyrm\cyra\cyrishrt,%
+ \cyryu\cyrn\cyri,\cyryu\cyrl\cyri,\cyra\cyrv\cyrg\cyru\cyrs\cyrt,%
+ \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrv\cyrr\cyri,%
+ \cyro\cyrk\cyrt\cyro\cyrm\cyrv\cyrr\cyri,%
+ \cyrn\cyro\cyre\cyrm\cyrv\cyrr\cyri,\cyrd\cyre\cyrk\cyre\cyrm\cyrv\cyrr\cyri}%
+%%% %(princ (to-cyrx-string "понеделник,вторник,сряда,четвъртък,петък,събота,неделя"))
+ \SetStringLoop{weekday#1name}{%
+ \cyrp\cyro\cyrn\cyre\cyrd\cyre\cyrl\cyrn\cyri\cyrk,%
+ \cyrv\cyrt\cyro\cyrr\cyrn\cyri\cyrk,\cyrs\cyrr\cyrya\cyrd\cyra,%
+ \cyrch\cyre\cyrt\cyrv\cyrhrdsn\cyrr\cyrt\cyrhrdsn\cyrk,%
+ \cyrp\cyre\cyrt\cyrhrdsn\cyrk,\cyrs\cyrhrdsn\cyrb\cyro\cyrt\cyra,%
+ \cyrn\cyre\cyrd\cyre\cyrl\cyrya}%
+\fi
+
+ \SetString\abbgyear{\cyrg.}
+
+ \SetString\today{\number\day~%
+ \csname month\romannumeral\month name\endcsname\space
+ \number\year\,\abbgyear}
+
+ \SetString\todayRoman{\number\day.\,\month@Roman.\,\number\year\,\abbgyear}
+% \end{macrocode}
+% \begin{macrocode}
+\EndBabelCommands
+\fi
+% \end{macrocode}
+
+
+%
+%\subsection{Extras for Bulgarian}
+%
+%
+% \begin{macro}{\extrasbulgarian}
+%
+% The macro |\extrasbulgarian| will perform all the extra
+% definitions needed for the Bulgarian language.
+% The macro |\noextrasbulgarian| is used to cancel the actions of
+% |\extrasbulgarian|.
+%
+% The first action we define is to switch on the selected Cyrillic
+% encoding whenever we enter `bulgarian'.
+%
+% \begin{macrocode}
+\addto\extrasbulgarian{\cyrillictext}
+% \end{macrocode}
+%
+% When the encoding definition file was processed by \LaTeX\ the current
+% font encoding is stored in |\latinencoding|. We switch back to
+% |\latinencoding| whenever the Bulgarian language is no longer
+% `active'.
+%
+% \begin{macrocode}
+\addto\noextrasbulgarian{\latintext}
+% \end{macrocode}
+%
+% For Bulgarian, the \texttt{"} character is made active.
+% The user part of the documentation gives an overview of the
+% available shorthands, see Table~\ref{tab:bulgarian-quote}.
+%
+% \begin{macrocode}
+\initiate@active@char{"}
+% \end{macrocode}
+%
+% We specify that the Bulgarian group of shorthands should be used.
+%
+% \begin{macrocode}
+\addto\extrasbulgarian{\languageshorthands{bulgarian}}
+% \end{macrocode}
+%
+% These characters are `turned on' once, later their definition may
+% vary.
+%
+% \begin{macrocode}
+\addto\extrasbulgarian{%
+ \bbl@activate{"}}
+\addto\noextrasbulgarian{%
+ \bbl@deactivate{"}}
+% \end{macrocode}
+%
+% To be able to define the function of `|"|', we first define a
+% couple of `support' macros.
+%
+% \begin{macro}{\dq}
+%
+% We save the original double quote character in |\dq| to keep it
+% available, the math accent |\"|can now be typed as `|"|'.
+% \changes{bulgarian-1.0c}{2003/04/10}{repaired typo}
+% \begin{macrocode}
+\begingroup \catcode`\"12
+\def\reserved@a{\endgroup
+ \def\@SS{\mathchar"7019}
+ \def\dq{"}}
+\reserved@a
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Now we can define the doublequote macros: german and french
+% quotes. We use definitions of these quotes made in babel.sty.
+% The french quotes are contained in the \texttt{T2*} encodings.
+%
+% \begin{macrocode}
+\declare@shorthand{bulgarian}{"`}{\glqq}
+\declare@shorthand{bulgarian}{"'}{\grqq}
+\declare@shorthand{bulgarian}{"<}{\flqq}
+\declare@shorthand{bulgarian}{">}{\frqq}
+% \end{macrocode}
+%
+% Some additional commands:
+%
+% \begin{macrocode}
+\declare@shorthand{bulgarian}{""}{\hskip\z@skip}
+\declare@shorthand{bulgarian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
+\declare@shorthand{bulgarian}{"=}{\nobreak-\hskip\z@skip}
+\declare@shorthand{bulgarian}{"|}{% |
+\textormath{\nobreak\discretionary{-}{}{\kern.03em}%
+\allowhyphens}{}}
+% \end{macrocode}
+%
+% The next two macros for |"-| and |"---| are somewhat different.
+% We must check whether the second token is a hyphen character:
+%
+% \begin{macrocode}
+\declare@shorthand{bulgarian}{"-}{%
+% \end{macrocode}
+%
+% If the next token is `|-|', we typeset an emdash, otherwise a
+% hyphen sign:
+%
+% \begin{macrocode}
+ \def\bulgarian@sh@tmp{%
+ \if\bulgarian@sh@next-\expandafter\bulgarian@sh@emdash
+ \else\expandafter\bulgarian@sh@hyphen\fi
+ }%
+% \end{macrocode}
+%
+% \TeX\ looks for the next token after the first `|-|': the meaning
+% of this token is written to |\bulgarian@sh@next| and
+% |\bulgarian@sh@tmp| is called.
+%
+% \begin{macrocode}
+ \futurelet\bulgarian@sh@next\bulgarian@sh@tmp}
+% \end{macrocode}
+%
+% Here are the definitions of hyphen and emdash. First the hyphen:
+%
+% \begin{macrocode}
+\def\bulgarian@sh@hyphen{\nobreak\-\bbl@allowhyphens}
+% \end{macrocode}
+%
+% For the emdash definition, there are the two parameters: we must
+% `eat' two last hyphen signs of our emdash \dots :
+%
+% \begin{macrocode}
+\def\bulgarian@sh@emdash#1#2{\cdash-#1#2}
+% \end{macrocode}
+%
+% \begin{macro}{\cdash}
+%
+% \dots\ these two parameters are useful for another macro:
+% |\cdash|:
+%
+% \changes{bulgarian-1.0e}{2006/03/31}{Two occurences of \cmd{temp}
+% were changed into tab followed by emp}
+% \begin{macrocode}
+\ifx\cdash\undefined % should be defined earlier
+\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}
+%
+% second parameter (or third for |\cdash|) shows what kind of emdash
+% to create in next step
+% \begin{center}
+% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}}
+% |"---| & ordinary (plain) Cyrillic emdash inside text:
+% an unbreakable thinspace will be inserted before only in case of
+% a \textit{space} before the dash (it is necessary for dashes after
+% display maths formulae: there could be lists, enumerations etc.\
+% started with ``---where $a$ is ...'' i.e., the dash starts a line).
+% (Firstly there were planned rather soft rules for user:he may put
+% a space before the dash or not. But it is difficult to place this
+% thinspace automatically, i.e., by checking modes because after
+% display formulae \TeX{} uses horizontal mode. Maybe there is a
+% misunderstanding? Maybe there is another way?) After a dash
+% a breakable thinspace is always placed; \\
+% \end{tabular}
+% \end{center}
+%
+%
+% \begin{macrocode}
+\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
+\cyrdash\hskip.2em\ignorespaces}%
+% \end{macrocode}
+%
+% \begin{center}
+% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}}
+% |"--~| & emdash in compound names or surnames
+% (like Mendeleev--Klapeiron); this dash has no space characters
+% around; after the dash some space is added by |\exhyphenpenalty|.
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
+ \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
+% \end{macrocode}
+%
+% \begin{center}
+% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}}
+% |"--*| & for denoting direct speech (a space like |\enskip|
+% must follow the emdash); \\
+% \end{tabular}
+% \end{center}
+%
+% \begin{macrocode}
+\def\@Ccdash{\leavevmode
+ \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
+%\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\cyrdash}
+%
+% Finally the macro for ``body'' of the Cyrillic emdash.
+% The |\cyrdash| macro will be defined in case this macro hasn't
+% been defined in a fontenc file. For T2*fonts, cyrdash will be
+% placed in the code of the English emdash thus it uses ligature
+% |---|.
+%
+% \begin{macrocode}
+% Is there an IF necessary?
+\ifx\cyrdash\undefined
+\def\cyrdash{\hbox to.8em{--\hss--}}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Here a really new macro---to place thinspace between initials.
+% This macro used instead of |\,| allows hyphenation in the
+% following surname.
+%
+% \begin{macrocode}
+\declare@shorthand{bulgarian}{",}{\nobreak\hskip.2em\ignorespaces}
+% \end{macrocode}
+%
+% The Bulgarian hyphenation patterns can be used with
+% |\lefthyphenmin|\footnote{Actually, it seems that the "`official"'
+% definition allows even one character for |lefthyphen| but I have
+% not investigated this completely.} and |\righthyphenmin| set to~2.
+% \changes{bulgarian-1.0b}{2000/09/22}{Now use \cs{providehyphenmins} to
+% provide a default value}
+% \begin{macrocode}
+\providehyphenmins{\CurrentOption}{\tw@\tw@}
+\fi
+% \end{macrocode}
+%
+% Bulgarian typesetting requires |frenchspacing|. So, we add commands
+% to |\extrasbulgarian| and |\noextrasbulgarian| to turn it on and
+% off, respectively.
+%
+% \begin{macrocode}
+\addto\extrasbulgarian{\bbl@frenchspacing}
+\addto\noextrasbulgarian{\bbl@nonfrenchspacing}
+% \end{macrocode}
+%
+% \changes{bulgarian-1.2d}{2013/10/02}{Removed the code that made two
+% single quotes automatically produce Bulgarian quotes in Bulgarian
+% text. That code had been commented out for many years, possibly to
+% avoid introducing to additional active characters.}
+%
+%
+% \end{macro}
+%
+% \subsection{Enumerations for Bulgarian}
+%
+% \changes{bulgarian-1.1d}{2013/06/13}{Major rewrite of code and
+% documentation for Bulgarian enumerations.}
+%
+% \begin{macro}{\@Alph@bul}
+%
+% \changes{bulgarian-1.1d}{2013/06/13}{New: support for Unicode based
+% engines.}
+%
+% We begin by defining |\@Alph@bul| which works like |\@Alph|, but
+% produces (uppercase) Cyrillic letters intead of Latin ones. The
+% letters й, ъ and ы (ISHRT, HRDSN and SFTSN) are skipped, as usual
+% for this kind of enumeration. Note that these macros do not switch
+% encodings (and never did)\footnote{Earlier in this file, there are
+% definitions of {|@Alph@eng|} and |@alph@eng| in the code for
+% handling the obsolete cyrillic encoding |X2|. They contain encoding
+% commands. This is necessary for |X2| since it does not contain Latin
+% letters. These precautions hardly had any effect before the changes
+% for versions 1.1, since the old code below was effectively
+% overwriting them. The changes to |\@Alph| and |\@alph| are now
+% honoured as a side effect of the changes.}.
+%
+% \begin{macrocode}
+\if@bul@unicode
+ \def\@Alph@bul#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\@Alph@bul#1{\ifcase#1\or
+ \CYRA\or \CYRB\or \CYRV\or \CYRG\or \CYRD\or \CYRE\or \CYRZH\or
+ \CYRZ\or \CYRI\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 \CYRSHCH\or \CYRYU\or \CYRYA\else
+ \@ctrerr\fi}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@alph@bul}
+%
+% \changes{bulgarian-1.1d}{2013/06/13}{New: support for Unicode based
+% engines.}
+%
+% The macro |\@alph@bul| is similar to |\@Alph@bul|
+% but produces lowercase Bulgarian letters.
+%
+% \begin{macrocode}
+\if@bul@unicode
+ \def\@alph@bul#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 ю\or я\else\@ctrerr\fi}
+\else
+ \def\@alph@bul#1{\ifcase#1\or
+ \cyra\or \cyrb\or \cyrv\or \cyrg\or \cyrd\or \cyre\or \cyrzh\or
+ \cyrz\or \cyri\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 \cyrshch\or \cyryu\or \cyrya\else
+ \@ctrerr\fi}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@Alph@eng}
+% \changes{bulgarian-1.1d}{2013/06/13}{Do not define this from
+% scratch}
+%
+% \begin{macro}{\@alph@eng}
+% \changes{bulgarian-1.1d}{2013/06/13}{Do not define this from
+% scratch}
+%
+% We no longer define English |\@Alph@eng| and |\@alph@eng| from
+% scratch. We copy the definitions active at the time this file is
+% loaded.
+% \begin{macrocode}
+\let\@Alph@eng\@Alph
+\let\@alph@eng\@alph
+% \end{macrocode}
+% For version 1.1d we store the original definitions in the following
+% macros. TODO: there is redundancy but need to check before removing
+% stuff.
+% \begin{macrocode}
+\let\@Alph@saved\@Alph
+\let\@alph@saved\@alph
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%%%
+%%% The old code for defining |\@Alph@eng| and |\@alph@eng| is commented out.
+%%% \begin{macrocode}
+%%\def\@Alph@eng#1{%
+%% \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@eng#1{%
+%% \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 define commands for manually switching to and from English based
+% enumeration. Note that this definition for |\enumBul| is really
+% suitable for switching back after using |\enumEng|, since
+% |\enumBul| does not specify encoding and therefore would give an
+% error if called when the active encoding does not know cyrillic
+% (but see the similar code for X2 which does take care of the encoding).
+% \begin{macrocode}
+\def\enumBul{\let\@Alph\@Alph@bul \let\@alph\@alph@bul}
+\def\enumEng{\let\@Alph\@Alph@eng \let\@alph\@alph@eng}
+\def\enumLat{\let\@Alph\@Alph@eng \let\@alph\@alph@eng}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\abvon}
+% \changes{bulgarian-1.1d}{2013/06/15}{New macro.}
+% \begin{macro}{\abvoff}
+% \changes{bulgarian-1.1d}{2013/06/15}{New macro.}
+% Commands are provided for manual switching on and off of the
+% enumeration with Cyrillic letters: |\abvon| turns it on, while
+% |\abvoff| turns it off.
+% \begin{macrocode}
+\def\abvon{\let\@Alph@saved\@Alph \let\@alph@saved\@alph \enumBul}
+\def\abvoff{\let\@Alph\@Alph@saved \let\@alph\@alph@saved}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% By default the Bulgarian enumeration scheme is turned on when
+% switching to Bulgarian.
+% todo: Could avoid adding to |noextrasbulgarian| by using |babel@save| in
+% the first command. TODO: there should be a better way to do this
+% but I do not know of a portable way to check if the user has
+% supplied the attribute `abvoff'. (Attributes are processed by babel
+% after it is loaded.)
+%
+% \changes{bulgarian-1.1d}{2013/06/13}{Introduced attributes {abvon} and {abvoff}}
+% \begin{macrocode}
+\def\autoabvon{\abvon}
+\def\autoabvoff{\abvoff}
+\addto\extrasbulgarian{\autoabvon}
+\addto\noextrasbulgarian{\autoabvoff}
+% \end{macrocode}
+%
+%
+% The user can stop babel from turning on the Cyrillic enumeration
+% style by using attribute `abvoff' when loading babel.
+% \begin{macrocode}
+\bbl@declare@ttribute{bulgarian}{abvoff}{%
+ \PackageInfo{babel}{Turned off automatic Cyrillic enumeration in
+ Bulgarian}%
+ \def\autoabvon{\relax}
+ \def\autoabvoff{\relax}
+ \def\abvon{\enumBul}
+}
+% \end{macrocode}
+%
+%
+%
+%\subsection{Cyrillic letters in maths}
+%
+%
+% Set up default Cyrillic math alphabets. To use Cyrillic letters
+% in math mode user should load the |textmath| package
+% \emph{before} loading fontenc package (or \babel). Note that by
+% default Cyrillic letters are taken from upright font in math mode
+% (unlike Latin letters).
+%
+% \begin{macrocode}
+%\RequirePackage{textmath}
+\@ifundefined{sym\cyrillicencoding letters}{}{%
+\SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding
+ \rmdefault\bfdefault\updefault
+\DeclareSymbolFontAlphabet\cyrmathrm{\cyrillicencoding letters}
+% \end{macrocode}
+%
+% \begin{macro}{\cyrmathbf}
+% \begin{macro}{\cyrmathsf}
+% \begin{macro}{\cyrmathit}
+% \begin{macro}{\cyrmathtt}
+% And we need a few commands to be able 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
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% We define also some bold variants.
+% \begin{macrocode}
+\SetMathAlphabet\cyrmathsf{bold}\cyrillicencoding
+ \sfdefault\bfdefault\updefault
+\SetMathAlphabet\cyrmathit{bold}\cyrillicencoding
+ \rmdefault\bfdefault\itdefault
+}
+% \end{macrocode}
+%
+%\subsection{Alternative names for math functions}
+%
+% \changes{bulgarian-1.1c}{2013/06/13}{Rewrote the text and rearranged
+% the code for the math operators}
+%
+% Here we define some math operator names in accordance with Bulgarian
+% typesetting traditions.
+% \begin{macro}{\tg}
+% \begin{macro}{\ctg}
+% \begin{macro}{\cosec}
+% \begin{macro}{\arctg}
+% \begin{macro}{\arcctg}
+% \begin{macro}{\sh}
+% \begin{macro}{\ch}
+% \begin{macro}{\cth}
+% Some math functions in Bulgarian have other names, e.g.
+% \texttt{sinh} is written as \texttt{sh}, etc. We define here
+% alternative math operators for |\tan|, |\cot|, |\csc|, |\arctan|,
+% |\arccot|, |\sinh|, |\cosh|, |\coth|, and |\tanh|.
+% \begin{macrocode}
+\def\tg{\mathop{\operator@font tg}\nolimits}
+\def\ctg{\mathop{\operator@font ctg}\nolimits}
+\def\cosec{\mathop{\operator@font cosec}\nolimits}
+\def\arctg{\mathop{\operator@font arctg}\nolimits}
+\def\arcctg{\mathop{\operator@font arcctg}\nolimits}
+\def\sh{\mathop{\operator@font sh}\nolimits}
+\def\ch{\mathop{\operator@font ch}\nolimits}
+\def\cth{\mathop{\operator@font cth}\nolimits}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\th}
+% The macro |\th| conflicts with |\th| defined in Latin~1 encoding. We
+% define it as the hyperbolic tangent in math mode but keep the
+% existing definition for text.
+% \changes{bulgarian-1.0d}{2004/05/21}{Change definition of \cs{th}
+% only for this language.}
+% \changes{bulgarian-1.1a}{2013/06/08}{Add the local definition
+% to extrasbulgarian, not extrasrussian.}
+% \begin{macrocode}
+\addto\extrasbulgarian{%
+ \babel@save{\th}%
+ \let\ltx@th\th
+ \def\th{\textormath{\ltx@th}%
+ {\mathop{\operator@font th}\nolimits}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cyrxtounicode}
+% The standard font encoding handling for Cyrillic letters uses
+% definitions like |\CYRA| for the Cyrillic letters. These are not
+% necessary for unicode engines (Luatex, XeTeX) but may still be
+% present in other packages (for example |varioref|) that handle
+% different languages by storing hard coded strings.
+%
+% The following command may be used as emergency patch for such
+% problems. It is not to be used routinely as its use may hide
+% unrelated bugs.
+% \begin{macrocode}
+\def\cyrxtounicode{%
+ \let\CYRA=А \let\CYRB=Б \let\CYRV=В \let\CYRG=Г \let\CYRD=Д
+ \let\CYRE=Е \let\CYRZH=Ж \let\CYRZ=З \let\CYRI=И \let\CYRISHRT=Й
+ \let\CYRK=К \let\CYRL=Л \let\CYRM=М \let\CYRN=Н \let\CYRO=О
+ \let\CYRP=П \let\CYRR=Р \let\CYRS=С \let\CYRT=Т \let\CYRU=У
+ \let\CYRF=Ф \let\CYRH=Х \let\CYRC=Ц \let\CYRCH=Ч \let\CYRSH=Ш
+ \let\CYRSHCH=Щ \let\CYRHRDSN=Ъ \let\CYRSFTSN=Ь \let\CYRYU=Ю
+ \let\CYRYA=Я
+ \let\cyra=а \let\cyrb=б \let\cyrv=в \let\cyrg=г \let\cyrd=д
+ \let\cyre=е \let\cyrzh=ж \let\cyrz=з \let\cyri=и \let\cyrishrt=й
+ \let\cyrk=к \let\cyrl=л \let\cyrm=м \let\cyrn=н \let\cyro=о
+ \let\cyrp=п \let\cyrr=р \let\cyrs=с \let\cyrt=т \let\cyru=у
+ \let\cyrf=ф \let\cyrh=х \let\cyrc=ц \let\cyrch=ч \let\cyrsh=ш
+ \let\cyrshch=щ \let\cyrhrdsn=ъ \let\cyrsftsn=ь \let\cyryu=ю
+ \let\cyrya=я
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+%
+%\subsection{Compatibility with older versions}
+%
+%
+% This is for compatibility with older Bulgarian packages and support
+% for \babel.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\No}{%
+ \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi}
+% \end{macrocode}
+%
+%\subsection{Finish}
+%
+%
+% The macro |\ldf@finish| takes care of looking for a configuration
+% file, setting the main language to be switched on at
+% |\begin{document}| and resetting the category code of \texttt{@}
+% to its original value.
+%
+% \begin{macrocode}
+\ldf@finish{bulgarian}
+%</code>
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\endinput
+
+
+
+
+% А\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
+% Ь\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
+% ш\or
+% щ\or
+% ъ\or
+% ь\or
+% ю\or
+% я\or
+
+\let\CYRA=А
+\let\CYRB=Б
+\let\CYRV=В
+\let\CYRG=Г
+\let\CYRD=Д
+\let\CYRE=Е
+\let\CYRZH=Ж
+\let\CYRZ=З
+\let\CYRI=И
+\let\CYRISHRT=Й
+\let\CYRK=К
+\let\CYRL=Л
+\let\CYRM=М
+\let\CYRN=Н
+\let\CYRO=О
+\let\CYRP=П
+\let\CYRR=Р
+\let\CYRS=С
+\let\CYRT=Т
+\let\CYRU=У
+\let\CYRF=Ф
+\let\CYRH=Х
+\let\CYRC=Ц
+\let\CYRCH=Ч
+\let\CYRSH=Ш
+\let\CYRSHCH=Щ
+\let\CYRHRDSN=Ъ
+\let\CYRSFTSN=Ь
+\let\CYRYU=Ю
+\let\CYRYA=Я
+
+\let\cyra=а
+\let\cyrb=б
+\let\cyrv=в
+\let\cyrg=г
+\let\cyrd=д
+\let\cyre=е
+\let\cyrzh=ж
+\let\cyrz=з
+\let\cyri=и
+\let\cyrishrt=й
+\let\cyrk=к
+\let\cyrl=л
+\let\cyrm=м
+\let\cyrn=н
+\let\cyro=о
+\let\cyrp=п
+\let\cyrr=р
+\let\cyrs=с
+\let\cyrt=т
+\let\cyru=у
+\let\cyrf=ф
+\let\cyrh=х
+\let\cyrc=ц
+\let\cyrch=ч
+\let\cyrsh=ш
+\let\cyrshch=щ
+\let\cyrhrdsn=ъ
+\let\cyrsftsn=ь
+\let\cyryu=ю
+\let\cyrya=я