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