diff options
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-bulgarian/README | 20 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/babel-bulgarian/bulgarian.pdf | bin | 192815 -> 192288 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.dtx | 2215 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.ins | 36 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/babel-bulgarian/bulgarian.ldf | 441 |
5 files changed, 1970 insertions, 742 deletions
diff --git a/Master/texmf-dist/doc/generic/babel-bulgarian/README b/Master/texmf-dist/doc/generic/babel-bulgarian/README new file mode 100644 index 00000000000..837849bfbc0 --- /dev/null +++ b/Master/texmf-dist/doc/generic/babel-bulgarian/README @@ -0,0 +1,20 @@ +Bulgarian language definition file version 1.2g for Babel. +---------- + +To install, run latex on bulgarian.ins. This creates the file +bulgarian.ldf. Use this newly created file to replace the +existing file with the same name in your TeX installation (for MikTeX on +Windows this may be something like +c:\Program Files\Miktex 2.9\tex\generic\babel\bulgarian.ldf). + +Report bugs to Georgi Boshnakov. + +See bulgarian.pdf for usage details. + +Changes are described in bulgarian.pdf (section Change history). + + +------------ +Georgi Boshnakov (georgi.boshnakov at manchester dot ac dot uk) +2013-10-14 + diff --git a/Master/texmf-dist/doc/generic/babel-bulgarian/bulgarian.pdf b/Master/texmf-dist/doc/generic/babel-bulgarian/bulgarian.pdf Binary files differindex 7098154327e..3e1fafab449 100644 --- a/Master/texmf-dist/doc/generic/babel-bulgarian/bulgarian.pdf +++ b/Master/texmf-dist/doc/generic/babel-bulgarian/bulgarian.pdf 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=я diff --git a/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.ins b/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.ins index 467e11c6ff9..c30d24f28c6 100644 --- a/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.ins +++ b/Master/texmf-dist/source/generic/babel-bulgarian/bulgarian.ins @@ -3,6 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% +%% Copyright 2013 Georgi N. Boshnakov %% Copyright 1989-2008 Johannes L. Braams and any individual authors %% listed elsewhere in this file. All rights reserved. %% @@ -19,7 +20,7 @@ %% %% This work has the LPPL maintenance status "maintained". %% -%% The Current Maintainer of this work is Johannes Braams. +%% The Current Maintainer of this work is Georgi N. Boshnakov. %% %% The list of all files belonging to the LaTeX base distribution is %% given in the file `manifest.bbl. See also `legal.bbl' for additional @@ -31,7 +32,7 @@ %% %% --------------- start of docstrip commands ------------------ %% -\def\filedate{2000/09/21} +\def\filedate{2013/09/26} \def\batchfile{bulgarian.ins} \input docstrip.tex @@ -53,6 +54,7 @@ \declarepreamble\mainpreamble This is a generated file. +Copyright 2013 Georgi N. Boshnakov Copyright 1989-2008 Johannes L. Braams and any individual authors listed elsewhere in this file. All rights reserved. @@ -69,15 +71,7 @@ version 2003/12/01 or later. This work has the LPPL maintenance status "maintained". -The Current Maintainer of this work is Johannes Braams. - -This file may only be distributed together with a copy of the Babel -system. You may however distribute the Babel system without -such generated files. - -The list of all files belonging to the Babel distribution is -given in the file `manifest.bbl'. See also `legal.bbl for additional -information. +The Current Maintainer of this work is Georgi N. Boshnakov. The list of derived (unpacked) files belonging to the distribution and covered by LPPL is defined by the unpacking scripts (with @@ -87,6 +81,7 @@ extension .ins) which are part of the distribution. \declarepreamble\fdpreamble This is a generated file. +Copyright 2013 Georgi N. Boshnakov Copyright 1989-2008 Johannes L. Braams and any individual authors listed elsewhere in this file. All rights reserved. @@ -103,15 +98,7 @@ version 2003/12/01 or later. This work has the LPPL maintenance status "maintained". -The Current Maintainer of this work is Johannes Braams. - -This file may only be distributed together with a copy of the Babel -system. You may however distribute the Babel system without -such generated files. - -The list of all files belonging to the Babel distribution is -given in the file `manifest.bbl'. See also `legal.bbl for additional -information. +The Current Maintainer of this work is Georgi N. Boshnakov. In particular, permission is granted to customize the declarations in this file to serve the needs of your installation. @@ -136,13 +123,16 @@ of this file under its original name. \Msg{* To finish the installation you have to move the following} \Msg{* files into a directory searched by TeX:} \Msg{*} -\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +%\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{* \space\space bulgarian.ldf} \Msg{*} +%\Msg{* To produce the documentation run the files ending with} +%\Msg{* '.dtx' and `.fdd' through LaTeX.} \Msg{* To produce the documentation run the files ending with} -\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{* '.dtx' through LaTeX.} \Msg{*} \Msg{* Happy TeXing} \Msg{***********************************************************} } -\endinput
\ No newline at end of file +\endinput diff --git a/Master/texmf-dist/tex/generic/babel-bulgarian/bulgarian.ldf b/Master/texmf-dist/tex/generic/babel-bulgarian/bulgarian.ldf index 389e8588be0..8a23a3d2a4a 100644 --- a/Master/texmf-dist/tex/generic/babel-bulgarian/bulgarian.ldf +++ b/Master/texmf-dist/tex/generic/babel-bulgarian/bulgarian.ldf @@ -7,6 +7,7 @@ %% bulgarian.dtx (with options: `code') %% This is a generated file. %% +%% Copyright 2013 Georgi N. Boshnakov %% Copyright 1989-2008 Johannes L. Braams and any individual authors %% listed elsewhere in this file. All rights reserved. %% @@ -23,76 +24,69 @@ %% %% This work has the LPPL maintenance status "maintained". %% -%% The Current Maintainer of this work is Johannes Braams. -%% -%% This file may only be distributed together with a copy of the Babel -%% system. You may however distribute the Babel system without -%% such generated files. -%% -%% The list of all files belonging to the Babel distribution is -%% given in the file `manifest.bbl'. See also `legal.bbl for additional -%% information. +%% The Current Maintainer of this work is Georgi N. Boshnakov. %% %% 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. \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 %% Copyright (C) 1989-2008 %% by Johannes Braams,TeXniek %% Bulgarian Language Definition File -%% Copyright (C) 1995-2008 -%% by Georgi.Boshnakov <georgi.boshnakov at umist.ac.uk> -%% Johannes Braams,TeXniek -%% Adapted from russianb.dtx -%% by Georgi.Boshnakov <georgi.boshnakov at umist.ac.uk> -%% Please report errors to:J.L.Braams -%% babel at braams.xs4all.nl +%% 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 \LdfInit{bulgarian}{captionsbulgarian} \ifx\l@bulgarian\@undefined \@nopatterns{Bulgarian} \adddialect\l@bulgarian0 \fi -\let\latinencoding\cf@encoding +\newif\if@bul@unicode +\ifdefined\luatexversion \@bul@unicodetrue \else +\ifdefined\XeTeXrevision \@bul@unicodetrue \fi\fi \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 -\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 + \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 \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 - \lowercase - \expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% + \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 + }% + \lowercase\expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% \fi +\PackageInfo{babel} + {Using `\cyrillicencoding' as a default Cyrillic encoding}% \DeclareRobustCommand{\Bulgarian}{% \fontencoding\cyrillicencoding\selectfont \let\encodingdefault\cyrillicencoding @@ -111,14 +105,14 @@ \def\selectenglanguage{\selectlanguage{english}} \def\selectbglanguage{\selectlanguage{bulgarian}} \expandafter\ifx\csname T@X2\endcsname\relax\else - \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 \DeclareTextSymbolDefault{\AA}{OT1} @@ -126,39 +120,28 @@ \DeclareTextCommand{\AA}{OT1}{\r A} \DeclareTextCommand{\aa}{OT1}{\r a} \fi -\begingroup\catcode`\"=12 -\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 -\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 -\@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 +} \let\lat\latintext \DeclareTextFontCommand{\textcyrillic}{\cyrillictext} +\ifx\bbl@version\@undefined +\PackageInfo{bulgarian.ldf}{Executing the pre 3.9 branch for captions} \addto\captionsbulgarian{% \def\prefacename{% {\cyr\CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr}}% @@ -175,13 +158,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{% @@ -200,10 +187,98 @@ {\cyr\cyrv\cyrzh.}}% \def\alsoname{% {\cyr\cyrv\cyrzh.\ \cyrs\cyrhrdsn\cyrshch\cyro\ \cyri}}% - \def\proofname{Proof}% <-- Needs translation - \def\glossaryname{Glossary}% <-- Needs translation -} + \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: Притурка, Глосар? +}% %% +\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 +\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.} +\def\lastJulianDatebulgarian{19160331} +\def\firstGregorianDatebulgarian{19160414} +\def\weekdaynamebulgarian#1{\csname weekday\romannumeral#1 name\endcsname} +\ifx\bbl@version\@undefined +\PackageInfo{bulgarian.ldf}{Executing the pre 3.9 branch for dates} \def\datebulgarian{% \def\month@bulgarian{\ifcase\month\or \cyrya\cyrn\cyru\cyra\cyrr\cyri\or @@ -218,12 +293,52 @@ \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\Romannumeral#1{\uppercase\expandafter{\romannumeral #1}} -\def\todayRoman{\number\day.\Romannumeral{\month}.\number\year~\cyrg.} + \def\abbgyear{\cyrg.} + + \def\today{\number\day~\month@bulgarian\ \number\year\,\abbgyear}% + \def\todayRoman{\number\day.\,\month@Roman.\,\number\year\,\abbgyear}% +}% +\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{г.} +\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} +\EndBabelCommands +\fi + \addto\extrasbulgarian{\cyrillictext} \addto\noextrasbulgarian{\latintext} \initiate@active@char{"} @@ -244,7 +359,7 @@ \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}{}} \declare@shorthand{bulgarian}{"-}{% @@ -276,39 +391,72 @@ \fi \addto\extrasbulgarian{\bbl@frenchspacing} \addto\noextrasbulgarian{\bbl@nonfrenchspacing} +\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 +\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 +\let\@Alph@eng\@Alph +\let\@alph@eng\@alph +\let\@Alph@saved\@Alph +\let\@alph@saved\@alph +%%% +%%% 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} +%%% \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 - } -\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} +\def\autoabvon{\abvon} +\def\autoabvoff{\abvoff} +\addto\extrasbulgarian{\autoabvon} +\addto\noextrasbulgarian{\autoabvoff} +\bbl@declare@ttribute{bulgarian}{abvoff}{% + \PackageInfo{babel}{Turned off automatic Cyrillic enumeration in + Bulgarian}% + \def\autoabvon{\relax} + \def\autoabvoff{\relax} + \def\abvon{\enumBul} +} \@ifundefined{sym\cyrillicencoding letters}{}{% \SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding \rmdefault\bfdefault\updefault @@ -326,20 +474,37 @@ \SetMathAlphabet\cyrmathit{bold}\cyrillicencoding \rmdefault\bfdefault\itdefault } -\def\sh{\mathop{\operator@font sh}\nolimits} -\def\ch{\mathop{\operator@font ch}\nolimits} \def\tg{\mathop{\operator@font tg}\nolimits} +\def\ctg{\mathop{\operator@font ctg}\nolimits} +\def\cosec{\mathop{\operator@font cosec}\nolimits} \def\arctg{\mathop{\operator@font arctg}\nolimits} \def\arcctg{\mathop{\operator@font arcctg}\nolimits} -\addto\extrasrussian{% +\def\sh{\mathop{\operator@font sh}\nolimits} +\def\ch{\mathop{\operator@font ch}\nolimits} +\def\cth{\mathop{\operator@font cth}\nolimits} +\addto\extrasbulgarian{% \babel@save{\th}% \let\ltx@th\th \def\th{\textormath{\ltx@th}% {\mathop{\operator@font th}\nolimits}}% } -\def\ctg{\mathop{\operator@font ctg}\nolimits} -\def\cth{\mathop{\operator@font cth}\nolimits} -\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=я +} + \DeclareRobustCommand{\No}{% \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi} \ldf@finish{bulgarian} |