% \iffalse meta-comment % !TEX program = LuaLaTeX %<*internal> \iffalse % %<*readme> ---------------------------------------------------------------- Ukrainian language module for Babel, v1.3i Released under the LaTeX Project Public License v1.3c or later. See http://www.latex-project.org/lppl.txt The package provides support for use of Babel in documents written in Ukrainian. The support is adapted for use both under legacy TEX engines, and under X∃TEX and LuaTEX. Based on Russian language module v1.3i by Igor A. Kotelnikov . The Current Maintainer is Sergiy Ponomarenko . 1. INSTALLATION - unpack babel-ukrainian.zip - run "xelatex.exe ukraineb.dtx" (recommended) or "pdflatex.exe ukraineb.dtx"; run "tex.exe ukraineb.dtx" or "tex.exe ukraineb.ins", if you don't need documentation - move "ukraineb.ldf" to /tex/generic/babel/babel-ukrainian/ - move "ukraineb.pdf" and README to /doc/generic/babel-ukrainian/ - update filename base (see documentation for your TeX system) 2. USAGE Ukrainian language definition file can be used both with legacy 8-bit engines (such as latex.exe or pdflatex.exe) and Unicode compilers (xelatex.exe or lualatex.exe). The Unicode engines can be ran either in Unicode mode or 8-bit compatibility mode, which emulates the legacy engines. The two modes differ by a set of packages loaded in the preamble of a source TeX file. It is important to keep recommended order of the packages loaded, especially when running Unicode engines in a compatibility 8-bit mode. In the examples below, it is assumed that a source file has utf8 input encoding. 2.1. 8-bit mode 2.1.1 PDFLATeX, LaTeX \usepackage[T1,T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[english,ukrainian]{babel} 2.1.2 LuaLaTeX \usepackage[T1,T2A]{fontenc} \usepackage[lutf8]{luainputenc} \usepackage[english,ukrainian]{babel} 2.1.3 XeLaTeX \XeTeXinputencoding "bytes" \usepackage[utf8]{inputenc} \usepackage[T2A]{fontenc} \usepackage[english,ukrainian]{babel} 2.2 Unicode mode, LuaLaTeX or XeLaTeX \usepackage{fontspec} \defaultfontfeatures{Ligatures={TeX}} \setmainfont{CMU Serif} \setsansfont{CMU Sans Serif} \setmonofont{CMU Typewriter Text} \usepackage[english,ukrainian]{babel} Instead of the Computer Modern Unicode (CMU) fonts loaded in this example, you may try any True Type or Open Type font installed on your computer provided that that font came with Ukrainian letters. 3. DOCUMENTATION See ukraineb.pdf for more information. 4. KNOWN PROBLEMS Before switching from a legacy 8-bit engine (tex, pdftex) to an Unicode engine (xetex, luatex) and vise versa delete all .aux, .toc, .lot, .lof files as they might have stored incompatible internal encodings. 5. CHANGES 2017-06-08 version 1.3i * Corrections according to new standart 2017-06-06 version 1.3h * Initial version Original source: russianb.dtx, 2017-01-12 v1.3i Ukrainian support from the babel system. ---------------------------------------------------------------- % %<*internal> \fi \def\nameofplainTeX{plain} \ifx\fmtname\nameofplainTeX\else \expandafter\begingroup \fi % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble ---------------------------------------------------------------- Ukrainian Language Support for the Babel package E-mail: sergiy.ponomarenko@gmailcom Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt ---------------------------------------------------------------- \endpreamble \postamble ---------------------------------------------------------------- Copyright 2017 Sergiy М. Ponomarenko Copyright 2011-2017 Igor A. Kotelnikov. Copyright 2000 Aleksey Novodvorsky Copyright 1995-2008 Olga Lapko. Copyright 1989-2012 Johannes L. Braams. This file is a part of the Ukrainian-Babel package. It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or (at your option) any later version. The latest version of this license is in the file: http://www.latex-project.org/lppl.txt The package is "maintained" (as per LPPL maintenance status) by Sergiy М. Ponomarenko. The package consists of the file ukraineb.dtx and the derived files ukraineb.ins, ukraineb.ldf, ukraineb.pdf, README. ---------------------------------------------------------------- \endpostamble \usedir{tex/generic/babel/contrib} \generate{ \file{\jobname.ldf}{\from{\jobname.dtx}{code}} } % %\endbatchfile %<*internal> \usedir{source/latex/babel-ukrainian} \generate{ \file{\jobname.ins}{\from{\jobname.dtx}{install}} } \nopreamble\nopostamble \usedir{doc/latex/babel-ukrainian} \generate{ \file{README.}{\from{\jobname.dtx}{readme}} } \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else \expandafter\endgroup \fi % %<*code> \NeedsTeXFormat{LaTeX2e} %\ProvidesLanguage{\jobname}[2017/06/08 1.3i Ukrainian support for the Babel system] \ProvidesLanguage{ukraineb}[2017/06/08 1.3i Ukrainian support for the Babel system] % %<*driver> \documentclass[a4paper]{ltxdoc} %% %% This document should be compiled by %% XeLaTeX or LuaLaTex since some cyrillic %% glyphs are absent in T2* encodings used %% by LaTeX. %% \usepackage[% a4paper,% footskip=1cm,% headsep=0.3cm,% top=2cm, %поле сверху bottom=2cm, %поле снизу left=4cm, %поле ліворуч right=2cm, %поле праворуч ]{geometry} \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} %\setmonofont[Scale=MatchLowercase]{Courier New} %\setmonofont[Scale=MatchUppercase]{Courier New} %\setmonofont{Courier New} \else \usepackage[X2,T2A]{fontenc} \usepackage[utf8]{inputenc} \DeclareUnicodeCharacter{0462}{\CYRYAT} \DeclareTextSymbolDefault{\CYRYAT}{X2} \DeclareUnicodeCharacter{0463}{\cyryat} \DeclareTextSymbolDefault{\cyryat}{X2} %% serbian letter, looks as a ligature IE, not defined anywhare %\DeclareUnicodeCharacter{0464}{\CYRESHRT} % no surch cmd in X2 %% serbian letter, looks as a ligature ie, not defined anywhare %\DeclareUnicodeCharacter{0465}{\cyreshrt} % no surch cmd in X2 %% therefor, we substitute it with є (#0454, \cyrie) \DeclareUnicodeCharacter{0464}{\CYRIE}% %\DeclareTextSymbolDefault{\CYRIE}{X2} \DeclareUnicodeCharacter{0465}{\cyrie}% %\DeclareTextSymbolDefault{\cyrie}{X2} \fi \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[numbered]{hypdoc} \usepackage[colorlinks=true ,linkcolor=violet %theblue % ,filecolor=purple %thegreen% ,citecolor=teal %thegreen% ,pdfpagelayout=TwoPageRight% ,pdfauthor={Ponomarenko S.M. aka sergiokapone}% ,pdfdisplaydoctitle=true% ,pdfencoding=auto% ]{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}} % ==================================== \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 ,\Ukrainian,\cyrdash,\cdash ,\cyr,\cyrillictext,\textcyrillic,\cyrillicencoding ,\addto,\captionsukrainian,\dateukrainian,\noextrasukrainian,\extrasukrainian ,\languageattribute ,\Asbuk,\asbuk,\ch,\sh,\tg,\ctg,\arctg,\arcctg\,\th,\cth,\cosec ,\nod3,\nsk,\prog,\NSF\,\NSK,\Prog ,\dq,\Proj,\nsd,\NSD,\nsk,\NSK,\Prob,\Variance ,\XeTeXinputencoding } ,keywordstyle=[0]\color{thered} ,keywords=[1]{main,ukrainian,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 % ==================================== \EnableCrossrefs %\DisableCrossrefs % Say \DisableCrossrefs if index is ready \CodelineIndex % Index code by line number \RecordChanges % Gather update information %\PageIndex % Index code by page number % ==================================== \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi % %\GetFileInfo{\jobname.dtx} %\GetFileInfo{\jobname.ldf} % %\title{^^A % \textsf{Ukrainian} --- description text\thanks{^^A % This file describes version \fileversion, last revised \filedate.^^A % }^^A %} %\author{^^A % You\thanks{E-mail: you@your.domain}^^A %} % \title{The Ukrainian Language\\ % in the \babel\ system\\[0.5em] % \large Version \fileversion} % % \author{Sergiy M. Ponomarenko\footnote{E-mail: \href{mailto:sergiy.ponomarenko@gmail.com}{sergiy dot ponomarenko at gmail dot com}.}} % % \date{Released \filedate} % % \maketitle % % {\small\tableofcontents} % % % \section{The Ukrainian 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 Ukrainian Language Definition file % \file{\jobname.ldf} to be loaded by the \babel\ package with % the option \Lopt{ukrainian}. It's based on the Russian language definition % file \file{russianb.ldf} derived by Igor~A.~Kotelnikov. % % \section{Usage} % % Typesetting Ukrainian texts implies that a special input and output % encodings should be used. Input encodings are those which are used in source % (\file{.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. 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, Mac 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 Ukrainian), 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} % packages. They should be loaded before \pkg{babel}, for example, % \begin{verbatim} % \usepackage[T1,T2A]{fontenc} % \usepackage[utf8]{inputenc} % \usepackage[english,ukrainian]{babel} %\end{verbatim} % Some variations in the order of loading the packages are allowed in this case % but it is better to follow one and the same convention at all circumstances: % the \pkg{babel} package 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 Ukrainian support 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,ukrainian]{babel} %\end{verbatim} % 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 True Type % or Open Type fonts should be used for romanic, sans-serif and monospaced types. % The following example shows how to load Computer Modern Unicode (CMU) 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,ukrainian]{babel} %\end{verbatim} % 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,ukrainian]{babel} %\end{verbatim} % 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=ukrainian,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,ukrainian]{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; % % \noindent% % 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,ukrainian]{babel} %\end{verbatim} % %\section{User's commands} % % In a multilingual document, some typographic rules are language % dependent and should apply to the whole document. % % Regarding local typography, the macro |\selectlanguage{ukrainian}| % switches to the Ukrainian language, with the following effects: % \begin{enumerate} % \item Ukrainian hyphenation patterns are made active; % \item |\today| prints the date in Ukrainian; % \item the caption names are translated into Ukrainian % (\LaTeX{} only); % \item emdash typed by the ligature |---| might be 20\% shorter when Ukrainian % 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 Ukrainian 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:ukrainian-quote}. % \end{enumerate} % % Since Ukrainian has its own numbering system, \file{\jobname.ldf} adds macros % |\asbuk|\marg{counter} and |\Asbuk|\marg{counter} for formatting numbers appropriately the alphabetic % sequence in the Ukrainian 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 |\Ukrainian| defined as an alias for % |\selectlanguage{ukrainian}|, and its ``opponent'' |\English|, existed % in \file{\jobname.ldf} has been removed since the Ukrainian % 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 Ukrainian; it is essentially an alias for |\foreignlanguage{ukrainian}|\marg{text}. % % % \subsection{Active character} % % Table~\ref{tab:ukrainian-quote} shows macros and active string which can be % used to typeset various dashes and quotes. % In the Ukrainian 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{\jobname.ldf}\label{tab:ukrainian-quote}} % \medskip % \begin{tabular}{llp{7cm}} % \hline\hline\\[-0.5em] % |\glqq| & |"`| & % German opening double quote (looks like ,\kern-0.08em,). \\ % |\grqq| & |"'| & % German closing double quote (looks like ``). \\ % |\guillemotleft| & |"<| & % French opening double quote (looks like $<\!\!<$). \\ % |\guillemotright| & |">| & % French closing double quote (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 prints no hyphen sign % (used for compound words with hyphen, e.g. |x-""y|); % equivalent to |\babelhyphen{empty}| in \pkg{babel} 3.9. \\ % |\babelhyphen*{nobreak}| % & |"~| & 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 for denoting 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 Ukrainian 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 |\shorthandoff{"}| and the switched on again using % |\shorthandon{"}|. % % \subsection{Math commands} % % The \file{\filename} defines few macros that can be used independently % of current language. These are macros to be used in math mode to type % the names of trigonometric functions common for Ukrainian 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{\TeX{}nical details} % % The packages \pkg{inputenc} and \pkg{luainputenc} % make Cyrillic letters active so that a compiler converts them into % corresponding |\cyr...| macro at compilation time. % For example, Ukrainian letter `a' matches % macro |\cyra|, and capital Ukrainian letter `A' matches |\CYRA|. The % package \pkg{fontenc} then matches every macro |\cyr...| to corresponding % glyph in a font file depending on a 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. % % \section{Known problems} % % Before switching from a legacy 8-bit engine (tex, pdftex) to an Unicode % engine (xetex, luatex) and vise versa delete all |.aux|, |.toc|, |.lot|, % |.lof| files as they might have stored incompatible internal encodings. % % %\StopEventually{^^A % \setlength{\postmulticols}{100pt} % \PrintChanges % \PrintIndex %} % %\iffalse %<*code> %\fi % % \section{Implementation} % \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. % % \begin{macrocode} \LdfInit{ukrainian}{captionsukrainian} % \end{macrocode} % % First, we check if Lua\LaTeX\ or Xe\LaTeX\ is running. If so, we set % boolean key |\if@ukr@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. % % \begin{macrocode} \ifdefined\if@ukr@uni@ode \PackageError{babel}{if@ukr@uni@ode already defined.\MessageBreak Please contact author of ukraineb.ldf} \relax \fi \newif\if@ukr@uni@ode \ifdefined\luatexversion \@ukr@uni@odetrue \else \ifdefined\XeTeXrevision \@ukr@uni@odetrue \fi\fi % \end{macrocode} % % Check if hyphenation patterns for the Ukrainian language have been % loaded in \file{language.dat}. Namely, we check for the existence of % |\l@ukrainian|. If it is not defined, we declare Ukrainian as dialect % for the default language number 0 which almost for sure is English. % % \begin{macrocode} \ifx\l@ukrainian\@undefined \@nopatterns{Ukrainian} \adddialect\l@ukrainian0 \fi % \end{macrocode} % Now |\l@ukrainian| 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{ukraineb.ldf} ignores their effect and tries to provide some % reasonable settings. In particular, \texttt{T2A} will be selected for % Ukrainian language if \LaTeX\ is running but \texttt{EU1} in case of % Xe\LaTeX\ and \texttt{EU2} in case of Lua\LaTeX. % % % 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. % % % \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 Ukrainian 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 Ukrainian 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. % % \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@ukr@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. % % \begin{macrocode} \ifdefined\cyrillicencoding \else \if@ukr@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{ukrainian}|; the latter rises an % error if |\cyrillicencoding| would not be defined by that time. % \begin{macrocode} \AtBeginDocument{\@setcyrillicencoding} \fi % \end{macrocode} % % \Describe\Ukrainian{} % \DescribeOther\cyr{} % \DescribeOther\cyrillictext{} % For the sake of backward compatibility we keep the macro |\Ukrainian| % but redefine its meaning; now |\Ukrainian| is simply an alias for % |\selectlanguage{ukrainian}|. % % We define |\cyrillictext| and its alias |\cyr| but remove another alias % |\Ukr|; 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 |\Ukrainian| or the % command |\foreignlanguage| defined in the \pkg{babel} core; their % functionality is similar to |\selectlanguage{ukrainian}| but they did not % switch caption names, dates and shorthands. % % \begin{macrocode} \DeclareRobustCommand{\Ukrainian}{\selectlanguage{\ukrainian}} \DeclareRobustCommand{\cyrillictext}{% \fontencoding\cyrillicencoding\selectfont \let\encodingdefault\cyrillicencoding \expandafter\set@hyphenmins\ukrainianhyphenmins \language\l@ukrainian}% \let\cyr\cyrillictext % \end{macrocode} % % \textsc{Next part of code should be moved to \texttt{X2enc.def}, % \texttt{X2enc.dfu}, if needed.} % 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{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} % % % 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. % % \begin{macrocode} %\DeclareRobustCommand{\latintext}{% % \fontencoding{\latinencoding}\selectfont % \def\encodingdefault{\latinencoding}} %\let\lat\latintext % \end{macrocode} % % \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{ukrainian}|. % % \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 Ukrainian version of Windows ANSI encoding which is almost % equivalent to \texttt{cp1251}. % % \begin{macrocode} \@ifpackageloaded{inputenc}{% \if@ukr@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 Ukrainian language} \fi\fi\fi %\fi } % \end{macrocode} % % % \subsection{Shorthands} % % The double quote character \texttt{"} is declared to be active in % Ukrainian language. % % \begin{macrocode} \initiate@active@char{"} % \end{macrocode} % % \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:ukrainian-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. 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. % % 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, we define |"<| and |">| directly % through |\guillemotleft| and |\guillemotrigh|. % % \begin{macrocode} \declare@shorthand{ukrainian}{"`}{\quotedblbase} \declare@shorthand{ukrainian}{"'}{\textquotedblleft} \declare@shorthand{ukrainian}{"<}{\guillemotleft} \declare@shorthand{ukrainian}{">}{\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:ukrainian-quote}. % % \begin{macrocode} \declare@shorthand{ukrainian}{""}{\hskip\z@skip} \declare@shorthand{ukrainian}{"~}{\textormath{\leavevmode\hbox{-}}{-}} \declare@shorthand{ukrainian}{"=}{\nobreak-\hskip\z@skip} \declare@shorthand{ukrainian}{"|}{% \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 |\ukrainian@sh@next| and finally call for |\ukrainian@sh@tmp|. % % \begin{macrocode} \declare@shorthand{ukrainian}{"-}{% \def\ukrainian@sh@tmp{% \if\ukrainian@sh@next-\expandafter\ukrainian@sh@emdash \else\expandafter\ukrainian@sh@hyphen\fi}% \futurelet\ukrainian@sh@next\ukrainian@sh@tmp} % \end{macrocode} % Two macros |\ukrainian@sh@hyphen| and |\ukrainian@sh@emdash| called by % |\ukrainian@sh@tmp| are defined below. The second of % them has two parameters since it must gobble next two hyphen signs. % \begin{macrocode} \def\ukrainian@sh@hyphen{\nobreak\-\bbl@allowhyphens} \def\ukrainian@sh@emdash#1#2{\cdash-#1#2} % \end{macrocode} % % \Describe\cdash{} % In its turn, |\ukrainian@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. % % \begin{macrocode} %\ifx\cyrdash\undefined % \def\cyrdash{\hbox to.8em{--\hss--}} % \PackageInfo{babel}{\string\cyrdash\space is defined} %\fi \ProvideTextCommandDefault{\cyrdash}{\iflanguage{ukrainian}% {\hbox to.8em{--\hss--}}{\textemdash}} % \end{macrocode} % % % 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{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces} % \end{macrocode} % % % \subsection{Switching to and from Ukrainian} % % Now we define additional macros used to reset current language to % Ukrainian 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 Ukrainian equivalents for Ukrainian caption names. % % \Describe\captionsukrainian{} % The macro |\captionsukrainian| 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 Ukrainian captions are called only if current language is Ukrainian. % However, the macros such as |\Ukrainian| do not conform to strict rules % of the package \pkg{babel} as explained in the above. % % 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. % % \begin{macrocode} \if@ukr@uni@ode %\captionsukrainian \addto\captionsukrainian{% \def\prefacename{Вступ}% [babel] \def\refname{Література}% [only article] \def\abstractname{Анотація}% [only article, report] \def\bibname{Бібліоґрафія}% [only book, report] \def\chaptername{Глава}% [only book, report] \def\appendixname{Додаток}% \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{с.}% [letter] \def\seename{див.}% \def\alsoname{див.\ також}% \def\proofname{Доведення}% [amsthm] \def\glossaryname{Словник термінів}% \def\acronymname{Абревіатури}% [glossaries] {Acronyms} \def\lstlistingname{Лістинг}% [listings] (the environment) {Listing} \def\lstlistlistingname{Лістинги}% [listings] (the "List of") {Listings} \def\notesname{Нотатки}% [endnotes] {Notes} }% % \end{macrocode} % Additional definitions for the package \pkg{nomencl}: % \begin{macrocode} %% ========================================= %% nomencl \ifdefined\nomname \addto\captionsukrainian{% \def\nomname{Позначення}% \def\eqdeclaration#1{, див.\nobreakspace(#1)}% \def\pagedeclaration#1{, стор.\nobreakspace#1}% }% \fi % \end{macrocode} % Additional captions for the \cls{revtex} class. % \begin{macrocode} %% ========================================= %% RevTeX4 & RevTeX4-1 %%\@ifclassloaded{revtex4-1} %%{} %%{}% %\@ifclassloaded{revtex4-1} %{% \ifnum\@ifclassloaded{revtex4}{1}{\@ifclassloaded{revtex4-1}{1}{0}}>0 \addto\captionsukrainian{% \def\lofname{\listfigurename} \def\lotname{\listtablename} \def\figuresname{Рисунки}%{Figures}% \def\tablesname{Таблиці}%{Tables}% \def\appendixesname{Додатки}%{Appendixes}% \def\acknowledgmentsname{Подяки}%{Acknowledgments} \def\andname{та}%{and} \def\@pacs@name{PACS коди: }%{PACS numbers: }% \def\@keys@name{Ключові слова: }%{Keywords: }% \def\Dated@name{Дата: }%{Dated: }% \def\Received@name{Отримано }%{Received }% \def\Revised@name{Виправлена версія }%{Revised }% \def\Accepted@name{Прийнято }%{Accepted }% \def\Published@name{Опубліковано }%{Published }% }% %}{}% \fi % \end{macrocode} % \begin{macrocode} \else %\captionsukrainian \addto\captionsukrainian{% \def\prefacename{{\cyr\CYRV\cyrs\cyrt\cyru\cyrp}}% \def\refname{% {\cyr\CYRL\cyrii\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% \def\abstractname{% {\cyr\CYRA\cyrn\cyro\cyrt\cyra\cyrc\cyrii\cyrya}}% \def\bibname{% {\cyr\CYRB\cyrii\cyrb\cyrl\cyrii\cyro\cyrgup\cyrr\cyra\cyrf\cyrii\cyrya}}% \def\chaptername{{\cyr\CYRR\cyro\cyrz\cyrd\cyrii\cyrl}}% \def\appendixname{{\cyr\CYRD\cyro\cyrd\cyra\cyrt\cyro\cyrk}}% \def\contentsname{{\cyr\CYRZ\cyrm\cyrii\cyrs\cyrt}}% \let\tocname=\contentsname \def\listfigurename{{\cyr\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk \ \cyrii\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyrii\cyrishrt}}% \def\listtablename{{\cyr\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk \ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyrsftsn}}% \def\indexname{{\cyr\CYRP\cyrr\cyre\cyrd\cyrm\cyre\cyrt\cyrn\cyri\cyrishrt \ \cyrp\cyro\cyrk\cyra\cyrzh\cyrch\cyri\cyrk}}% \def\authorname{{\cyr\CYRII\cyrm\cyre\cyrn\cyrn\cyri\cyrishrt \ \cyrp\cyro\cyrk\cyra\cyrzh\cyrch\cyri\cyrk}}% \def\figurename{{\cyr\CYRR\cyri\cyrs.}}% \def\tablename{{\cyr\CYRT\cyra\cyrb\cyrl.}}% \def\partname{{\cyr\CYRCH\cyra\cyrs\cyrt\cyri\cyrn\cyra}}% \def\enclname{{\cyr\cyrv\cyrk\cyrl\cyra\cyrd\cyrk\cyra}}% \def\ccname{{\cyr\cyrk\cyro\cyrp\cyrii\cyrya}}% \def\headtoname{{\cyr\cyrv\cyrh.}}% \def\pagename{{\cyr\cyrs.}}% \def\seename{{\cyr\cyrd\cyri\cyrv.}}% \def\alsoname{{\cyr\cyrd\cyri\cyrv.\ \cyrt\cyra\cyrk\cyro\cyrzh}} \def\proofname{{\cyr\CYRD\cyro\cyrv\cyre\cyrd\cyre\cyrn\cyrn\cyrya}}% \def\glossaryname{{\cyr\CYRS\cyrl\cyro\cyrv\cyrn\cyri\cyrk\ % \cyrt\cyre\cyrr\cyrm\cyrii\cyrn\cyrii\cyrv}}% \def\nomname{\CYRP\cyro\cyrz\cyrn\cyra\cyrch\cyre\cyrn\cyrn\cyrya}% \def\notesname{\CYRN\cyro\cyrt\cyra\cyrt\cyrk\cyri}% }% %% ========================================= %% RevTeX4 & RevTeX4-1 \ifnum \@ifclassloaded{revtex4}{1}{\@ifclassloaded{revtex4-1}{1}{0}}>0 \addto\captionsukrainian{% \def\lofname{\listfigurename} \def\lotname{\listtablename} \def\figuresname{\CYRR\cyri\cyrs\cyru\cyrn\cyrk\cyri}%{Figures}% \def\tablesname{\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyrii}%{Tables}% \def\appendixesname{\CYRD\cyro\cyrd\cyra\cyrt\cyrk\cyri}%{Appendixes}% \def\acknowledgmentsname{\CYRP\cyro\cyrd\cyrya\cyrk\cyri}%{Acknowledgments} \def\andname{\cyrt\cyra}%{and} \def\@pacs@name{PACS \cyrk\cyro\cyrd\cyri: }%{PACS numbers: }% \def\@keys@name{\CYRK\cyrl\cyryu\cyrch\cyro\cyrv\cyrii \ \cyrs\cyrl\cyro\cyrv\cyra: }%{Keywords: }% \def\Dated@name{\CYRD\cyra\cyrt\cyra: }%{Dated: }% \def\Received@name{\CYRO\cyrt\cyrr\cyri\cyrm\cyra\cyrn\cyro }%{Received }% \def\Revised@name{\CYRV\cyri\cyrp\cyrr\cyra\cyrv\cyrl\cyre\cyrn\cyro }%{Revised }% \def\Accepted@name{\CYRP\cyrr\cyri\cyrishrt\cyrn\cyrya\cyrt\cyro }%{Accepted }% \def\Published@name{\CYRO\cyrp\cyru\cyrb\cyrl\cyrii\cyrk\cyro\cyrv\cyra\cyrn\cyro }%{Published }% }% \fi \fi % \end{macrocode} % \subsubsection{Date in Ukrainian} % % \Describe\dateukrainian{} % The macro |\dateukrainian| is used to reset the macro |\today| in Ukrainian. % % \begin{macrocode} \if@ukr@uni@ode \addto\dateukrainian{% \def\today{\number\day~\ifcase\month\or січня\or лютого\or березня\or квітня\or травня\or червня\or липня\or серпня\or вересня\or жовтня\or листопада\or грудня\fi \space \number\year~р.}} \else \def\dateukrainian{% \def\today{\number\day~\ifcase\month\or \cyrs\cyrii\cyrch\cyrn\cyrya\or \cyrl\cyryu\cyrt\cyro\cyrg\cyro\or \cyrb\cyre\cyrr\cyre\cyrz\cyrn\cyrya\or \cyrk\cyrv\cyrii\cyrt\cyrn\cyrya\or \cyrt\cyrr\cyra\cyrv\cyrn\cyrya\or \cyrch\cyre\cyrr\cyrv\cyrn\cyrya\or \cyrl\cyri\cyrp\cyrn\cyrya\or \cyrs\cyre\cyrr\cyrp\cyrn\cyrya\or \cyrv\cyre\cyrr\cyre\cyrs\cyrn\cyrya\or \cyrzh\cyro\cyrv\cyrt\cyrn\cyrya\or \cyrl\cyri\cyrs\cyrt\cyro\cyrp\cyra\cyrd\cyra\or \cyrg\cyrr\cyru\cyrd\cyrn\cyrya\fi \space\number\year~\cyrr.}} \fi % \end{macrocode} % % \subsubsection{Hyphenation patterns} % % Ukrainian hyphenation patterns are automatically activated every time % Ukrainian language is selected via |\selectlanguage|, |\foreignlanguage| % or equivalent command. But we need to declare values of % |\lefthyphenmin| and |\righthyphenmin|; both are set to~2. % % % \begin{macrocode} \providehyphenmins{\CurrentOption}{\tw@\tw@} \providehyphenmins{ukrainian}{\tw@\tw@} % \end{macrocode} % % \subsubsection{Extra definitions\label{sss:extra}} % % \Describe\extrasukrainian{} % \DescribeOther\noextrasukrainian{} % The macro |\extrasukrainian| performs extra definitions in addition to % resetting the caption names and date. % The macro |\noextrasukrainian| is used to cancel the actions of % |\extrasukrainian|. % % % First, we instruct \pkg{babel} to switch font encoding using earlier % defined macros |\cyrillictext| and |\latintext|. % % \begin{macrocode} \addto\extrasukrainian{\cyrillictext} \addto\noextrasukrainian{\latintext} % \end{macrocode} % % Second, we specify that the Ukrainian group of shorthands should be used. % % \begin{macrocode} \addto\extrasukrainian{\languageshorthands{ukrainian}} \addto\extrasukrainian{\bbl@activate{"}} \addto\noextrasukrainian{\bbl@deactivate{"}} % \end{macrocode} % % Now the action |\extrasukrainian| has to execute is to make sure that the % command |\frenchspacing| is in effect. If this is not the case the % execution of |\noextrasukrainian| will switch it off again. % % \begin{macrocode} \addto\extrasukrainian{\bbl@frenchspacing} \addto\noextrasukrainian{\bbl@nonfrenchspacing} % \end{macrocode} % % \subsection{Alphabetic counters} % % % Macro |\@alph| and |\@Alph| did not reseted. % % \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 Ukrainian manuscripts with % Cyrillic letters. % % \Describe\Asbuk{} % Macro |\Asbuk| which works like |\Alph|, but produces % (uppercase) Cyrillic letters instead of Latin ones. The letters Ґ, Є, З, І, Ї, Й, О, Ч, Ь, % are skipped for such enumeration (see\href{http://www.uintei.kiev.ua/readarticle.php?article_id=151}{ДСТУ 3008:2015}). % % \begin{macrocode} \def\Asbuk#1{\expandafter\ukrainian@Alph\csname c@#1\endcsname} \if@ukr@uni@ode \def\ukrainian@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 Я\else\@ctrerr\fi} \else \def\ukrainian@Alph#1{\ifcase#1\or \CYRA\or\CYRB\or\CYRV\or\CYRG\or\CYRD\or\CYRE\or\CYRZH\or \CYRI\or\CYRK\or\CYRL\or\CYRM\or\CYRN\or\CYRP\or\CYRR\or \CYRS\or\CYRT\or\CYRU\or\CYRF\or\CYRH\or\CYRC\or\CYRSH\or \CYRSHCH\or\CYRYU\or\CYRYA\else\@ctrerr\fi} \fi % \end{macrocode} % % \Describe\asbuk{} % The macro |\asbuk| is similar to |\alph|; it produces lowercase % Cyrillic letters. The lowercase letters ґ, є, з, і, ї, й, о, ч, ь, % are also skipped such enumeration (see \href{http://www.uintei.kiev.ua/readarticle.php?article_id=151}{ДСТУ 3008:2015}). % % \begin{macrocode} \def\asbuk#1{\expandafter\ukrainian@alph\csname c@#1\endcsname} \if@ukr@uni@ode \def\ukrainian@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 я\else\@ctrerr\fi} \else \def\ukrainian@alph#1{\ifcase#1\or \cyra\or\cyrb\or\cyrv\or\cyrg\or\cyrd\or\cyre\or\cyrzh\or \cyri\or\cyrk\or\cyrl\or\cyrm\or\cyrn\or\cyrp\or\cyrr\or \cyrs\or\cyrt\or\cyru\or\cyrf\or\cyrh\or\cyrc\or\cyrsh\or \cyrshch\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 Ukrainian spelling, an activates an alternative set of % captions and date macros suitable for typesetting ancient % Slavonic and Church books. % \begin{macrocode} \bbl@declare@ttribute{ukrainian}{ancient}{% \PackageInfo{babel}{ukrainian attribute set to ancient}% \let\captionsukrainian=\captionsukrainian@ancient \let\dateukrainian=\dateukrainian@ancient } % \end{macrocode} % % \subsection{Cyrillic math} % % For compatibility with older Ukrainian packages we could define the |\No| % macro. However the Ukrainian number sign is now superseded with |\textnumero|. % Moreover, it can be found on the keyboard. Therefore we discard |\No|. % \begin{macrocode} %\DeclareRobustCommand{\No}{% % \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi} % \end{macrocode} % % % 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 Ukrainian typesetting % traditions. Some math functions in Ukrainian math books have names % different from English writings. For example, \texttt{sinh} in % Ukrainian is called \texttt{sh}. Special consideration needs the % macro |\th| that conflicts with the text symbol |\th| % defined in Latin~1 encoding: % % \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\extrasukrainian{% \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} % % \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. % % \begin{macrocode} \ldf@finish{ukrainian} % \end{macrocode} % %\iffalse % %\fi % \CheckSum{1377} %\Finale