diff options
author | Karl Berry <karl@freefriends.org> | 2013-05-06 22:23:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-05-06 22:23:10 +0000 |
commit | 9cb6ff3da76db3a4b013774ef22770f25eb5c795 (patch) | |
tree | 2911fab128b91822c235e8656028cd4b2f8be286 /Master/texmf-dist/source/generic/babel-russian | |
parent | e5d1bcc98918d54a3205bd45060787871e9d26df (diff) |
babel-$ll (for 3.9a)
git-svn-id: svn://tug.org/texlive/trunk@30287 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/generic/babel-russian')
-rw-r--r-- | Master/texmf-dist/source/generic/babel-russian/russianb.dtx | 1789 | ||||
-rw-r--r-- | Master/texmf-dist/source/generic/babel-russian/russianb.ins | 149 |
2 files changed, 1938 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/babel-russian/russianb.dtx b/Master/texmf-dist/source/generic/babel-russian/russianb.dtx new file mode 100644 index 00000000000..377ee366a6b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel-russian/russianb.dtx @@ -0,0 +1,1789 @@ +% \iffalse meta-comment +% !Mode:: "TEX:DTX:UNIX:UTF-8:US" +% +% Copyright 2011-2013 Igor A. Kotelnikov. +% Copyright 1995-2008 Olga Lapko. +% Copyright 1989-2012 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 Igor A. Kotelnikov. +% +% \fi +% \CheckSum{1730} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{russianb.dtx} +%</dtx> +%<code>\ProvidesLanguage{russian} +%\fi +%\ProvidesFile{russianb.dtx} + [2013/04/13 1.3a Russian support from the babel system] +%\iffalse +%% +%% Babel package for LaTeX 2e +%% Copyright (C) 1989 - 2008 +%% by Johannes Braams, TeXniek +% +%% Russian Language Definition File +%% Copyright (C) 1995 - 2008 +%% by Olga Lapko cyrtug at mir.msk.su +%% Johannes Braams, TeXniek +% +%% Adapted to the T2 and X2 Cyrillic encodings +%% by Vladimir Volovich TeX at vvv.vsu.ru +%% Werner Lemberg wl at gnu.org +% +%% Copyright (C) 2011 - 2013 +%% by Igor A. Kotelnikov kia999 at mail dot ru +%% Adapted to EU1 (LuaTeX) and EU2 (XeTeX) encodings +% +%% Please report errors to: Igor A. Kotelnikov +%% kia999 at mail dot ru +%% +%<*filedriver> +\documentclass[a4paper]{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=russian,english]{babel} +%\languageattribute{russian}{ancient} +\usepackage[dvipsnames,usenames]{xcolor} +\definecolor{thered} {rgb}{0.65,0.04,0.07} +\definecolor{thegreen}{rgb}{0.06,0.44,0.08} +\definecolor{thegrey} {gray}{0.8} +\definecolor{theshade}{rgb}{1,1,0.97} +\definecolor{theframe}{gray}{0.6} +\definecolor{theblue}{cmyk}{1.00, 0.50, 0.00, 0.40} +\usepackage[colorlinks=true + ,linkcolor=violet %theblue % + ,filecolor=purple %thegreen% + ,citecolor=teal % thegreen% +]{hyperref} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Babel{\textsf{Babel}} +\newcommand*\xetex{\textsf{xetex}} +\newcommand*\luatex{\textsf{luatex}} +\providecommand*\m[1]{\mbox{$\langle$\normalfont\itshape#1\/$\rangle$}} +\newcommand*\langlist{% + \meta{language}\texttt{,}\meta{language}\texttt{,}...} +\newcommand*\langvar{\m{lang}} +\newcommand*\note[1]{} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\Lenv[1]{\textsf{#1}} +\newcommand*\menv[1]{\char`\{#1\char`\}} +\newcommand*\Eenv[1]{% + \quad\ldots\quad + \texttt{\color{thered}\string\end\menv{#1}}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\cls[1]{\texttt{#1}} +\newcommand*\pkg[1]{\texttt{#1}} +\GetFileInfo{russianb.dtx} +\EnableCrossrefs +%\DisableCrossrefs % Say \DisableCrossrefs if index is ready +\RecordChanges % Gather update information +\CodelineIndex % Index code by line number +%\PageIndex % Index code by page number +\AtEndDocument{\PrintChanges} +\AtEndDocument{\PrintIndex} +\DoNotIndex{\cyra,\cyrb,\cyrv,\cyrg,\cyrd,\cyre,\cyrz,\cyrzh% + ,\cyri,\cyrishrt,\cyrk% + ,\cyrl,\cyrm,\cyrn,\cyri,\cyro,\cyrp,\cyrr,\cyrs,\cyrt,\cyrf,\cyru% + ,\cyrc,\cyrsh,\cyrch,\cyrery,\cyrya% + ,\CYRA,\CYRB,\CYRV,\CYRG,\CYRD,\CYRE,\CYRZ,\CYRZH% + ,\CYRI,\CYRISHRT,\CYRK% + ,\CYRL,\CYRM,\CYRN,\CYRI,\CYRO,\CYRP,\CYRR,\CYRS,\CYRT,\CYRF,\CYRU% + ,\CYRC,\CYRSH,\CYRCH,\CYRERY,\CYRYA% + ,\cyrsftsn,\CYRSHCH,\cyryu,\CYREREV,\cyrerev,\CYRH,\cyrh,\cyrhrdsn% + ,\cyrii,\cyrshch,\cyryar,\CYRYU + ,\def,\edef%,\else,\fi,\if +} + + +\IfFileExists{listings.sty}{ + \usepackage{listings} + \lstset{ + % gobble=1, + columns=flexible, + keepspaces, + basicstyle=\MacroFont, + keywords=[0]{\selectlanguage,\foreignlanguage + ,\babelhyphen,\babelhyphenation + ,\lefthyphenmin,\righthyphenmin + ,\StartBabelCommands,\SetString,\EndBabelCommands,\shorthandoff,\shorthandon + ,\languageshorthands,\useshorthands,\defineshorthand + ,\AddBabelHook,\SetStringLoop,\SetCase,\AfterBabelLanguage + ,\defaultfontfeatures,\setmainfont,\setsansfont,\setmonofont + ,\Russian,\cyrdash,\cdash + ,\cyr,\cyrillictext,\textcyrillic + ,\addto,\captionsrussian,\daterussian,\noextrasrussian,\extrasrussian + ,\languageattribute + ,\Asbuk,\asbuk,\ch,\sh,\tg,\ctg,\arctg,\arcctg\,\th,\cth,\cosec, + \nod,\nok,\prog,\NOF\,\NOK,\Prog} + ,keywordstyle=[0]\color{thered} + ,keywords=[1]{main,russian,english,german,frenchb + ,shorthands,extrasenglish + ,stringprocess,afterextras + ,soft,empty,nobreak,hard + ,Renderer,Ligatures + ,modern,ancient + ,T1,T2A,lutf8,utf8 + ,fontspec,babel,inputenc,fontenc + }, + keywordstyle=[1]\color{thegreen}, + comment=[l]\%, + commentstyle=\color{thegrey}\itshape, + alsoother={0123456789_}, + frame=single, + backgroundcolor=\color{theshade}, + rulecolor=\color{theframe}, + framerule=\fboxrule, + } + \let\verbatim\relax + \lstnewenvironment{verbatim}[1][]{\lstset{##1}}{} + \AtBeginDocument{% + \DeleteShortVerb{\|}% + \lstMakeShortInline|% + } +}{} +\def\PrintDescribeMacro#1{% + \strut\MacroFont\color{thered}\normalsize\string#1} +\def\Describe#1{% + \par\penalty-500\vskip3ex\noindent + \DescribeMacro{#1}\args} +\def\DescribeOther{\vskip-5.8ex\Describe} +\makeatletter +\def\args#1{% + \def\bbl@tempa{#1}% + \ifx\bbl@tempa\@empty\else#1\vskip1ex\fi\ignorespaces} +\makeatother +%\usepackage[main=russian,english]{babel} +%\languageattribute{russian}{ancient} +%\typein{2nd times} +\begin{document} +\GetFileInfo{russianb.dtx} +\RecordChanges +% +\title{The Russian Language\\ + in the \babel\ system\\[0.5em] + \large Version \fileversion} + +\author{Igor A. Kotelnikov\footnote{E-mail: \href{mailto:kia999@mail.ru}{kia999 at mail dot ru}.}} + +\date{\filedate} + +\maketitle + +{\small\tableofcontents} + +\section{The Russian Language Definition File} + +The file \file{\filename}\footnote{The file described in this document +has the version number \fileversion\ and was last revised on \filedate.} +is the source file for the Russian Language Definition file +\file{russianb.ldf} to be loaded by the \babel\ package with +the option \Lopt{russian}. It was derived by Igor A. +Kotelnikov from the original version of \file{\filename}, first +released by Olga Lapko and Johannes Braam and then +adapted to the T2* and X2 Cyrillic encodings +by Vladimir Volovich and Werner Lemberg. + +Starting the version 1.2, \file{russianb.ldf} is designed to work both with +legacy non-unicode (8-bit) and new unicode encodings of the source document +files (input encodings) and of the font files (font encodings). This is +achieved by excluding (bypassing) the |\cyr...| macros, which map every letter +in a source file with given input encoding to a corresponding code point in a +font file with a given font encoding when running modern engines, such as +Lua\LaTeX\ or Xe\LaTeX, in native unicode mode instead of legacy engines, such +as \LaTeX\ or PDF\LaTeX, or unicode engines in a compatibility (8-bit) mode. A +few obsolete and controversial macros has been eliminated in first public +release of version 1.2 of \file{russianb.ldf}. + +The version 1.3 of \file{russianb.ldf} has been adapted to new features +introduced in the version 3.9 of the \pkg{babel} package. In particular, the +language attribute \Lopt{ancient} has been introduced to support typesetting +ancient and Church Slavonic books. + + +\section{Usage} + +Typesetting Russian texts implies that a special input and output +encodings should be used. Input encodings are those which are used in source +(\texttt{.tex}) file. Output encoding is also known as the font encoding. It is +implemented within the font files. + +Generally, the user may choose between different available Cyrillic +encodings provided. The current support for Cyrillic uses LH family of +MetaFont fonts and theirs Postscript versions such as CM-super. Lua\LaTeX\ and +Xe\LaTeX, being the Unicode-based succeeders of \LaTeX, allow also for any +Open Type (OTF) and True Type (TTF) fonts which has Cyrillic script, e.g. +Computer Modern Unicode, Linux Libertine, and many other system fonts +that came with Linux and Windows operating systems. + +With the advent of Unicode, \LaTeX\ community are moving towards eliminating +all existing encodings in favor of Unicode, but nowadays one should take +care when switching from \LaTeX\ to Lua\LaTeX\ or Xe\LaTeX\ since +different packages should be loaded for those compilers. + +Since earlier versions \pkg{babel} did not +support Xe\LaTeX\ (at least for some languages including Russian), the +\pkg{polyglossia} package was generally recommended in the past for +use with Xe\LaTeX\ as a replacement for \pkg{babel}. Nowadays, \pkg{babel} +can be used with any engines, including \LaTeX, PDF\LaTeX, Lua\LaTeX, and +Xe\LaTeX. Nevertheless some troubles may occur with some languages which +have no promptly updated \file{.ldf} files. + + +\subsection{\LaTeX} + +When user's document is compiled with \file{latex.exe} or \file{pdflatex.exe}, +recommended set of packages includes the \pkg{inputenc} and \pkg{fontenc} +package. They should be loaded before \pkg{babel}, for example, +\begin{verbatim} + \usepackage[T1,T2A]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage[english,russian]{babel} +\end{verbatim} +Some variations in the order of package loading are allowed in this case +but it is better to follow one and the same convention at all circumstances: +the \pkg{babel} packgage should go last, and \pkg{fontenc} must be the first. + +Input encoding should be declared as option to the \pkg{inputenc} +package. Known Cyrillic encodings include \texttt{cp866} (MS DOS), +\texttt{cp1251} (Windows), \texttt{koi8-u} (UNIX) and their variants. +Nowadays, this list is appended with \texttt{utf8} input encoding. + +Output encodings (also known as font encodings) are declared as options to +the \pkg{fontenc} package. Known Cyrillic encodings are \texttt{T2A}, +\texttt{T2B}, \texttt{T2C}, \texttt{LCY}, and \texttt{X2}; +\texttt{LWN} is excluded from Russian support stating version 1.2 of +\file{\filename} since \texttt{LWN} is excluded from the \pkg{cyrillic} +bundle of related files. + + +\subsection{Lua\LaTeX} + +If Unicode fonts are not available, Lua\LaTeX\ can run in compatibility +(8-bit) mode to use same font as \LaTeX\ does. However the package +\pkg{inputenc} does not work with Lua\LaTeX\ and should be substituted with +\pkg{luainputenc}. Source file is to be converted to \texttt{UTF8} +(Unicode-8) encoding; it is the only input encoding accepted by +Lua\LaTeX. The 8-bit mode is invoked by the following sequence of packages: +\begin{verbatim} + \usepackage[T1,T2A]{fontenc} + \usepackage[lutf8]{luainputenc} + \usepackage[english,russian]{babel} +\end{verbatim} +\unskip +The order of the packages is crucial for Lua\LaTeX\ in 8-bit mode. Since both +\pkg{luainputenc} and \pkg{babel} should know what is a selected font encoding, +the \pkg{fontenc} package should be loaded first. Input encoding management for +Lua\TeX\ is needed only for compatibility with old documents. For new +documents, using UTF-8 encoding and Unicode fonts is strongly recommended. +\emph{You've been warned!} See +\href{http://tex.stackexchange.com/questions/31709/can-one-instruct-lualatex-to-use-t2a-encoded-fonts}% +{tex.stackexchange.com/questions/31709/can-one-instruct-lualatex-to-use-t2a-encoded-fonts}. + + +To invoke Unicode mode, one needs to load the \pkg{fontspec} package instead +of \pkg{luainputenc} and \pkg{fontspec} and explicitly indicate +which fonts should be used for romanic, sans-serif and monospaced +types. Next example shows how to load Computer Modern Unicode fonts, which is a +part of all modern \LaTeX\ distributions: +\begin{verbatim} +\usepackage{fontspec} + \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}} + \setmainfont{CMU Serif} + \setsansfont{CMU Sans Serif} + \setmonofont{CMU Typewriter Text} +\usepackage[english,russian]{babel} +\end{verbatim} +\unskip +The |\defaultfontfeatures| declares default font features for subsequent +|\setmainfont| (which sets romanic fonts), |\setsansfont| (sans-serif) and +|\setmonofont| (monospaced font). Font features can be set up on per font +bases; for example +\begin{verbatim} +\usepackage{fontspec} + \setmainfont[Renderer=Basic,Ligatures={TeX}]{CMU Serif} + \setsansfont[Renderer=Basic,Ligatures={TeX,Historic}]{CMU Sans Serif} + \setmonofont{CMU Typewriter Text} +\usepackage[english,russian]{babel} +\end{verbatim} +\unskip +Here |Renderer=Basic,Ligatures={TeX}| activates ligatures which are existed +in \LaTeX. + +Recall that the language enlisted last in the list of options of the \pkg{babel} +package is assumed to be the main language of the document, which is also active +language right after |\begin{document}|. As of version 3.9, the main language +can be set as a value of the |main| option as follows +\begin{verbatim} +\usepackage{fontspec} +\usepackage[english,main=russian,german]{babel} +\end{verbatim} +%\unskip + + + +\subsection{Xe\LaTeX} + +In Xe\LaTeX, there is also a special mode for 8-bit compatibility. +One can use |\XeTeXinputencoding| to change the input encoding +temporarily, and the \texttt{"bytes"} encoding makes Xe\LaTeX\ works +like a 8-bit \LaTeX\ engine: +\begin{verbatim} +\XeTeXinputencoding "bytes" +\usepackage[utf8]{inputenc} +\usepackage[T2A]{fontenc} +\usepackage[english,russian]{babel} +\end{verbatim} +\unskip +Xe\TeX\ can use a different input encoding but it always uses the Unicode +internally, so that |\XeTeXinputencoding| performs a conversion of the input +into Unicode; +see \href{http://tex.stackexchange.com/questions/36188/do-xetex-and-luatex-always-use-unicode} +{tex.stackexchange.com/questions/36188/do-xetex-and-luatex-always-use-unicode}. + + +Unicode mode is set up same way as for Lua\LaTeX, however the option +|Renderer=Basic| can be dropped: +\begin{verbatim} +\usepackage{fontspec} + \defaultfontfeatures{Ligatures={TeX}} + \setmainfont{CMU Serif} + \setsansfont{CMU Sans Serif} + \setmonofont{CMU Typewriter Text} +\usepackage[english,russian]{babel} +\end{verbatim} +%\unskip + + +\subsection{Modern and Ancient spelling} +\label{ssec:speeling} + +By default, a modern spelling is enabled. For Church Slavonic and other old books +ancient spelling can be enabled by setting the attribute to \Lopt{ancient}. To set +an attribute, put the |\languageattribute| macro within a document preamble after +\babel, for example, +\begin{verbatim} +\usepackage[english,russian]{babel} +\languageattribute{russian}{ancient} +\end{verbatim} +Setting the \Lopt{ancient} attribute changes the built-in strings (caption names) +and a date format. For example, the bibliography will be entitled as +`\textcyrillic{Литература}' by default and as `\textcyrillic{Библіографія}' if the +Russian language attribute is set to \Lopt{ancient}. +%Default behavior is equivalent to setting the Russian language attribute to \Lopt{modern}. + + +\section{User's commands} + +In a multilingual document, some typographic rules are language +dependent and should apply to the whole document. + +%As of version~1.2, \file{russianb.ldf} behaves differently +%according to \babel's \emph{main language} defined as the \emph{last} +%option. When Russian is +%|babel|'s main language, it adjusts global layout of the document +%according to typographical conventions of Russian language. Namely, +%\file{russianb.ldf} makes the following changes to global layout even +%in the parts where Russian is not current language: +%\begin{enumerate} +%\item +% the first paragraph of any section becomes indented (\LaTeX{} only). +% (this is obsolete statement starting from version 1.2a) +%\end{enumerate} + +Regarding local typography, the macro |\selectlanguage{russian}| +switches to the Russian language, with the following effects: +\begin{enumerate} +\item Russian hyphenation patterns are made active; +\item |\today| prints the date in Russian; +\item the caption names are translated into Russian + (\LaTeX{} only); +\item emdash typed by the ligature |---| might be 20\% shorter when Russian +is the current language; the result depends on the current encoding; |---| +always produce long emdash in Lua\TeX\ and Xe\TeX\ since these engines +use same encodings for all languages; +\item emdash typed by the ligature |"---| in Russian is 20\% shorter, however +the ligature |"---| might not be defined in other languges; a + shorter emdash (i.e. |\cyrdash|) can be typeset in any language using + special macros enlisted in table \ref{tab:russian-quote}. +\end{enumerate} + +By default, a modern spelling is used for built-it strings (caption names) and +the date. The spelling can be reverted to ancient by setting the language +attribute to \Lopt{ancient} in the document preamble as discussed in +Sec.~\ref{ssec:speeling}. + +Since Russian has its own numbering system, \file{russianb.ldf} adds macros +|\asbuk|\marg{counter} and |\Asbuk|\marg{counter} for formatting numbers appropriately the alphabetic +sequence in the Russian alphabet. Additional commands are provided +to typeset quotes: +\begin{enumerate} +\item French quotation marks can be entered using the commands + |\guillemotleft| and |\guillemotright| which work in \LaTeXe\ + and Plain\TeX. +\item German quotation marks can be entered using the commands + |\glqq| and |\grqq| which work in \LaTeXe\ and Plain\TeX. +\end{enumerate} + +The macro |\Russian| is now defined as an alias for +|\selectlanguage{russian}|, and its ``opponent'' |\English|, existed +in \file{russianb.ldf} prior to version 1.2 has been removed since the Russian +language definition file is wrong place for definition of macros which +switch to a distinct other language. + +The macro |\textcyrillic|\marg{text} is intended to typeset small chunks of text +in Russian; it is essentially an alias for |\foreignlanguage{russian}|\marg{text}. + + +\subsection{Active character} + +Table~\ref{tab:russian-quote} shows macros and active string which can be +used to typeset various dashes and quotes. +In the Russian language, the character |"| is made active. It can be +considered as second escape character in addition to |\|. Some dashes and +all quotes can be typed using both active character |"| and ordinary +macros as indicated in the table. However, some shorthanded hyphenations +have no macro counterpart. + +\begin{table}[ht]\centering + \caption{Extra definitions made + by \file{russianb.ldf}}\label{tab:russian-quote} + \medskip + \begin{tabular}{llp{7cm}} + \hline\hline\\[-0.5em] + |\glqq| & |"`| & + German left double quotes (looks like ,\kern-0.08em,). \\ + |\grqq| & |"'| & + German right double quotes (looks like ``). \\ + |\guillemotleft| & |"<| & + French left double quotes (looks like $<\!\!<$). \\ + |\guillemotright| & |">| & + French right double quotes (looks like $>\!\!>$). \\ + |\dq| & & + Original quotes character (|"|). \\[0.5em] + |\babelhyphen{soft}| + & |"-| & Optional (soft) hyphen sign, similar to |\-| but allows + hyphenation in the rest of the word; + equivalent to |\babelhyphen{soft}| in \pkg{babel} 3.9. \\ + |\babelhyphen{empty}| + & |""| & Similar to |"-| but does not print hyphen; + equivalent to |\babelhyphen{empty}| in \pkg{babel} 3.9. \\ + |\babelhyphen*{nobreak}| + & |"~| & A compound word mark without a breakpoint, prints hyphen + prohibiting hyphenation at the point; + equivalent to |\babelhyphen*{nobreak}| in \pkg{babel} 3.9. \\ + |\babelhyphen{hard}| + & |"=| & A compound word mark with a breakpoint, prints hyphen + allowing hyphenation in the composing words. + equivalent to |\babelhyphen{hard}| in \pkg{babel} 3.9. \\ + |\babelhyphen{nobreak}| + & \verb="|= & Disables ligature at this position; + equivalent to |\babelhyphen{nobreak}| (??) in \pkg{babel} 3.9. + . \\[0.5em] + |\cyrdash| & |---| & Row Cyrillic emdash (does not care + spaces around). \\ + |\cdash---| & |"---| & + Cyrillic emdash in plain text. \\ + |\cdash--~| & |"--~| & + Cyrillic emdash in compound names (as in |Mendeleev"--~Klapeiron|). \\ + |\cdash--*| & |"--*| & + Cyrillic emdash in direct speech. \\ + & |",| & Thin space (allows further hyphenation as in |D.",Mendeleev|). \\[0.5em] + \hline\hline + \end{tabular} +\end{table} +Note that the standard soft hyphen |\-| is equivalent to |\babelhyphen*{soft}|. + +\medskip + +The quotation marks traditionally used in Russian were borrowed from +other languages (e.g., French and German) so they keep their original +names. + +The French quotes are also available as ligatures `|<<|' and `|>>|' in +8-bit Cyrillic font encodings (\texttt{LCY}, \texttt{X2}, \texttt{T2*}) +and in unicode encodings (\texttt{EU1} and \texttt{EU2}) +and as `|<|' and `|>|' characters in 7-bit Cyrillic font encodings +(\texttt{OT2} and \texttt{LWN}). + +In Unicode encodings \texttt{EU1} and \texttt{EU2} cyrdashes and quotes +can be typed as single character if text editor makes it possible to +insert characters which absent of standard keyboard. This method works +as well for 8-bit fonts encoded according to \texttt{T2A} if source file +is encoded with \texttt{cp1251} or {utf8}. + +By default, active double quote is switched on. It can be switched off +any time using |\shorthandon{"}| and the switched on again using +|\shorthandon{"}|. The aliases |\mdqoff| and |\mdqon| for these two macros +has been removed from \file{russianb.ldf} starting from version 1.3 in favour of +the macros |\shorthandon| and |\shorthandoff| provided in the \pkg{babel} core. + + +\subsection{Math commands} + +\file{russianb.ldf} defines few macros than can be used independently +of current language. These are 9 macros to be used in math mode to type +the names of trigonometric functions common for Russian documents: +|\sh|, |\ch|, |\tg|, |\ctg|, |\arctg|, |\arcctg|, |\th|, |\cth|, and +|\cosec|. Cyrillic letters in math mode can be typed with the aid of +text commands such as |\textbf|, |\textsf|, |\textit|, |\texttt|, e.t.c. + + +\section{History} + +\subsection{Changes in version 1.3a} +\begin{itemize} +\item + %Added the Russian language attributes \Lopt{modern} (default) and + %\Lopt{ancient} (for typesetting ancient slavonic books). + Added the Russian language attribute \Lopt{ancient} for typesetting + ancient slavonic books. +\end{itemize} + +\subsection{Changes in version 1.3} +\begin{itemize} +\item + Updated for babel 3.9. +\item + The |\alph| and |\Alph| commands are not redefined any more by the + \file{russianb.ldf}. +\end{itemize} + +\subsection{Changes in version 1.2a} +\begin{itemize} +\item + Indentation of the first paragraph after sectioning command has been removed. + Use \pkg{indentfirst} to make fist paragraph indented. +\end{itemize} + +\subsection{Changes in version 1.2} + +\begin{itemize} +\item + Font encoding \texttt{LWN} is not supported any more. +\item + Macros |\Rus|, |\English|, |\Eng| have been removed. + |\Russian| is now alias of |\selectlanguage{russian}|. + Former definition of |\Russian| is preserved in the macros + |\cyrillictext| and |\cyr| which should not be used at user + level. +\item + Lua\LaTeX\ and Xe\LaTeX\ are now supported; + |\cyr...| commands are bypassed if Lua\LaTeX\ or Xe\LaTeX\ run. +%\item +% First paragraph after section command is indented over the entire +% document if \Lopt{russian} is the last option of \pkg{babel} and, +% hence, Russian is the main language. +\item + The shorthands |"<| and |">| are redefined; now they match + |\guillemotleft| and |\guillemotright|, respectively, rather than + |\flqq| and |\frqq|. +\item + Definitions of |\latinencoding| and |\latintext| are removed + since these macros are defined in \file{babel.def}. +\item + |\cyrmathbf|, |\cyrmathsf|, |\cyrmathit|, and |\cyrmathtt| commands + are removed; instead of them it is advised to use corresponding + |\text..| command; they do work in math mode. +\item + The macro |\No| is removed since the Cyrillic number sign is available + on keyboard and can also be typed using the |\textnumero| macro. +\item + Added translation for Glossary. +\end{itemize} + + \DocInput{russianb.dtx} +\end{document} +%</filedriver> +%\fi +% +% \StopEventually{} +% +% \section{\TeX{}nical details} +% +% The packages \pkg{inputenc} and \pkg{luainputenc} +% make Cyrillic letters active so that compiler converts them into +% corresponding |\cyr...| macro at compilation time. +% For example, Russian letter `a' matches +% macro |\cyra|, and capital Russian letter `A' matches |\CYRA|. The +% package \pkg{fontenc} then matches every macro |\cyr...| to corresponding +% glyph in font file depending on declared font encoding. +% +% Nowadays, Unicode makes |\cyr...| macros outdated since both source +% file and font file are encoded consistently. These macros +% should therefore be removed because mixing them with unicode characters +% breaks sorting mechanism of such utilities as \file{bibtex} and +% \file{makeindex}. For the sake of backward compatibility, |\cyr...| are +% still kept for \LaTeX, but they are bypassed if Lua\LaTeX\ or Xe\LaTeX\ +% are detected. +% +% Some inconsistences of prior versions of \file{\filename} was also +% overcame in the version 1.2. Those users who used |\selectlanguage| macro, +% defined in the core \pkg{babel} system, to switch between +% different languages should not worry. However, the macros +% |\Russian|, |\Englsih| and their aliases |\Rus|, |\cyr|, +% |\Eng| are modified or removed as they did not +% conform the mechanism of language switching encoded into the +% core of \pkg{babel} and therefore can mess it. +% +% \section{Implementation} +% +% \changes{russianu-1.3b}{2013/04/06}{Renamed to russianb to work with babel 3.9} +% \changes{russianu-1.2b}{2013/01/08}{Renamed to russianu to work with babel-beta 3.9} +% \changes{russianb-1.2a}{2012/06/06}{Indentation of 1st paragraph removed} +% \changes{russianb-1.1c}{1996/07/11}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{russianb-1.1d}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% \changes{russianb-1.1k}{1999/08/19}{replaced all \cs{penalty}\cs{@M} +% with \cs{nobreak}} +% \changes{russianb-1.1f}{1998/06/26}{% +% Added definitions of Cyrillic emdash stuff and thinspace} +% \changes{russianb-1.1f}{1998/06/26}{% +% Added definitions of Cyrillic emdash stuff and thinspace} +% +% +% \subsection{Initial setup} +% +% The macro |\LdfInit| performs a couple of standard checks that +% must be made at the beginning of a language definition file, +% such as checking the category code of the \texttt{@}-sign, preventing +% the \file{.ldf} file from being processed twice, etc. +% +% \changes{russianb-1.1d}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \changes{russianb-1.1e}{1996/12/29}{Added closing brace to second +% argument of \cs{LdfInit}} +% \begin{macrocode} +%<*code> +\LdfInit{russian}{captionsrussian} +% \end{macrocode} +% +% First, we check if Lua\LaTeX\ or Xe\LaTeX\ is running. If so, we set +% boolean key |\if@uni@ode| to true. It will be used to eliminate |\cyr...| +% commands, which were introduced in \LaTeX2e\ to handle various +% Cyrillic input encoding. With the advent of unicode \LaTeX\ is +% moving to universal input encoding, so we consider these |\cyr...| +% commands as obsolete. They are preserved though for backward +% compatibility in case if \LaTeX\ or PDF\LaTeX\ are running. +% +% We don't load the \pkg{ifluatex} or \pkg{ifxetex} package because +% |\RequirePackage| is not allowed at the stage of processing options +% (note that babel loads this file right when it processes its own options) +% but we borrow code from these packages. +% +% \changes{russianb-1.2}{2011/10/20}{Check for LuaTeX} +% \begin{macrocode} +\ifdefined\if@uni@ode + \PackageError{babel}{if@uni@ode already defined.\MessageBreak + Please contact author of russianb.ldf} + \relax +\fi +\newif\if@uni@ode +\ifdefined\luatexversion \@uni@odetrue \else +\ifdefined\XeTeXrevision \@uni@odetrue \fi\fi +% \end{macrocode} +% +% Check if hyphenation patterns for the Russian language have been +% loaded in \file{language.dat}. Namely, we check for the existence of +% |\l@russian|. If it is not defined, we declare Russian as dialect +% for the default language number 0 which almost for sure is English. +% +% \begin{macrocode} +\ifx\l@russian\@undefined + \@nopatterns{Russian} + \adddialect\l@russian0 +\fi +% \end{macrocode} +% Now |\l@russian| is always defined. +% +% \subsection{Output encoding} +% +% We need to know font encoding that is supposed to be +% active at the end of the \babel\ package. Default font encoding, set by +% \LaTeX\ core, is \texttt{OT1}. This can be changed by the \pkg{fontenc} +% package in case of \LaTeX\ and by \pkg{fontspec} package in case of +% Lua\LaTeX. It matters weather these packages are loaded before of after +% \pkg{babel}. In the latter case or if these packages are not loaded at all, +% \file{russianb.ldf} ignores their effect and tries to provide some +% reasonable settings. In particular, \texttt{T2A} will be selected for +% Russian language if \LaTeX\ is running but \texttt{EU1} in case of +% Xe\LaTeX\ and \texttt{EU2} in case of Lua\LaTeX. +% +% \begin{macro}{\latinencoding} +% \changes{russianb-1.2}{2011/10/20}{Removed \cs{latinencoding}} +% +% The macro |\latinencoding| keeps the name of Latin encoding. It is +% defined in \file{babel.def} and is wrapped into |\AtBeginDocument| to allow +% for late loading \pkg{fontenc}. Therefore it does not matter +% whether \pkg{babel} is loaded before or after the \pkg{fontenc}. +% As of version 1.2, definition of |\latinencoding| was removed from +% \file{russianb.ldf} since it is overruled in \file{babel.def}. +% For example, after +% \begin{verbatim} +% \usepackage[T1,T2A]{fontenc} +% \usepackage[english,russian]{babel} +% \end{verbatim}% +% \unskip +% as well as after +% \begin{verbatim} +% \usepackage[english,russian]{babel} +% \usepackage[T1,T2A]{fontenc} +% \end{verbatim}% +% \unskip +% |\latinencoding| will be set to \texttt{T1}. +% After +% \begin{verbatim} +% \usepackage[english,russian]{babel} +% \end{verbatim}% +% \unskip +% |\latinencoding| will be \texttt{OT1}. +% +% In Unicode mode, the package \pkg{fontspec} should be loaded instead of +% \pkg{fontenc} to make font preparation; \pkg{fontspec} loads the package +% \pkg{xunicode} which sets current encoding (kept in |\cf@encoding|) to +% \texttt{EU1} for Xe\LaTeX\ and \texttt{EU2} for Lua\LaTeX, and the \pkg{babel} +% package sets the macro |\latinencoding| to |\cf@encoding|. Since \pkg{babel} scan +% for value |\cf@encoding| within |\AtBeginDocument|, |\latinencoding| will +% be set to either \texttt{EU1} for Xe\LaTeX\ or \texttt{EU2} for Lua\LaTeX\ +% no matter which of the packages, \pkg{babel} or \pkg{fontspec} is loaded first. +% +% \end{macro} +% +% \Describe\cyrillicencoding{} +% There is a limited list of encodings appropriate for Cyrillic text. We +% will look which of them is declared and keep its name in the macro +% |\cyrillicencoding|. +% Correct (but obsolete and now deleted) 7-bit Cyrillic encoding is +% \texttt{LWN}. +% Correct 8-bit Cyrillic encodings are +% \texttt{T2A} (default for 8-bit compilers), \texttt{T2B}, \texttt{T2C}, +% \texttt{LCY} and \texttt{X2}. +% Correct utf8 encodings are +% \texttt{EU1} (default for Xe\LaTeX), +% \texttt{EU2} (default for Lua\LaTeX). +% +% In 8-bit (\LaTeX) mode, user may choose between different non-unicode Cyrillic +% encodings---e.g., \texttt{X2} or \texttt{LCY}.\@ If user wants +% to use another font encoding rather than default (\texttt{T2A}), +% he has to load the corresponding file \emph{before} \file{babel.sty}. +% +% Remember that for the Russian language, the \texttt{T2A} encoding is +% better than \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 Russian phrase +% or vice versa. +% +% +% We parse the |\cdp@list| containing encodings known to \LaTeX\ +% in the order they were loaded by the time when \pkg{babel} is loaded. +% We set the |\cyrillicencoding| to the \emph{last} loaded encoding in the +% list of supported Cyrillic encodings: \texttt{OT2}, \texttt{LCY}, +% \texttt{X2}, \texttt{T2C}, \texttt{T2B}, \texttt{T2A}. In Unicode mode +% we also try the unicode encodings \texttt{EU1} and \texttt{EU2}; 8-bit +% encodings are kept for unicode compilers (Lua\LaTeX\ and Xe\LaTeX) since +% they can run in compatibility (8-bit) mode. +% +% \changes{russianb-1.2}{2011/10/20}{EU1 and EU2 encodings added} +% \begin{macrocode} +\def\@setcyrillicencoding{% + \def\sce@a##1##2{% + \edef\sce@b{##1}% + \edef\sce@c{##2}% + \ifx\sce@b\sce@c + \let\cyrillicencoding\sce@c + \fi}% + \def\cdp@elt##1##2##3##4{% + \sce@a{##1}{OT2}% + \sce@a{##1}{LCY}% + \sce@a{##1}{X2}% + \sce@a{##1}{T2C}% + \sce@a{##1}{T2B}% + \sce@a{##1}{T2A}% + \if@uni@ode + \sce@a{##1}{EU1}% + \sce@a{##1}{EU2}% + \fi}% + \cdp@list +} +\@setcyrillicencoding +\@onlypreamble\@setcyrillicencoding +\@onlypreamble\sce@a +\@onlypreamble\sce@b +\@onlypreamble\sce@c +% \end{macrocode} +% The last lines are to free the memory occupied by the macros +% |\@setcyrillicencoding| and |\sce@x| that are useless in the document. +% The contents of |\@begindocumenthook| is cleared automatically. +% +% If |\cyrillicencoding| is still undefined, we issue warning and provide +% reasonable default value for |\cyrillicencoding|. We then load default +% encoding definitions; we use the lowercase names (i.e., +% \texttt{lcyenc.def} instead of \texttt{LCYenc.def}) when we do that. +% +% \changes{russianb-1.2}{2011/10/20}{Removed test for present of +% encoding files} +% \begin{macrocode} +\ifdefined\cyrillicencoding +\else + \if@uni@ode + \ifdefined\XeTeXrevision + \edef\cyrillicencoding{EU1} + \else\ifdefined\luatexversion + \edef\cyrillicencoding{EU2} + \fi\fi + \else + \edef\cyrillicencoding{T2A} + \fi + \PackageWarning{babel}% + {No Cyrillic font encoding has been loaded so far.\MessageBreak + A font encoding should be declared before babel.\MessageBreak + Default `\cyrillicencoding' encoding will be loaded + }% + \lowercase\expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% +% \end{macrocode} +% As final wisdom, we repeat |\@setcyrillicencoding| at |\begin{document}| +% time. We could not avoid previous call to |\@setcyrillicencoding| since +% compiler scan \file{.aux} file before it executes delayed code, and +% \file{.aux} may contain |\set@langauge{russian}|; the latter rises +% error if |\cyrillicencoding| would not be defined by that time. +% \begin{macrocode} + \AtBeginDocument{\@setcyrillicencoding} +\fi +% \end{macrocode} +% +% \Describe\Russian{} +% \DescribeOther\cyr{} +% \DescribeOther\cyrillictext{} +% For the sake of backward compatibility we keep the macro |\Russian| +% but redefine its meaning; now |\Russian| is simply an alias for +% |\selectlanguage{russian}|. +% +% We define |\cyrillictext| and its alias |\cyr| but remove another alias +% |\Rus|; these macros are intended for use within \texttt{babel} macros and +% do not perform complete switch of the language. +% In particular, they to do no switch captions and the name of current +% language stored in the macro |\languagename|. This inconsistency might +% break some assumptions embedded into \pkg{babel}'s. +% For example, the |\iflanguage| macro will fail. +% +% Second, |\cyrillictext| does +% not activate shorthands, so that |"<|, |">|, |"`|, |"'|, +% |"---|, e.t.c. will not work. +% +% And third, |\cyrillictext| does not write its trace +% to \file{.aux} file, which might result in wrong typesetting of +% table of content, list of table and list of figures in multilingual +% documents. +% +% Due to any of these reasons the use of the declaration |\cyrillictext| and +% its aliases in ordinary text is strongly discouraged. Instead of the +% declaration |\cyrillictext| it is recommended to use |\Russian| or the +% command |\foreignlanguage| defined in the \pkg{babel} core; their +% functionality is similar to |\selectlanguage{russian}| but they did not +% switch caption names, dates and shorthands. +% +% \begin{macrocode} +\DeclareRobustCommand{\Russian}{\selectlanguage{\russian}} +\DeclareRobustCommand{\cyrillictext}{% + \fontencoding\cyrillicencoding\selectfont + \let\encodingdefault\cyrillicencoding + \expandafter\set@hyphenmins\russianhyphenmins + \language\l@russian}% +\let\cyr\cyrillictext +% \end{macrocode} +% +% Starting from version v.1.2 we remove the |\English| macro and its +% aliases. We believe that reasonable place for defining these macros +% would be \file{englishb.ldf}. +% Note also that the macro |\English| and its alias |\Eng| are absent +% in \file{russianb.ldf}'s counterpart in the package \pkg{polyglossia}, +% analog of \pkg{babel} for Xe\LaTeX. +% +% \changes{russianb-1.2}{2011/10/20}{Removed \cs{English} macro} +% \begin{quote} +% \begin{verbatim} +% \begin{macrocode} +%\DeclareRobustCommand{\English}{% +% \fontencoding\latinencoding\selectfont +% \let\encodingdefault\latinencoding +% \expandafter\set@hyphenmins\englishhyphenmins +% \language\l@english}% +%\let\Eng\English +% \end{macrocode} +% \end{verbatim} +% \end{quote} +% +% \textsc{Next part of code should be moved to \texttt{X2enc.def}, +% \texttt{X2enc.dfu}, if needed.} +% \begin{quote} +% Since the \texttt{X2} encoding does not contain Latin letters, we +% should make some redefinitions of \LaTeX\ macros which implicitly +% produce Latin letters. +% +% 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{verbatim} +% \begin{macrocode} +\expandafter\ifx\csname T@X2\endcsname\relax\else + \DeclareTextSymbolDefault{\AA}{OT1} + \DeclareTextSymbolDefault{\aa}{OT1} + \DeclareTextCommand{\aa}{OT1}{\r a} + \DeclareTextCommand{\AA}{OT1}{\r A} +\fi +% \end{macrocode} +% \end{verbatim} +% \end{quote} +% +% +% The macro |\cyrillictext| switches current (e.g., Latin) font encoding +% to a Cyrillic font encoding stored in |\cyrillicencoding|. The macro +% |\latintext| switches back. This method assumes that an font +% encoding is a Latin one. But in fact the latter assumption does not matter +% if any other language is switched on using same method, i.e. +% if corresponding \file{.ldf} file defines required macros to switch that +% language on from same standard (Latin) state. +% Since |\latintext| is defined by the core of babel we do not repeat its +% definition here. +% +% \changes{russianb-1.1o}{2003/10/12}{\cs{latintext} is already +% defined by the core of babel} +% \changes{russianb-1.2}{2011/10/20}{\cs{lat} removed} +% \begin{verbatim} +% \begin{macrocode} +%\DeclareRobustCommand{\latintext}{% +% \fontencoding{\latinencoding}\selectfont +% \def\encodingdefault{\latinencoding}} +%\let\lat\latintext +% \end{macrocode} +% \end{verbatim} +% +% \Describe\textcyrillic{\marg{text}} +% The macros |\cyrillictext| and |\latintext| are declarations. +% For shorter chunks of text the commands |\textcyrillic| and |\textlatin| +% can be used. +% +% The macro |\textcyrillic| takes an argument which is then typeset using the +% requested font encoding. It is thus an equivalent or +% |\foreignlangauge{russian}|. +% \changes{russianb-1.1o}{2003/10/12}{\cs{textlatin} already defined +% by the core of babel} +% \begin{macrocode} +\DeclareTextFontCommand{\textcyrillic}{\cyrillictext} +% \end{macrocode} +% +% +% \subsection{Input encoding} +% +% 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 \pkg{inputenc} package should be explicitly called by +% |\usepackage{inputenc}| \emph{before} \pkg{babel}. +% Note however that default font encoding \texttt{T2A} fits +% well enough to Russian version of Windows ANSI encoding which is almost +% equivalent to \texttt{cp1251}. +% +% \textsc{Should we wrap this chunk into At Begin document?} +% +% \changes{russianb-1.1l}{1999/08/27}{Made not using inputenc a +% warning instead of an error} +% \changes{russianb-1.2}{2011/10/11}{Added EU1 and EU2 encodings} +% \changes{russianb-1.2}{2011/10/11}{Removed LWN encoding} +% \begin{macrocode} +\@ifpackageloaded{inputenc}{% + \if@uni@ode + \PackageWarning{babel}{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{babel}% + {No input encoding specified for Russian language} + \fi\fi\fi + %\fi +} +% \end{macrocode} +% +% +% \subsection{Shorthands} +% +% The double quote character \texttt{"} is declared to be active in +% Russian language. +% +% \changes{russianb-1.1a}{1995/03/07}{Use the new mechanism for dealing +% with active characters} +% \begin{macrocode} +\initiate@active@char{"} +% \end{macrocode} +% +% \changes{russianb-1.1f}{1998/06/26}{Added switch for +% doublequote shorthands} +% \changes{russianb-1.3}{2013/01/10}{Removed switch for +% doublequote shorthands} +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% Obsolete: Active double quote can be both activated and deactivated at any time +% using the macros |\mdqon| and |\mdqoff|. +% \begin{macrocode} +%\def\mdqon{\bbl@activate{"}} +%\def\mdqoff{\bbl@deactivate{"}} +% \end{macrocode} +% Initial activation state will set to on later in section \ref{sss:extra}. +% \end{macro} +% \end{macro} +% +% \Describe\dq{} +% The active character |"| is used as indicated in +% table~\ref{tab:russian-quote}. We save the original double quote +% character in the |\dq| macro to keep it available. +% The math accent |\"| can now be typed as `|"|'. +% +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\reserved@a{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\reserved@a +% \end{macrocode} +% +% \subsubsection{Quotes} +% +% We set |"`| and |"'| as shorthands for |\quotedblbase| and +% |\textquotedblleft|, respectively. Prior to ver.1.2, these shorthands +% were defined through german quotes |\glqq| and |\grqq|, which in their turn +% are defined in \pkg{babel.def} via |\quotedblbase| and |\textquotedblleft|, +% respectively. It occurred, that old definition caused errors in Unicode +% mode if \pkg{fontspec} is loaded. +% +% Prior to version 1.2, the shorthands |"<| and |">| were +% declared to be equivalents for the French quotes |\flqq| and |\frqq|, +% respectively. They are defined in \pkg{babel.def} via |\guillemotleft| and +% |\guillemotrigh|. However, |\flqq| and |\guillemotleft| (and their right +% counterparts) are typeset differently if current encoding is not +% \texttt{T1}. Therefore, since v.1.2, we define |"<| and |">| directly +% through |\guillemotleft| and |\guillemotrigh|. +% +% \begin{macrocode} +\declare@shorthand{russian}{"`}{\quotedblbase} +\declare@shorthand{russian}{"'}{\textquotedblleft} +\declare@shorthand{russian}{"<}{\guillemotleft} +\declare@shorthand{russian}{">}{\guillemotright} +% \end{macrocode} +% +% Next set of shorthands is intended for variations of standard macro |\-| +% which indicates explicitly breakpoint for hyphenation in a word. Meaning +% of these shorthands is explained in table~\ref{tab:russian-quote}. +% +% \begin{macrocode} +\declare@shorthand{russian}{""}{\hskip\z@skip} +\declare@shorthand{russian}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{russian}{"=}{\nobreak-\hskip\z@skip} +\declare@shorthand{russian}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}} +% \end{macrocode} +% +% \subsubsection{Emdash, endash and hyphenation sign} +% +% To distinguish between |"-| and |"---| we must check whether the next +% after |-| token is a hyphen character. +% If it is, we output an emdash, otherwise a hyphen sign. Therefor +% \TeX\ looks for the next token after the first `|-|', writes +% its meaning to |\russian@sh@next| and finally call for |\russian@sh@tmp|. +% +% \begin{macrocode} +\declare@shorthand{russian}{"-}{% + \def\russian@sh@tmp{% + \if\russian@sh@next-\expandafter\russian@sh@emdash + \else\expandafter\russian@sh@hyphen\fi}% + \futurelet\russian@sh@next\russian@sh@tmp} +% \end{macrocode} +% Two macros |\russian@sh@hyphen| and |\russian@sh@emdash| called by +% |\russian@sh@tmp| are defined below. The second of +% them has two parameters since it must gobble next two hyphen signs. +% \begin{macrocode} +\def\russian@sh@hyphen{\nobreak\-\bbl@allowhyphens} +\def\russian@sh@emdash#1#2{\cdash-#1#2} +% \end{macrocode} +% +% \Describe\cdash{} +% In its turn, |\russian@sh@emdash| simply calls for |\cdash| which has +% rich use. It analyses 3rd of 3 characters and calls for one of few +% predefined macros |\@Acdash|, |\@Bcdash|, |\@Ccdash|. +% \begin{macrocode} +\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} +% +% All these 3 internal macros call for |\cyrdash|, which type Cyrillic +% emdash, but put different spaces around the dash. +% +% |\@Acdash| is invoked by |"---|. It types Cyrillic emdash to be used +% inside a text and puts an unbreakable thin space before the dash if a +% \textit{space} is placed before |"---| in the source file; +% can be used after display maths formulae, formatted lists, enumerations, etc. +% \begin{macrocode} +\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi + \cyrdash\hskip.2em\ignorespaces}% +% \end{macrocode} +% +% |\@Bcdash| is invoked by |"--~|. It types Cyrillic emdash in compound +% names (like Mendeleev--Klapeiron); requires no space characters around and +% adds extra space after the dash. +% \begin{macrocode} +\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi + \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}% +% \end{macrocode} +% +% |\@Ccdash| is invoked by |"--*|. It denotes direct speech and adds small +% space after the dash. +% \begin{macrocode} +\def\@Ccdash{\leavevmode + \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}% +% \end{macrocode} +% +% \Describe\cyrdash{} +% The |\cyrdash| can be defined in a fontenc file as it is done for +% the \texttt{T2*} encodings. We provide fake definition of |\cyrdash| only if +% it is not defined there. +% +% Cyrillic \texttt{T2*} fonts contains shorter (Cyrillic) emdash. It can be +% typeset also via the ligature |---|. So, if |\laticencoding| differs from +% \texttt{T2*} switching of languages also changes the emdash length typed as +% ligature in the source file. +% +% \changes{russianb-1.2}{2011/10/20}{Warning is added if \cs{cyrdash} defined} +% \begin{macrocode} +\ifx\cyrdash\undefined + \def\cyrdash{\hbox to.8em{--\hss--}} + \PackageInfo{babel}{\string\cyrdash\space is defined} +\fi +% \end{macrocode} +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Add macro for thinspace between initials} +% +% Finally, we define a shorthand thin space to be placed between initials +% as in |D.",Mendeleev|. When used instead of |\,| as in |D.\,Mendeleev| +% it allows hyphenation in the next word. +% +% \begin{macrocode} +\declare@shorthand{russian}{",}{\nobreak\hskip.2em\ignorespaces} +% \end{macrocode} +% +% +% \subsection{Switching to and from Russian} +% +% Now we define additional macros used to reset current language to +% Russian and back +% to some original state. The package \pkg{babel} based on the assumption +% that original state is characterized by a Latin encoding. Previously, +% for back reset the macro |\OriginalTeX| was used, but now use |\latintext| +% for the same purpose. +% +% +% \subsubsection{Caption names} +% +% First, we define Russian equivalents for Russian caption names. +% +% \Describe\captionsrussian{} +% The macro |\captionsrussian| defines caption names used in the +% four standard document classes provided with \LaTeX. The macro |\cyr| +% activates Cyrillic encoding. It could be dropped if we would be sure +% that Russian captions are called only if current language is Russian. +% However, the macros such as |\Russian| do not conform to strict rules +% of the package \pkg{babel} as explained in the above. +% +% As of version v.1.2 we eliminate |\cyr...| macros from caption names +% if unicode engine is running. In the latter case, Cyrillic letters are typed +% in by their unicode code-points, the |^^^^abcd| notation is not used +% since it causes error at compilation time in case if \LaTeX\ is running +% and \texttt{utf8} input encoding is not declared. +% +% Note that two names for the Table of Contents can be used in Russian +% publications. For books (and reports) the second variant is +% appropriate, but for proceedings the first variant is preferred: +% +% \changes{russianb-1.2}{2011/10/20}{Unicode code-points added for LuaLaTeX} +% \begin{macrocode} +\if@uni@ode + %\captionsrussian@modern + \addto\captionsrussian{% + \def\prefacename{Предисловие}% + \def\refname{Список литературы}% + \def\abstractname{Аннотация}% + \def\bibname{Литература}% + \def\chaptername{Глава}% + \def\appendixname{Приложение}% + \@ifundefined{thechapter} + {\def\contentsname{Содержание}}% + {\def\contentsname{Оглавление}}% + \let\tocname=\contentsname + \def\listfigurename{Список иллюстраций}% + \def\listtablename{Список таблиц}% + \def\indexname{Предметный указатель}% + \def\authorname{Именной указатель}% + \def\figurename{Рис.}% + \def\tablename{Таблица}% + \def\partname{Часть}% + \def\enclname{вкл.}% + \def\ccname{исх.}% + \def\headtoname{вх.}% + \def\pagename{с.}% + \def\seename{см.}% + \def\alsoname{см.\ также}% + \def\proofname{Доказательство}% + \def\glossaryname{Словарь терминов}% + }% + \def\captionsrussian@ancient{% + \def\prefacename{Предисловіе}% + \def\refname{Примѣчанія}% + \def\abstractname{Аннотація}% + \def\bibname{Библіографія}% + \def\chaptername{Глава}% + \def\appendixname{Приложеніе}% + \@ifundefined{thechapter} + {\def\contentsname{Содержаніе}}% + {\def\contentsname{Оглавленіе}}% + \let\tocname=\contentsname + \def\listfigurename{Списокъ иллюстрацій}% + \def\listtablename{Списокъ таблицъ}% + \def\indexname{Предмѣтный указатель}% + \def\authorname{Именной указатель}% + \def\figurename{Рис.}% + \def\tablename{Таблица}% + \def\partname{Часть}% + \def\enclname{вкл.}% + \def\ccname{исх.}% + \def\headtoname{вх.}% + \def\pagename{с.}% + \def\seename{см.}% + \def\alsoname{см.~также}% + \def\proofname{Доказательство}% + \def\glossaryname{Словарь терминов}% + } +\else + %\def\captionsrussian@modern{% + \addto\captionsrussian{% + \def\prefacename{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyri\cyrs\cyrl\cyro\cyrv\cyri\cyre}}% + \def\refname{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk\ + \cyrl\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyrery}}% + \def\abstractname{% + {\cyr\CYRA\cyrn\cyrn\cyro\cyrt\cyra\cyrc\cyri\cyrya}}% + \def\bibname{% + {\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% + \def\chaptername{{\cyr\CYRG\cyrl\cyra\cyrv\cyra}}% + \def\appendixname{% + {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre}}% + \@ifundefined{thechapter}% + {\def\contentsname{% + {\cyr\CYRS\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}}% + {\def\contentsname{% + {\cyr\CYRO\cyrg\cyrl\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyre}}}% + \let\tocname=\contentsname + \def\listfigurename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk + \ \cyri\cyrl\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyri\cyrishrt}}% + \def\listtablename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk + \ \cyrt\cyra\cyrb\cyrl\cyri\cyrc}}% + \def\indexname{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyrm\cyre\cyrt\cyrn\cyrery\cyrishrt + \ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrsftsn}}% + \def\authorname{% + {\cyr\CYRI\cyrm\cyre\cyrn\cyrn\cyro\cyrishrt + \ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrsftsn}}% + \def\figurename{{\cyr\CYRR\cyri\cyrs.}}% + \def\tablename{{\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra}}% + \def\partname{{\cyr\CYRCH\cyra\cyrs\cyrt\cyrsftsn}}% + \def\enclname{{\cyr\cyrv\cyrk\cyrl.}}% + \def\ccname{{\cyr\cyri\cyrs\cyrh.}}% + \def\headtoname{{\cyr\cyrv\cyrh.}}% + \def\pagename{{\cyr\cyrs.}}% + \def\seename{{\cyr\cyrs\cyrm.}}% + \def\alsoname{{\cyr\cyrs\cyrm.\ \cyrt\cyra\cyrk\cyrzh\cyre}}% + \def\proofname{{\cyr\CYRD\cyro\cyrk\cyra\cyrz\cyra\cyrt + \cyre\cyrl\cyrsftsn\cyrs\cyrt\cyrv\cyro}}% + \def\glossaryname{{\cyr\CYRS\cyrl\cyro\cyrv\cyra\cyrr\cyrsftsn\ + \cyrt\cyre\cyrr\cyrm\cyri\cyrn\cyro\cyrv}}% + }% + \def\captionsrussian@ancient{% + \def\prefacename{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyri\cyrs\cyrl\cyro\cyrv\cyrii\cyre}}% + \def\refname{% + {\cyr\CYRP\cyrr\cyri\cyrm\cyryat\cyrch\cyra\cyrn\cyrii\cyrya}}% <-- Примѣчанія, нет \cyryat в кодировке T2* + \def\abstractname{% + {\cyr\CYRA\cyrn\cyrn\cyro\cyrt\cyra\cyrc\cyrii\cyrya}}% + \def\bibname{% + {\cyr\CYRB\cyri\cyrb\cyrl\cyrii\cyro\cyrg\cyrr\cyra\cyrf\cyrii\cyrya}}% <-- Библіографія + \def\chaptername{{\cyr\CYRG\cyrl\cyra\cyrv\cyra}}% + \def\appendixname{% + {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyrii\cyre}}% + \@ifundefined{thechapter}% + {\def\contentsname{% + {\cyr\CYRS\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyrii\cyre}}}% + {\def\contentsname{% + {\cyr\CYRO\cyrg\cyrl\cyra\cyrv\cyrl\cyre\cyrn\cyrii\cyre}}}% + \let\tocname=\contentsname + \def\listfigurename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk\cyrhrdsn\ + \cyri\cyrl\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyrii\cyrishrt}}% <-- Списокъ иллюстрацій + \def\listtablename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk\cyrhrdsn\ + \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyrhrdsn}}% <-- Списокъ таблицъ + \def\indexname{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyrm\cyryat\cyrt\cyrn\cyrery\cyrishrt\space + \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrsftsn}}% <-- Предмѣтный указатель, есть \cyryat в кодировке X2 + \def\authorname{% + {\cyr\CYRI\cyrm\cyre\cyrn\cyrn\cyro\cyrishrt\ + \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrsftsn}}% + \def\figurename{{\cyr\CYRR\cyri\cyrs.}}% + \def\tablename{{\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra}}% + \def\partname{{\cyr\CYRCH\cyra\cyrs\cyrt\cyrsftsn}}% + \def\enclname{{\cyr\cyrv\cyrk\cyrl.}}% + \def\ccname{{\cyr\cyri\cyrs\cyrh.}}% + \def\headtoname{{\cyr\cyrv\cyrh.}}% + \def\pagename{{\cyr\cyrs.}}% + \def\seename{{\cyr\cyrs\cyrm.}}% + \def\alsoname{{\cyr\cyrs\cyrm.\ \cyrt\cyra\cyrk\cyrzh\cyre}}% + \def\proofname{{\cyr\CYRD\cyro\cyrk\cyra\cyrz\cyra\cyrt + \cyre\cyrl\cyrsftsn\cyrs\cyrt\cyrv\cyro}}% + \def\glossaryname{{\cyr\CYRS\cyrl\cyro\cyrv\cyra\cyrr\cyrsftsn\ + \cyrt\cyre\cyrr\cyrm\cyri\cyrn\cyro\cyrv}}% <-- Needs translation + }% +\fi +% \end{macrocode} +% +% \subsubsection{Date in Russian} +% +% \Describe\daterussian{} +% The macro |\daterussian| is used to reset the macro |\today| in Russian. +% +% \changes{russianb-1.2}{2011/10/20}{Unicode code-points added for LuaLaTeX} +% \begin{macrocode} +\if@uni@ode + \addto\daterussian{% + \def\today{\number\day~\ifcase\month\or + января\or + февраля\or + марта\or + апреля\or + мая\or + июня\or + июля\or + августа\or + сентября\or + октября\or + ноября\or + декабря\fi + \space \number\year~г.}} + \def\daterussian@ancient{% + \def\today{\number\day~\ifcase\month\or% + января\or + февраля\or + марта\or + апреля\or + мая\or + іюня\or + іюля\or + августа\or + сентября\or + октября\or + ноября\or + декабря\fi% + \space \number\year~г.}} +\else + \def\daterussian{% + \def\today{\number\day~\ifcase\month\or + \cyrya\cyrn\cyrv\cyra\cyrr\cyrya\or + \cyrf\cyre\cyrv\cyrr\cyra\cyrl\cyrya\or + \cyrm\cyra\cyrr\cyrt\cyra\or + \cyra\cyrp\cyrr\cyre\cyrl\cyrya\or + \cyrm\cyra\cyrya\or + \cyrii\cyryu\cyrn\cyrya\or + \cyrii\cyryu\cyrl\cyrya\or + \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra\or + \cyrs\cyre\cyrn\cyrt\cyrya\cyrb\cyrr\cyrya\or + \cyro\cyrk\cyrt\cyrya\cyrb\cyrr\cyrya\or + \cyrn\cyro\cyrya\cyrb\cyrr\cyrya\or + \cyrd\cyre\cyrk\cyra\cyrb\cyrr\cyrya\fi + \space \number\year~\cyrg.}} + \def\daterussian@ancient{% + \def\today{\number\day~\ifcase\month\or + \cyrya\cyrn\cyrv\cyra\cyrr\cyrya\or + \cyrf\cyre\cyrv\cyrr\cyra\cyrl\cyrya\or + \cyrm\cyra\cyrr\cyrt\cyra\or + \cyra\cyrp\cyrr\cyre\cyrl\cyrya\or + \cyrm\cyra\cyrya\or + \cyri\cyryu\cyrn\cyrya\or + \cyri\cyryu\cyrl\cyrya\or + \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra\or + \cyrs\cyre\cyrn\cyrt\cyrya\cyrb\cyrr\cyrya\or + \cyro\cyrk\cyrt\cyrya\cyrb\cyrr\cyrya\or + \cyrn\cyro\cyrya\cyrb\cyrr\cyrya\or + \cyrd\cyre\cyrk\cyra\cyrb\cyrr\cyrya\fi + \space \number\year~\cyrg.}} +\fi +% \end{macrocode} +% +% \subsubsection{Hyphenation patterns} +% +% Russian hyphenation patterns are automatically activated every time +% Russian language is selected via |\selectlanguage|, |\foreignlanguage| +% or equivalent command. But we need to declare values of +% |\lefthyphenmin| and |\righthyphenmin|; both are set to~2. +% +% As of v.1.2 we removed a definition for |\englishhyphenmins|. It is +% not deal of \file{russianb.ldf}. +% +% \changes{russianb-1.1a}{1995/07/04}{use \cs{russianhyphenmins} to +% store the correct values} +% \changes{russianb-1.1m}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \changes{russianb-1.2}{2011/10/20}{\cs{englishhyphenmins} is removed} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +\providehyphenmins{russian}{\tw@\tw@} +% \end{macrocode} +% +% \subsubsection{Extra definitions} +% \label{sss:extra} +% +% \Describe\extrasrussian{} +% \DescribeOther\noextrasrussian{} +% The macro |\extrasrussian| performs extra definitions in addition to +% resetting the caption names and date. +% The macro |\noextrasrussian| is used to cancel the actions of +% |\extrasrussian|. +% +% \changes{russianb-1.1b}{1996/02/20}{Added switch to \texttt{LWN} +% encoding} +% +% First, we instruct \pkg{babel} to switch font encoding using earlier +% defined macros |\cyrillictext| and |\latintext|. +% +% \begin{macrocode} +\addto\extrasrussian{\cyrillictext} +\addto\noextrasrussian{\latintext} +% \end{macrocode} +% +% Second, we specify that the Russian group of shorthands should be used. +% +% \begin{macrocode} +\addto\extrasrussian{\languageshorthands{russian}} +\addto\extrasrussian{\bbl@activate{"}} +\addto\noextrasrussian{\bbl@deactivate{"}} +% \end{macrocode} +% +% Now the action |\extrasrussian| has to execute is to make sure that the +% command |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasrussian| will switch it off again. +% +% \begin{macrocode} +\addto\extrasrussian{\bbl@frenchspacing} +\addto\noextrasrussian{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% +% \subsection{Alphabetic counters} +% +% Do we need to reset |\@alph| and |\@Alph|? They are used in the +% \LaTeX\ core to define the macros |\alph| and |\Alph|, respectively, which +% type a counter with a corresponding letter of Latin alphabet. +% We just want to make sure that correct |\latinencoding| is used instead of +% |\latinencoding| to typeset the counter. Starting from v.1.2 we do not +% reset these macros since all Cyrillic encoding but \texttt{X2} do have +% Latin letters. When using the \texttt{X2} encoding user must himself +% take care about selecting correct encoding when he switches his keyboard. +% Our decision is motivated as follows. If selected Cyrillic font is visually +% different from Latin font, the macro |\@alph| and |\@Alph| will produce +% visually different output from surrounding text if they are used with +% Russian text, which is completely legitimate. +% +% Notice for commented code:\\ +% 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). +% +% Note added on 2013/03/22: |{\fontencoding{\latinencoding}\selectfont| +% rises an error with recent version of \pkg{microtype} package after the +% |\appendix| declaration (which resets |\thechapter| to |\@Alph\c@chapter}|). +% Most languages do not reset |\@alph| and |\@Alph| macros and only +% \pkg{ukrainian} and \pkg{bulgarian} add |\fontencoding| to |\@alph| and +% |\@Alph|. +% +% Since v.1.3 we do not reset |\@alph| and |\@Alph| here. +% Resetting |\fontencoding| in |\@alph| and |\@Alph| causes an error +% if the package |smartref| is loaded and a |\sref| occurs after the +% |\appendix| declaration which resets |\thechapter| to |\@Alph\c@chapter|. +% \changes{russianb-1.3}{2013/03/22}{Removed \cs{@alph} and \cs{@Alph}} +% +% \begin{macrocode} +%\def\@alph#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#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}}% +% \end{macrocode} +% +% We add new enumeration style for Russian manuscripts with +% Cyrillic letters. +% +% \Describe\Asbuk{} +% We begin by defining |\Asbuk| which works like |\Alph|, but produces +% (uppercase) Cyrillic letters instead of Latin ones. The letters YO, +% ISHRT, HRDSN, ERY, and SFTSN are skipped, as usual for such +% enumeration. +% +% \begin{macrocode} +\def\Asbuk#1{\expandafter\russian@Alph\csname c@#1\endcsname} +\if@uni@ode + \def\russian@Alph#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\russian@Alph#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\CYREREV\or\CYRYU\or + \CYRYA\else\@ctrerr\fi} +\fi +% \end{macrocode} +% +% \Describe\asbuk{} +% The macro |\asbuk| is similar to |\alph|; it produces lowercase +% Russian letters. +% +% \begin{macrocode} +\def\asbuk#1{\expandafter\russian@alph\csname c@#1\endcsname} +\if@uni@ode + \def\russian@alph#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\russian@alph#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\cyrerev\or\cyryu\or + \cyrya\else\@ctrerr\fi} +\fi +% \end{macrocode} +% +% Babel 3.9 has introduced a notion of a language attribute. +% An \Lopt{ancient} attribute changes default behavior, which +% uses modern Russian spelling, an activates an alternative set of +% captions and date macros suitable for typesetting ancient +% Slavonic and Church books. +% \begin{macrocode} +\bbl@declare@ttribute{russian}{ancient}{% + \PackageInfo{babel}{Russian attribute set to ancient}% + \let\captionsrussian=\captionsrussian@ancient + \let\daterussian=\daterussian@ancient +} +% \end{macrocode} +% We don't want for long internal macros to waste memory. So we declare +% them to be usable within the preamble only. +% \begin{macrocode} +\@onlypreamble\captionsrussian@ancient +\@onlypreamble\daterussian@ancient +% \end{macrocode} +% +% \subsection{Cyrillic math} +% +% For compatibility with older Russian packages we could define the |\No| +% macro. However the Russian number sign is now superseded with |\textnumero|. +% Moreover, it can be found of Russian keyboard. Therefore we discard |\No| +% since v.1.2. +% \begin{quote} +% \begin{verbatim} +%\DeclareRobustCommand{\No}{% +% \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi} +% \end{verbatim} +% \end{quote} +% +% +% As of version 1.2 the macros |\cyrmath..| are not supported any more. They +% requires package \pkg{textmath} which is not available now. Instead of +% |\cyrmath..| it is advised to use corresponding |\text..| commands; they +% do work in math mode. +% \begin{macrocode} +%\RequirePackage{textmath} +% \@ifundefined{sym\cyrillicencoding letters}{}{% +% \SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding +% \rmdefault\bfdefault\updefault +% \DeclareSymbolFontAlphabet\cyrmathrm{\cyrillicencoding letters} +% \end{macrocode} +% And we need few commands 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 +% +%\SetMathAlphabet\cyrmathsf{bold}\cyrillicencoding +% \sfdefault\bfdefault\updefault +%\SetMathAlphabet\cyrmathit{bold}\cyrillicencoding +% \rmdefault\bfdefault\itdefault +%} +% \end{macrocode} +% +% \Describe\sh{} +% \DescribeOther\ch{}% +% \DescribeOther\tg{}% +% \DescribeOther\ctg{}% +% \DescribeOther\arctg{}% +% \DescribeOther\arcctg{}% +% \DescribeOther\th{}% +% \DescribeOther\cth{}% +% \DescribeOther\cosec{}% +% We also define few math operator names according to Russian typesetting +% traditions. Some math functions in Russian math books have names +% different from English writings. For example, \texttt{sinh} in +% Russian is called \texttt{sh}. Special consideration needs the +% macro |\th| that conflicts with the text symbol |\th| +% defined in Latin~1 encoding: +% +% \changes{russianb-1.2}{2004/05/21}{Change definition of \cs{th} +% only for this language} +% \begin{macrocode} +\def\sh{\mathop{\operator@font sh}\nolimits} +\def\ch{\mathop{\operator@font ch}\nolimits} +\def\tg{\mathop{\operator@font tg}\nolimits} +\def\ctg{\mathop{\operator@font ctg}\nolimits} +\def\arctg{\mathop{\operator@font arctg}\nolimits} +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +\addto\extrasrussian{% + \babel@save{\th}% + \let\ltx@th\th + \def\th{\textormath{\ltx@th}% + {\mathop{\operator@font th}\nolimits}}% + } +\def\cth{\mathop{\operator@font cth}\nolimits} +\def\cosec{\mathop{\operator@font cosec}\nolimits} +% \end{macrocode} +% +% \Describe\nod{}% +% \DescribeOther\nok{}% +% \DescribeOther\prog{}% +% \DescribeOther\NOD{}% +% \DescribeOther\NOK{}% +% \DescribeOther\Prog{}% +% Finally, we define some rare Russian mathematical symbols: +% \begin{macrocode} +\def\Prob{\mathop{\kern\z@\mathsf{P}}\nolimits} +\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits} +\if@uni@ode + \def\nod{\mathop{\mathrm{н.о.д.}}\nolimits} + \def\nok{\mathop{\mathrm{н.о.к.}}\nolimits} + \def\NOD{\mathop{\mathrm{НОД}}\nolimits} + \def\NOK{\mathop{\mathrm{НОК}}\nolimits} + \def\proj{\mathop{\mathrm{Пр}}\nolimits} +\else + \def\nod{\mathop{\cyrmathrm{\cyrn.\cyro.\cyrd.}}\nolimits} + \def\nok{\mathop{\cyrmathrm{\cyrn.\cyro.\cyrk.}}\nolimits} + \def\NOD{\mathop{\cyrmathrm{\CYRN\CYRO\CYRD}}\nolimits} + \def\NOK{\mathop{\cyrmathrm{\CYRN\CYRO\CYRK}}\nolimits} + \def\Proj{\mathop{\cyrmathrm{\CYRP\cyrr}}\nolimits} +\fi +% \end{macrocode} +% +% \subsection{Final settings} +% +% The macro |\ldf@finish| does work needed +% at the end of each \file{.ldf} file. This +% includes resetting the category code of the \texttt{@}-sign, +% loading a local configuration file, and preparing the language +% to be activated at |\begin{document}| time. +% +% \changes{russianb-1.1d}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{russian} +% \end{macrocode} +%</code> +% +% \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 + +y diff --git a/Master/texmf-dist/source/generic/babel-russian/russianb.ins b/Master/texmf-dist/source/generic/babel-russian/russianb.ins new file mode 100644 index 00000000000..f5a6ac39507 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel-russian/russianb.ins @@ -0,0 +1,149 @@ +%% +%% 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 2011-2013 Igor A. Kotelnikov. +%% Copyright 1989-2012 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 Johannes Braams. +%% +%% 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/04/08} +\def\batchfile{russianb.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 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 Johannes Braams. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +The 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 2011-2013 Igor A. Kotelnikov. +Copyright 1989-2012 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 Javier Bezos. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +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 + +\usedir{tex/generic/babel} +\keepsilent + +\usepreamble\mainpreamble + +\generate{\file{russianb.ldf}{\from{russianb.dtx}{code}}} + +\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 *.fd} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput |