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