summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx')
-rw-r--r--Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx2215
1 files changed, 1634 insertions, 581 deletions
diff --git a/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx b/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx
index 313018acd81..ea52aa26f95 100644
--- a/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx
+++ b/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx
@@ -1,11 +1,12 @@
% \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.
@@ -13,29 +14,22 @@
% 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 Johannes Braams.
-%
-% The list of all files belonging to the Babel system is
-% given in the file `manifest.bbl. See also `legal.bbl' for additional
-% information.
-%
-% The list of derived (unpacked) files belonging to the distribution
-% and covered by LPPL is defined by the unpacking scripts (with
-% extension .ins) which are part of the distribution.
+%
+% The Current Maintainer of this work is Georgi N. Boshnakov
+%
% \fi
-% \CheckSum{1268}
-%
-% \iffalse
+% \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}
- [2008/03/21 v1.0g Bulgarian support from the babel system]
+ [2013/10/14 v1.2g Bulgarian support from the babel system]
%
%% File `bulgarian.dtx'
%% Babel package for LaTeX version 2e
@@ -43,18 +37,34 @@
%% by Johannes Braams,TeXniek
%
%% Bulgarian Language Definition File
-%% Copyright (C) 1995-2008
-%% by Georgi.Boshnakov <georgi.boshnakov at umist.ac.uk>
-%% Johannes Braams,TeXniek
+%% 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>
%
-%% Adapted from russianb.dtx
-%% by Georgi.Boshnakov <georgi.boshnakov at umist.ac.uk>
+%% Copyright (C) 2013
+%% by Georgi N. Boshnakov
%
-%% Please report errors to:J.L.Braams
-%% babel at braams.xs4all.nl
+%% 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$}
@@ -62,253 +72,832 @@
\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}
- \DocInput{bulgarian.dtx}
+\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
-% \GetFileInfo{bulgarian.dtx}
-%
-% \changes{bulgarian-0.99}{2000/06/10}{%
-% This is a prerelease version of this file.
-% Features needing further testing are removed.}
-%
-% \section{The Bulgarian language}
-%
-% The file \file{\filename}\footnote{The file described in this
-% section has version number \fileversion\ and was last revised on
-% \filedate. This file was initially derived from the August-1998
-% version of \file{russianb.dtx}.
-%
-% It is (reasonably) backward compatible with the 1994/1996
-% (non-babel) bulgarian style (bulgaria.sty) by Georgi
-% Boshnakov---files prepared for that style should compile
-% successfully (with vastly improved appearance due to usage of
-% standard fonts).} provides the language-specific macros for the
-% Bulgarian language.
-%
-% 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 \cs{"'} and \cs{"'} which
-% explicitly typeset them.
-% Note: automatic switch to Bulgarian quotation is withdrawn
-% for the moment and may not be reintroduced at all.
-%
-% For this language the character |"| is made active. In
-% table~\ref{tab:bulgarian-quote} an overview is given of its
-% purpose.
-%
-% \begin{table}[htb]
-% \begin{center}
-% \begin{tabular}{lp{8cm}}
-% \verb="|= & disable ligature at this position. \\
-% |"-| & an explicit hyphen sign, allowing hyphenation
-% in the rest of the word. \\
-% |"---| & Cyrillic emdash in plain text. \\
-% |"--~| & Cyrillic emdash in compound names (surnames). \\
-% |"--*| & Cyrillic emdash for denoting direct speech. \\
-% |""| & 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. \\
-% |"`| & for German left double quotes
-% (looks like ,\kern-0.08em,). \\
-% |"'| & for German right double quotes (looks like ``). \\%^^A''
-% |"<| & for French left double quotes (looks like $<\!\!<$).\\
-% |">| & for French right double quotes (looks like $>\!\!>$).\\
-% \end{tabular}
-% \caption{The extra definitions made
-% by\file{bulgarian}}\label{tab:bulgarian-quote}
-% \end{center}
-% \end{table}
-%
-% The quotes in table~\ref{tab:bulgarian-quote} can also be typeset
-% by using the commands in table~\ref{tab:bmore-quote}.
-%
-% \begin{table}[htb]
-% \begin{center}
-% \begin{tabular}{lp{8cm}}
-% |\cdash---| & Cyrillic emdash in plain text. \\
-% |\cdash--~| & Cyrillic emdash in compound names (surnames). \\
-% |\cdash--*| & Cyrillic emdash for denoting direct speech. \\
-% |\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{More commands which produce quotes, defined
-% by \babel}\label{tab:bmore-quote}
-% \end{center}
-% \end{table}
-%
-% 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}).
-%
-% The quotation marks traditionally used in Bulgarian were borrowed
-% from German o they keep their original names. French quotation
-% marks may be seen as well in older books.
-%
+%
% \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.
-%
+% \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.
-%
+% something here.
+%
% \begin{macrocode}
\ifx\l@bulgarian\@undefined
\@nopatterns{Bulgarian}
\adddialect\l@bulgarian0
\fi
% \end{macrocode}
-%
-%
-%
-% \begin{macro}{\latinencoding}
%
-% We need to know the encoding for text that is supposed to be
-% which is active at the end of the \babel\ package. If the
-% \pkg{fontenc} package is loaded later, then \ldots too bad!
-%
+% 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}
-\let\latinencoding\cf@encoding
+\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}
%
-% The user may choose between different available Cyrillic
-% encodings---e.g., \texttt{X2}, \texttt{LCY}, or \texttt{LWN}.
-% If the user wants to use a font encoding other than the default
-% (\texttt{T2A}), he has to load the corresponding file
-% \emph{before} \file{bulgarian.sty}.
-% This may be done in the following way:
-%
-% \begin{verbatim}
-% \usepackage[LCY,OT1]{fontenc} %overwrite the default encoding;
-% \usepackage[english,bulgarian]{babel}
-% \end{verbatim}
-% \unskip
-%
-% Note: most people would prefer the \texttt{T2A} to \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 Bulgarian phrase or vice
-% versa. On the other hand, switching the language is a good
-% practice anyway. With a decent text processing program it does
-% not involve more work than switching between the Bulgarian and
-% English keyboard. Moreover that the far most common disruption
-% occurs as a result of forgetting to switch back to cyrillic
-% keyboard.
-%
-% 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}, \texttt{T2C}, \texttt{T2B},
-% \texttt{T2A}, if any.
-%
-%
+% \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}
+ \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
+ \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}
-%
-% Now, if |\cyrillicencoding| is undefined, then the user did not
-% load any of supported encodings. So, we have to set
-% |\cyrillicencoding| to some default value. We test the presence
-% of the encoding definition files in the order from less
-% preferable to more preferable encodings. We use the lowercase
-% names (i.e., \file{lcyenc.def} instead of \file{LCYenc.def}).
-%
-% \begin{macrocode}
-\ifx\cyrillicencoding\undefined
- \IfFileExists{ot2enc.def}{\def\cyrillicencoding{OT2}}\relax
- \IfFileExists{lwnenc.def}{\def\cyrillicencoding{LWN}}\relax
- \IfFileExists{lcyenc.def}{\def\cyrillicencoding{LCY}}\relax
- \IfFileExists{x2enc.def}{\def\cyrillicencoding{X2}}\relax
- \IfFileExists{t2cenc.def}{\def\cyrillicencoding{T2C}}\relax
- \IfFileExists{t2benc.def}{\def\cyrillicencoding{T2B}}\relax
- \IfFileExists{t2aenc.def}{\def\cyrillicencoding{T2A}}\relax
-% \end{macrocode}
-%
-% If |\cyrillicencoding| is still undefined, then the user seems
-% not to have a properly installed distribution. A fatal error.
-%
+%
+% \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
- \PackageError{babel}%
- {No Cyrillic encoding definition files were found}%
- {Your installation is incomplete. \MessageBreak
- You need at least one of the following files: \MessageBreak
- \space\space
- x2enc.def, t2aenc.def, t2benc.def, t2cenc.def, \MessageBreak
- \space\space
- lcyenc.def, lwnenc.def, ot2enc.def.}%
+ \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|.
-%
+%
+% 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
+ \lowercase\expandafter{\expandafter\input\cyrillicencoding enc.def\relax}%
\fi
% \end{macrocode}
-%
-% \begin{verbatim}
-% \PackageInfo{babel}
-% {Using `\cyrillicencoding' as a default Cyrillic encoding}%
-% \end{verbatim}
-% \unskip
-%
-%
-%
+%
+% \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
@@ -317,41 +906,52 @@
\def\selectenglanguage{\selectlanguage{english}}
\def\selectbglanguage{\selectlanguage{bulgarian}}
% \end{macrocode}
-%
-% Since the \texttt{X2} encoding does not contain Latin letters,we
-% should make some redefinitions of \LaTeX\ macros which implicitly
-% produce Latin letters.
-%
-%
+% \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}}%
+\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}).
-%
+% `A' and `a' (like \texttt{X2}).
+%
% \begin{macrocode}
\DeclareTextSymbolDefault{\AA}{OT1}
\DeclareTextSymbolDefault{\aa}{OT1}
@@ -359,112 +959,121 @@
\DeclareTextCommand{\aa}{OT1}{\r a}
\fi
% \end{macrocode}
-%
-% The following block redefines the character class of uppercase
-% Greek letters and some accents, if it is equal to 7 (variable
-% family), to avoid incorrect results if the font encoding in some
-% math family does not contain these characters in places of OT1
-% encoding. The code was taken from |amsmath.dtx|. See comments and
-% further explanation there.
-%
-% \begin{macrocode}
-\begingroup\catcode`\"=12
-% uppercase greek letters:
-\def\@tempa#1{\expandafter\@tempb\meaning#1\relax\relax\relax\relax
- "0000\@nil#1}
-\def\@tempb#1"#2#3#4#5#6\@nil#7{%
-\ifnum"#2=7 \count@"1#3#4#5\relax
-\ifnum\count@<"1000 \else \global\mathchardef#7="0#3#4#5\relax \fi
- \fi}
-\@tempa\Gamma\@tempa\Delta\@tempa\Theta\@tempa\Lambda\@tempa\Xi
-\@tempa\Pi\@tempa\Sigma\@tempa\Upsilon\@tempa\Phi\@tempa\Psi
-\@tempa\Omega
-% some accents:
-\def\@tempa#1#2\@nil{\def\@tempc{#1}}\def\@tempb{\mathaccent}
-\expandafter\@tempa\hat\relax\relax\@nil
-\ifx\@tempb\@tempc
-\def\@tempa#1\@nil{#1}%
-\def\@tempb#1{\afterassignment\@tempa\mathchardef\@tempc=}%
-\def\do#1"#2{}
-\def\@tempd#1{\expandafter\@tempb#1\@nil
- \ifnum\@tempc>"FFF
- \xdef#1{\mathaccent"\expandafter\do\meaning\@tempc\space}%
- \fi}
-\@tempd\hat\@tempd\check\@tempd\tilde\@tempd\acute\@tempd\grave
-\@tempd\dot\@tempd\ddot\@tempd\breve\@tempd\bar
-\fi
-\endgroup
-% \end{macrocode}
-%
-% The 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 user should explicitly call the \pkg{inputenc} package by
-% |\usepackage{inputenc}|. We also removed |\AtBeginDocument|, so
-% \pkg{inputenc} should be used before \babel.
-%
+%
+%
+% \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}{}{%
-\def\reserved@a{LWN}%
-\ifx\reserved@a\cyrillicencoding\else
-\def\reserved@a{OT2}%
-\ifx\reserved@a\cyrillicencoding\else
-\PackageWarning{babel}%
-{No input encoding specified for Bulgarian language}\fi\fi}
+\@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}
-%
-% Now we define two commands that offer the possibility to switch
-% between Cyrillic and Roman encodings.
-%
+%
+%
% \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.
%
-% The command |\cyrillictext| will switch from Latin font encoding
-% to the Cyrillic font encoding, the command |\latintext| switches
-% back. 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.
-%
-% We comment out |\latintext| since it is defined in the core of
-% babel (babel.def). We add the shorthand |\lat| for |\latintext|.
-% Note that |\cyrillictext| has been defined above.
-%
% \begin{macrocode}
-% \DeclareRobustCommand{\latintext}{%
-% \fontencoding{\latinencoding}\selectfont
-% \def\encodingdefault{\latinencoding}}
\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 commented out since it is defined in the core of
-% babel. (It is defined there with |\DeclareRobustCommand| instead.)
-%
+% 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}
-% \DeclareTextFontCommand{\textlatin}{\latintext}
% \end{macrocode}
-%
+%
% \end{macro}
% \end{macro}
%
-% The next step consists of defining commands to switch to (and
-% from) the Bulgarian language.
-%
+%
+%
+%\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.
-%
+% 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{%
@@ -482,13 +1091,17 @@
\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}}%
+ {\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}}%
+ {\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}}%
+ {\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}}%
+ {\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{%
@@ -507,129 +1120,303 @@
{\cyr\cyrv\cyrzh.}}%
\def\alsoname{%
{\cyr\cyrv\cyrzh.\ \cyrs\cyrhrdsn\cyrshch\cyro\ \cyri}}%
- \def\proofname{Proof}% <-- Needs translation
- \def\glossaryname{Glossary}% <-- Needs translation
-}
-% \end{macrocode}
+ \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.
-%
+% 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
+ \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\month@Roman{\expandafter\@Roman\month}%
- \def\today{\number\day~\month@bulgarian\ \number\year~\cyrg.}%
- \def\todayRoman{\number\day.\,\month@Roman.\,\number\year~\cyrg.}%
-}
+ \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}
%
-%
-%
-% \begin{macro}{\todayRoman}
+% \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}
%
-% The month is often written with roman numbers in Bulgarian dates.
-% Here we define date in this format:
-%
% \begin{macrocode}
-\def\Romannumeral#1{\uppercase\expandafter{\romannumeral #1}}
-\def\todayRoman{\number\day.\Romannumeral{\month}.\number\year~\cyrg.}
+\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}
-%
-% \end{macro}
+% 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|.
-%
+% |\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|, assuming
-% that \LaTeX\ uses \texttt{T1} or \texttt{OT1} as
-% default. Therefore we switch back to |\latinencoding| whenever
-% the Bulgarian language is no longer `active'.
-%
+%
+% 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 also is made active.
-%
+%
+% 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}
-%
-% The code above is necessary because we need extra active
-% characters. The character |"| is used as indicated in
-% table~\ref{tab:bulgarian-quote}. We specify that the Bulgarian
-% group of shorthands should be used.
-%
+%
+% 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}
-%
-% The \texttt{X2} and \texttt{T2*} encodings do not contain
-% |spanish_shriek| and |spanish_query| symbols; as a consequence,
-% the ligatures `|?`|' and `|!`|' do not work with them (these
-% characters are useless for Cyrillic texts anyway). But we define
-% the shorthands to emulate these ligatures (optionally).
-%
-% We do not use |\latinencoding| here (but instead explicitly use
-% \texttt{OT1}) because the user may choose \texttt{T2A} to be the
-% primary encoding, but it does not contain these characters.
-%
-% \begin{macrocode}
-%<*spanishligs>
-\declare@shorthand{bulgarian}{?`}{\UseTextSymbol{OT1}\textquestiondown}
-\declare@shorthand{bulgarian}{!`}{\UseTextSymbol{OT1}\textexclamdown}
-%</spanishligs>
-% \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
+% 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}
@@ -639,76 +1426,76 @@
\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}{"|}{%
+\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}
+% were changed into tab followed by emp}
% \begin{macrocode}
\ifx\cdash\undefined % should be defined earlier
\def\cdash#1#2#3{\def\tempx@{#3}%
@@ -718,7 +1505,7 @@
\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}
@@ -726,188 +1513,286 @@
% |"---| & 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.\
+% 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
+% 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}
-% What is more grammatically: .2em or .2\fontdimen6\font?
\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
-% |\exhyphenalty| \\
+% 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| and |\righthyphenmin| set to~2.
+% |\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}
-%
-% Now the action |\extrasbulgarian| has to execute is to make sure
-% that the command |\frenchspacing| is in effect. If this is not
-% the case the execution of |\noextrasbulgarian| will switch it off
-% again.
-%
+%
+% 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}
-%
-% Make the double quotes produce the traditional quotes
-% used in Bulgarian texts (these are the German quotes).
-%
+%
+% \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}
-% \initiate@active@char{`}
-% \initiate@active@char{'}
-% \addto\extrasbulgarian{%
-% \bbl@activate{`}}
-% \addto\extrasbulgarian{%
-% \bbl@activate{'}}
-% \addto\noextrasbulgarian{%
-% \bbl@deactivate{`}}
-% \addto\noextrasbulgarian{%
-% \bbl@deactivate{'}}
-% \def\mlron{\bbl@activate{`}\bbl@activate{'}}
-% \def\mlroff{\bbl@deactivate{`}\bbl@deactivate{'}}
-% \declare@shorthand{bulgarian}{``}{\glqq}
-% \declare@shorthand{bulgarian}{''}{\grqq}
+\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}
%
-% Next we add a new enumeration style for Bulgarian manuscripts with
-% Cyrillic letters,and later on we define some math operator names in
-% accordance with Bulgarian typesetting traditions.
-%
-% \begin{macro}{\@Alph@bul}
%
-% We begin by defining |\@Alph@bul| which works like |\@Alph|, but
-% produces (uppercase) Cyrillic letters intead of Latin ones. The
-% letters ISHRT, HRDSN and SFTSN are skipped, as usual for such
-% enumeration.
-%
+% \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}
-\addto\extrasbulgarian{\enumBul}
-\addto\noextrasbulgarian{\enumLat}
-\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
- }
-\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}
-%
-% \end{macro}
%
-%
-%
-% \begin{macro}{\@alph@bul}
%
-% The macro |\@alph@bul| is similar to |\@Alph@bul|;
-% it produces lowercase Bulgarian letters.
-%
+% \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\@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
- }
-\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\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
+% \emph{before} loading fontenc package (or \babel). Note that by
% default Cyrillic letters are taken from upright font in math mode
-% (unlike Latin letters).
-%
+% (unlike Latin letters).
+%
% \begin{macrocode}
%\RequirePackage{textmath}
\@ifundefined{sym\cyrillicencoding letters}{}{%
@@ -915,10 +1800,14 @@
\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
@@ -928,98 +1817,135 @@
\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}
-%
-% Some math functions in Bulgarian math books have other names:
-% e.g., \texttt{sinh} in Bulgarian is written as \texttt{sh}
-% etc. So we define a number of new math operators.
-%
-% |\sinh|:
-%
-% \begin{macrocode}
-\def\sh{\mathop{\operator@font sh}\nolimits}
-% \end{macrocode}
-%
-% |\cosh|:
-%
-% \begin{macrocode}
-\def\ch{\mathop{\operator@font ch}\nolimits}
-% \end{macrocode}
-%
-% |\tan|:
-%
+%
+%\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}
-% \end{macrocode}
-%
-% |\arctan|:
-%
-% \begin{macrocode}
+\def\ctg{\mathop{\operator@font ctg}\nolimits}
+\def\cosec{\mathop{\operator@font cosec}\nolimits}
\def\arctg{\mathop{\operator@font arctg}\nolimits}
-% \end{macrocode}
-%
-% |\arccot|:
-%
-% \begin{macrocode}
\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}
-%
-% The following macro conflicts with |\th| defined in Latin~1
-% encoding:
-% |\tanh|:
+% \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}
+% only for this language.}
+% \changes{bulgarian-1.1a}{2013/06/08}{Add the local definition
+% to extrasbulgarian, not extrasrussian.}
% \begin{macrocode}
-\addto\extrasrussian{%
+\addto\extrasbulgarian{%
\babel@save{\th}%
\let\ltx@th\th
\def\th{\textormath{\ltx@th}%
{\mathop{\operator@font th}\nolimits}}%
}
% \end{macrocode}
-%
-% |\cot|:
-%
-% \begin{macrocode}
-\def\ctg{\mathop{\operator@font ctg}\nolimits}
-% \end{macrocode}
-%
-% |\coth|:
-%
-% \begin{macrocode}
-\def\cth{\mathop{\operator@font cth}\nolimits}
-% \end{macrocode}
-%
-% |\csc|:
-%
+% \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\cosec{\mathop{\operator@font cosec}\nolimits}
+\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}
-%
-% This is for compatibility with older Bulgarian packages.
-%
+% \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.
-%
+% 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
@@ -1035,5 +1961,132 @@
%% 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=я