From ab4c870dff9724b8ea31669dc8216c2f3c34a557 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 13 Jun 2017 21:01:20 +0000
Subject: datetime2-ukrainian (13jun17)

git-svn-id: svn://tug.org/texlive/trunk@44588 c570f23f-e606-0410-a88d-b1316a301751
---
 .../datetime2-ukrainian/datetime2-ukrainian.dtx    | 865 +++++++++++++++++----
 1 file changed, 730 insertions(+), 135 deletions(-)

(limited to 'Master/texmf-dist/source/latex/datetime2-ukrainian/datetime2-ukrainian.dtx')

diff --git a/Master/texmf-dist/source/latex/datetime2-ukrainian/datetime2-ukrainian.dtx b/Master/texmf-dist/source/latex/datetime2-ukrainian/datetime2-ukrainian.dtx
index a867baee52c..436413b047f 100644
--- a/Master/texmf-dist/source/latex/datetime2-ukrainian/datetime2-ukrainian.dtx
+++ b/Master/texmf-dist/source/latex/datetime2-ukrainian/datetime2-ukrainian.dtx
@@ -1,46 +1,274 @@
+% \iffalse meta-comment
 % !TeX program = xelatex
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+----------------------------------------------------------------
+
+Ukrainian Language Module for datetime2 Package
+
+Author: Nicola L. C. Talbot (inactive)
+Current maintainer: Sergiy M. Ponomarenko <sergiy.ponomarenko@gmail.com>.
+
+Licence: LPPL
+
+Required Packages: tracklang
+
+
+1. INSTALLATION
+
+xelatex datetime2-ukrainian.ins
+
+Move all *.ldf files to
+TEXMF/tex/latex/datetime2-ukrainian/
+
+2. USAGE
+
+2.1.1 PDFLATeX, LaTeX
+    \documentclass{article}
+    \usepackage[ukrainian]{datetime2}
+    \begin{document}
+        \today
+    \end{document}
+
+    \documentclass[ukrainian]{article}
+    \usepackage{babel}
+    \usepackage[useregional]{datetime2}
+    \begin{document}
+        \today
+    \end{document}
+
+2.1.2 Lua(Xe)LaTeX
+
+    \documentclass{article}
+    \usepackage{polyglossia}
+    \setmainlanguage{ukrainian}
+    \usepackage[ukrainian]{datetime2}
+    \begin{document}
+       \today
+    \end{document}
+
+3. DOCUMENTATION
+
+See datetime2-ukrainian.pdf for more information.
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that license.
+
+----------------------------------------------------------------
+%</readme>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+  \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+----------------------------------------------------------------
+ datetime2-ukrainian.dtx
+ Copyright 2015 Nicola Talbot
+           2017 Sergiy M. Ponomarenko
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license of (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 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `inactive'.
+
+ 
+ This work consists of the files datetime2-ukrainian.dtx 
+                                 datetime2-ukrainian.ins 
+                                 datetime2-ukrainian-utf8.ldf, 
+                                 datetime2-ukrainian-ascii.ldf
+                                 datetime2-ukrainian.ldf.
+----------------------------------------------------------------
+
+\endpostamble
+
+\usedir{tex/latex/datetime2-ukrainian}
+\askforoverwritefalse
+
+\generate
+{%
+  \file
+  {datetime2-ukrainian-utf8.ldf}%
+  {%
+   \usepreamble\defaultpreamble
+   \usepostamble\defaultpostamble
+   \from{datetime2-ukrainian.dtx}{datetime2-ukrainian-utf8.ldf,package}%
+  }%
+}
+
+\generate
+{%
+  \file
+  {datetime2-ukrainian-ascii.ldf}%
+  {%
+   \usepreamble\defaultpreamble
+   \usepostamble\defaultpostamble
+   \from{datetime2-ukrainian.dtx}{datetime2-ukrainian-ascii.ldf,package}%
+  }%
+}
+
+\generate
+{%
+  \file
+  {datetime2-ukrainian.ldf}%
+  {%
+   \usepreamble\defaultpreamble
+   \usepostamble\defaultpostamble
+   \from{datetime2-ukrainian.dtx}{datetime2-ukrainian.ldf,package}%
+  }%
+}
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\usedir{source/latex/democls}
+\generate{
+  \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+\usedir{doc/latex/democls}
+\generate{
+  \file{README.md}{\from{\jobname.dtx}{readme}}
+}
+\ifx\fmtname\nameofplainTeX
+  \expandafter\endbatchfile
+\else
+  \expandafter\endgroup
+\fi
+%</internal>
 
-%\iffalse
-%<*package>
-%% \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         \~}
-%</package>
-%\fi
-% \iffalse
-% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2015 Nicola Talbot, all rights reserved.
-% (New maintainer add relevant lines here.)
-% \fi
-% \iffalse
 %<*driver>
 \documentclass{ltxdoc}
+%%
+%% This document should be compiled by
+%% XeLaTeX or LuaLaTex
+%% 
+\usepackage[%
+    a4paper,%
+    footskip=1cm,%
+    headsep=0.3cm,% 
+    top=2cm, 
+    bottom=2cm, 
+    left=6cm,
+    right=2cm, 
+    ]{geometry}
 
-\usepackage{alltt}
-\usepackage{graphicx}
 \usepackage{fontspec}
+\defaultfontfeatures{Ligatures={TeX}}
+\setmainfont{CMU Serif}
+\setsansfont{CMU Sans Serif}
+\setmonofont{CMU Typewriter Text}
+
+\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}
+% ====================================
+
+% --------------------------------------------------
+\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
+         ,\ch,\sh,\tg,\ctg,\arctg,\arcctg\,\th,\cth,\cosec
+         ,\dq
+         ,\XeTeXinputencoding
+         ,\setmainlanguage
+         ,\setotherlanguage
+        }
+        ,keywordstyle=[0]\color{thered}
+        ,keywords=[1]{main,ukrainian,english,german,frenchb
+         ,shorthands,extrasenglish
+         ,stringprocess,afterextras
+         ,soft,empty,nobreak,hard
+         ,Renderer,Ligatures
+         ,T1,T2A,lutf8,utf8
+         ,fontspec,babel,inputenc,fontenc,useregional
+         },
+        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
+% ====================================
+\usepackage{alltt}
+
+
 \usepackage[colorlinks,
             bookmarks,
             hyperindex=false,
-            pdfauthor={Nicola L.C. Talbot},
+            pdfauthor={Sergiy M. Ponomarenko},
             pdftitle={datetime2.sty Ukrainian Module}]{hyperref}
 
-\newfontfamily\cyrillicfont{CMU Serif}
-\setmonofont{CMU Typewriter Text}
-
-\CheckSum{1139}
 
 \renewcommand*{\usage}[1]{\hyperpage{#1}}
 \renewcommand*{\main}[1]{\hyperpage{#1}}
@@ -58,50 +286,36 @@
 \DocInput{datetime2-ukrainian.dtx}
 \end{document}
 %</driver>
-%\fi
+% \fi
+%
+%
+% \GetFileInfo{\jobname.dtx}
+%
+% \def\fileversion{1.2}
+% \def\filedate{2017/06/13}
+%
 %
 %\MakeShortVerb{"}
 %
-%\title{Ukrainian Module for datetime2 Package}
-%\author{Nicola L. C. Talbot (inactive)\\ Sergiy M. Ponomarenko}
-%\date{2017-06-11 (v1.1)}
+%\title{\bfseries Ukrainian Module for datetime2 Package}
+%\author{Nicola L. C. Talbot \and Sergiy M. Ponomarenko}
+%\date{2017/06/13 (1.2)}
 %\maketitle
-%
-%This module is currently unmaintained and may be subject to change.
-%If you want to volunteer to take over maintanance, contact me at
-%\url{http://www.dickimaw-books.com/contact.html}
+%\tableofcontents
 %
 %\begin{abstract}
-%This is the Ukrainian language module for the \sty{datetime2}
-%package. If you want to use the settings in this module you must
-%install it in addition to installing \sty{datetime2}. If you use
-%\sty{babel} or \sty{polyglossia}, you will need this module to
-%prevent them from redefining \cs{today}. The \sty{datetime2}
+% This is the Ukrainian language module for the \sty{datetime2}
+% package. If you want to use the settings in this module you must
+% install it in addition to installing \sty{datetime2}. If you use
+% \sty{babel} or \sty{polyglossia}, you will need this module to
+% prevent them from redefining \cs{today}. The \sty{datetime2}
 % \opt{useregional} setting must be set to "text" or "numeric"
 % for the language styles to be set.
 % Alternatively, you can set the style in the document using
-% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
+% \cs{DTMsetstyle}, but this may be changed by \cs{dateukrainian}
 % depending on the value of the \opt{useregional} setting.
 %\end{abstract}
 %
-%I've copied the date style from \texttt{babel-ukrainian}'s \cs{today}.
-%
-%I don't know if these settings are correct as I can't speak Ukrainian.
-%In particular, I don't know if the "ukrainian" time style is
-%correct. Currently this just uses the "default" time style. Please
-%be aware that this may change. Whoever takes over maintanance
-%of this module may can change it as appropriate.
-%
-%The new maintainer should add the line:
-%\begin{verbatim}
-% The Current Maintainer of this work is Name.
-%\end{verbatim}
-%to the preamble part in \texttt{datetime2-ukrainian.ins} where Name
-%is the name of the maintainer(s) and replace
-%the `inactive' status to `maintained'.
-%
-%Currently there is only a regionless style.
-%
 %\StopEventually{%
 %\clearpage
 %\phantomsection
@@ -109,21 +323,85 @@
 %\PrintChanges
 %\addcontentsline{toc}{section}{\indexname}%
 %\PrintIndex}
-%\section{The Code}
+% \section{Usage}
+%
+% \subsection{\LaTeX}
+%
+% When user's document is compiled with \texttt{latex.exe} or \texttt{pdflatex.exe},
+% recommended set of packages  includes the \texttt{inputenc} and \texttt{fontenc}
+% packages. 
+% 
+%
+% \begin{verbatim}
+%    \usepackage[T1,T2A]{fontenc}
+%    \usepackage[utf8]{inputenc}
+%    \usepackage[english,ukrainian]{babel}
+%    \usepackage[useregional]{datetime2}
+% \end{verbatim}
+%
+%
+%
+% \subsection{Lua(Xe)\LaTeX}
+%
+% \subsubsection{Usage with \texttt{babel}}
+%
+% To invoke Unicode mode, one needs to load the \texttt{fontspec} package instead
+% of \texttt{inputenc} and \texttt{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 with \texttt{babel} package:
+% \begin{verbatim}
+%     \usepackage{fontspec}
+%     \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}}
+%         \setmainfont{CMU Serif}
+%         \setsansfont{CMU Sans Serif}
+%         \setmonofont{CMU Typewriter Text}
+%     \usepackage[english,ukrainian]{babel}
+%     \usepackage[useregional]{datetime2}
+% \end{verbatim}
+%
+% Here |Renderer=Basic,Ligatures={TeX}| activates ligatures which are existed
+% in \LaTeX.
+%
+% \subsubsection{Usage with \texttt{polyglossia}}
+%
+% \begin{verbatim}
+%     \usepackage{polyglossia}
+%         \defaultfontfeatures{Renderer=Basic,Ligatures={TeX}}
+%         \setmainlanguage{ukrainian}
+%         \setotherlanguage{english}
+%         \setmainfont{CMU Serif}
+%         \setsansfont{CMU Sans Serif}
+%         \setmonofont{CMU Typewriter Text}
+%     \usepackage[english,ukrainian]{babel}
+%     \usepackage[useregional]{datetime2}
+% \end{verbatim}
+% 
+% If ohe need use month name in nominative form, it sould  be able to switch between 
+% the different cases using \cs{DTMlangsetup}. For example:
+% \begin{verbatim}
+%     % Default is genitive
+%     \today
+%     \DTMlangsetup[ukrainian]{month=nominative}
+%     % Now \today in nominative
+%     \today
+% \end{verbatim}
+%
+% For more information see documentation on \href{https://www.ctan.org/pkg/datetime2}{\texttt{datetime2}}.
+%\section{Implementetion}
 %\iffalse
 %    \begin{macrocode}
 %<*datetime2-ukrainian-utf8.ldf>
 %    \end{macrocode}
 %\fi
 %\subsection{UTF-8}
-%This file contains the settings that use UTF-8 characters. This
-%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
-%your text editor is set to UTF-8 if you want to view this code.
-%\changes{1.1}{2017-06-11}{Adding Ukrainian week days}
-%\changes{1.0}{2015-04-01}{Initial release}
+% This file contains the settings that use UTF-8 characters. This
+% file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
+% your text editor is set to UTF-8 if you want to view this code.
+% \changes{1.0}{2015-04-01}{Initial release} 
 % Identify module
 %    \begin{macrocode}
-\ProvidesDateTimeModule{ukrainian-utf8}[2017/06/111 v1.1]
+\ProvidesDateTimeModule{ukrainian-utf8}[2017/06/13 1.2]
 %    \end{macrocode}
 %\begin{macro}{\DTMukrainianordinal}
 %    \begin{macrocode}
@@ -142,11 +420,86 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\changes{1.2}{2017/06/13}{Add nominative month names (capitalize and common)}
+%
+%\begin{macro}{\DTMukrainiannominativemonthname}
+%
+% ======= Ukrainian month names in nominative =======
+%
+%    \begin{macrocode}
+\newcommand*{\DTMukrainiannominativemonthname}[1]{%
+  \ifcase#1
+  \or
+  січень%
+  \or
+  лютий%
+  \or
+  березень%
+  \or
+  квітень%
+  \or
+  травень%
+  \or
+  червень%
+  \or
+  липень%
+  \or
+  серпень%
+  \or
+  вересень%
+  \or
+  жовтень%
+  \or
+  листопад%
+  \or
+  грудень%
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiannominativeMonthname}
+%
+% ======= Ukrainian Capitalized month names in nominative =======
+%
+%    \begin{macrocode}
+\newcommand*{\DTMukrainiannominativeMonthname}[1]{%
+  \ifcase#1
+  \or
+  Січень%
+  \or
+  Лютий%
+  \or
+  Березень%
+  \or
+  Квітень%
+  \or
+  Травень%
+  \or
+  Червень%
+  \or
+  Липень%
+  \or
+  Серпень%
+  \or
+  Вересень%
+  \or
+  Жовтень%
+  \or
+  Листопад%
+  \or
+  Грудень%
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiangenitivemonthname}
+%
+% ======= Ukrainian month names in genitive =======
 %
-%\begin{macro}{\DTMukrainianmonthname}
-% Ukrainian month names.
 %    \begin{macrocode}
-\newcommand*{\DTMukrainianmonthname}[1]{%
+\newcommand*{\DTMukrainiangenitivemonthname}[1]{%
   \ifcase#1
   \or
   січня%
@@ -177,10 +530,12 @@
 %    \end{macrocode}
 %\end{macro}
 %
-%\begin{macro}{\DTMukrainianMonthname}
-% As above but capitalize.
+%\begin{macro}{\DTMukrainiangenitiveMonthname}
+%
+% ======= Ukrainian Capitalized month names in genitive =======
+%
 %    \begin{macrocode}
-\newcommand*{\DTMukrainianMonthname}[1]{%
+\newcommand*{\DTMukrainiangenitiveMonthname}[1]{%
   \ifcase#1
   \or
   Січня%
@@ -210,10 +565,18 @@
 }
 %    \end{macrocode}
 %\end{macro}
+% \changes{1.2}{2017/06/13}{Set as default genitive form of month name}
+% Now we set \cs{DTMukrainiangenitiveMonthname} and \cs{DTMukrainiangenitivemonthname} as default setting.
+%    \begin{macrocode}
+\newcommand*{\DTMukrainianmonthname}{\DTMukrainiangenitivemonthname}% default
+\newcommand*{\DTMukrainianMonthname}{\DTMukrainiangenitiveMonthname}% default
+%    \end{macrocode}
 %
-%\begin{macro}{\DTMukrainianshortmonthname}
-% Abbreviated Ukrainian month names.
-%\changes{1.01}{2017-06-11}{Add abbreviated month names}
+%\begin{macro}{\DTMukrainianshortmonthname}%
+%
+% ======= Abbreviated Ukrainian short month names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated month names}
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortmonthname}[1]{%
   \ifcase#1
@@ -247,7 +610,9 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianshortMonthname}
-% As above but start with a capital.
+%
+% ======= Abbreviated Ukrainian Capitalized short month names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortMonthname}[1]{%
   \ifcase#1
@@ -280,8 +645,11 @@
 %    \end{macrocode}
 %\end{macro}
 %
+% \changes{v1.1}{2017/06/11}{Adding Ukrainian week days}
 %\begin{macro}{\DTMukrainianweekdayname}
-% Ukrainian day of week names.
+%
+% ======= Ukrainian  day of week names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianweekdayname}[1]{%
   \ifcase#1
@@ -304,7 +672,9 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianWeekdayname}
-% As above but start with a capital.
+%
+% ======= Ukrainian Capitalized day of week names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianWeekdayname}[1]{%
   \ifcase#1
@@ -327,8 +697,11 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianshortweekdayname}
-% Abbreviated Romanian day of week names.
-%\changes{1.01}{2017-06-11}{Add abbreviated day of week names}
+%
+%
+% ======= Abbreviated Ukrainian day of week names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated day of week names}
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortweekdayname}[1]{%
   \ifcase#1
@@ -351,7 +724,9 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianshortWeekdayname}
-% As above but start with a capital.
+%
+% ======= Abbreviated Ukrainian Capitalized day of week names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortWeekdayname}[1]{%
   \ifcase#1
@@ -395,11 +770,11 @@
 %\changes{1.0}{2015-04-01}{Initial release}
 % Identify module
 %    \begin{macrocode}
-\ProvidesDateTimeModule{ukrainian-ascii}[2015/04/01 v1.0]
+\ProvidesDateTimeModule{ukrainian-ascii}[2017/06/13 1.2]
 %    \end{macrocode}
 %
-%If abbreviated dates are supported, short month names should be
-%likewise provided.
+%I f abbreviated dates are supported, short month names should be
+% likewise provided.
 %\begin{macro}{\DTMukrainianordinal}
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianordinal}[1]{%
@@ -417,10 +792,94 @@
 %    \end{macrocode}
 %\end{macro}
 %
-%\begin{macro}{\DTMukrainianmonthname}
-% Ukrainian month names.
+%\begin{macro}{\DTMukrainiannominativemonthname}
+%
+%
+% ======= Ukrainian month names in nominative =======
+%
+%
+%    \begin{macrocode}
+\newcommand*{\DTMukrainiannominativemonthname}[1]{%
+  \ifcase#1
+  \or
+   \protect\cyrs\protect\cyrii\protect\cyrch\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrl\protect\cyryu\protect\cyrt\protect\cyri\protect\cyrishrt
+  \or
+   \protect\cyrb\protect\cyre\protect\cyrr\protect\cyre\protect\cyrz
+    \protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrk\protect\cyrv\protect\cyrii\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrt\protect\cyrr\protect\cyra\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrch\protect\cyre\protect\cyrr\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrl\protect\cyri\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrs\protect\cyre\protect\cyrr\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrv\protect\cyre\protect\cyrr\protect\cyre\protect\cyrs
+    \protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrzh\protect\cyro\protect\cyrv\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\cyrl\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+    \protect\cyrp\protect\cyra\protect\cyrd
+  \or
+   \protect\cyrg\protect\cyrr\protect\cyru\protect\cyrd\protect\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiannominativeMonthname}
+%
+%
+% ======= Ukrainian Capitalized month names in nominative =======
+%
+%
+%    \begin{macrocode}
+\newcommand*{\DTMukrainiannominativeMonthname}[1]{%
+  \ifcase#1
+  \or
+   \protect\CYRS\protect\cyrii\protect\cyrch\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRL\protect\cyryu\protect\cyrt\protect\cyri\protect\cyrishrt
+  \or
+   \protect\CYRB\protect\cyre\protect\cyrr\protect\cyre\protect\cyrz
+    \protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRK\protect\cyrv\protect\cyrii\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRT\protect\cyrr\protect\cyra\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRCH\protect\cyre\protect\cyrr\protect\cyrv\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRL\protect\cyri\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRS\protect\cyre\protect\cyrr\protect\cyrp\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRV\protect\cyre\protect\cyrr\protect\cyre\protect\cyrs
+    \protect\CYRE\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRZH\protect\cyro\protect\cyrv\protect\cyrt\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \or
+   \protect\CYRL\protect\cyri\protect\cyrs\protect\cyrt\protect\cyro
+    \protect\cyrp\protect\cyra\protect\cyrd
+  \or
+   \protect\CYRG\protect\cyrr\protect\cyru\protect\cyrd\protect\protect\cyre\protect\cyrn\protect\cyrsftsn
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMukrainiangenitivemonthname}
+%
+% ======= Ukrainian month names in genitive =======
+%
 %    \begin{macrocode}
-\newcommand*{\DTMukrainianmonthname}[1]{%
+\newcommand*{\DTMukrainiangenitivemonthname}[1]{%
   \ifcase#1
   \or
    \protect\cyrs\protect\cyrii\protect\cyrch\protect\cyrn\protect\cyrya
@@ -461,10 +920,12 @@
 %    \end{macrocode}
 %\end{macro}
 %
-%\begin{macro}{\DTMukrainianMonthname}
-% As above but start with a capital.
+%\begin{macro}{\DTMukrainiangenitiveMonthname}
+%
+% ======= Ukrainian Capitalized month names in genitive =======
+%
 %    \begin{macrocode}
-\newcommand*{\DTMukrainianMonthname}[1]{%
+\newcommand*{\DTMukrainiangenitiveMonthname}[1]{%
   \ifcase#1
   \or
    \protect\CYRS\protect\cyrii\protect\cyrch\protect\cyrn\protect\cyrya
@@ -505,9 +966,19 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\changes{1.2}{2017/06/13}{Set as default genitive form of month name}
+% Now we set \cs{DTMukrainiangenitiveMonthname} and \cs{DTMukrainiangenitivemonthname} as default setting.
+%    \begin{macrocode}
+\newcommand*{\DTMukrainianmonthname}{\DTMukrainiangenitivemonthname}% default
+\newcommand*{\DTMukrainianMonthname}{\DTMukrainiangenitiveMonthname}% default
+%    \end{macrocode}
+%
+%
 %\begin{macro}{\DTMukrainianshortmonthname}
-% Abbreviated Ukrainian month names.
-%\changes{1.01}{2017-06-11}{Add abbreviated month names}
+%
+% ======= Abbreviated Ukrainian month names =======
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated month names}
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortmonthname}[1]{%
   \ifcase#1
@@ -542,7 +1013,9 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianshortMonthname}
-% As above but start with a capital.
+%
+% ======= Abbreviated Capitalized Ukrainian month names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortMonthname}[1]{%
   \ifcase#1
@@ -577,7 +1050,9 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianweekdayname}
-% Ukrainian day of week names.
+%
+% ======= Ukrainian day of week names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianweekdayname}[1]{%
   \ifcase#1
@@ -600,7 +1075,9 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianWeekdayname}
-% As above but start with a capital.
+%
+% ======= Ukrainian Capitalized day of week names =======
+%
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianWeekdayname}[1]{%
   \ifcase#1
@@ -623,8 +1100,10 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianshortweekdayname}
-% Abbreviated Ukrainian day of week names.
-%\changes{1.01}{2017-06-11}{Add abbreviated day of week names}
+%
+% ======= Abbreviated Ukrainian day of week names ======= 
+%
+%\changes{v1.1}{2017/06/11}{Add abbreviated day of week names}
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortweekdayname}[1]{%
   \ifcase#1
@@ -647,7 +1126,7 @@
 %\end{macro}
 %
 %\begin{macro}{\DTMukrainianshortWeekdayname}
-% As above but start with a capital.
+% ======= Abbreviated Ukrainian Capitalized day of week names ======= 
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianshortWeekdayname}[1]{%
   \ifcase#1
@@ -686,7 +1165,7 @@
 %
 % Identify Module
 %    \begin{macrocode}
-\ProvidesDateTimeModule{ukrainian}[2017/06/11 v1.1]
+\ProvidesDateTimeModule{ukrainian}[2017/06/13 1.2]
 %    \end{macrocode}
 % Need to find out if XeTeX or LuaTeX are being used.
 %    \begin{macrocode}
@@ -717,6 +1196,17 @@
 % "ukrainian-numeric" styles. This doesn't use the package wide
 % separators such as
 % \cs{dtm@datetimesep} in case other date formats are also required.
+%
+%\begin{macro}{\DTMukrainiandowdaysep}
+% The separator between the day of week name and the day of month
+% number for the text format.
+%\changes{1.2}{2017/06/13}{Add support for showdow}
+%    \begin{macrocode}
+\newcommand*{\DTMukrainiandowdaysep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\DTMukrainiandaymonthsep}
 % The separator between the day and month for the text format.
 %    \begin{macrocode}
@@ -725,10 +1215,22 @@
 %    \end{macrocode}
 %\end{macro}
 %
+% \changes{1.2}{2017/06/13}{Added \cs{DTMukrainiannommonthyearsep}}
+%
+%\begin{macro}{\DTMukrainiannommonthyearsep}
+% The separator between the month and year for the text format.
+%    \begin{macrocode}
+\newcommand*{\DTMukrainiannommonthyearsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\DTMukrainianmonthyearsep}
 % The separator between the month and year for the text format.
+% \changes{1.2}{2017/06/13}{Fixed: spacebar in tableofcontents was}
 %    \begin{macrocode}
-\newcommand*{\DTMukrainianmonthyearsep}{\space}
+\newcommand*{\DTMukrainianmonthyearsep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -736,7 +1238,8 @@
 % The separator between the date and time blocks in the full format
 % (either text or numeric).
 %    \begin{macrocode}
-\newcommand*{\DTMukrainiandatetimesep}{\space}
+\newcommand*{\DTMukrainiandatetimesep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -744,7 +1247,8 @@
 % The separator between the time and zone blocks in the full format
 % (either text or numeric).
 %    \begin{macrocode}
-\newcommand*{\DTMukrainiantimezonesep}{\space}
+\newcommand*{\DTMukrainiantimezonesep}{%
+ \DTMtexorpdfstring{\protect~}{\space}}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -762,20 +1266,46 @@
 %    \end{macrocode}
 %\end{macro}
 %
-%Provide keys that can be used in \cs{DTMlangsetup} to set these
-%separators.
+% Provide keys that can be used in \cs{DTMlangsetup} to set these
+% separators.
+% \changes{1.2}{2017/06/13}{Added key dowdaysep}
 %    \begin{macrocode}
+\DTMdefkey{ukrainian}{dowdaysep}{\renewcommand*{\DTMukrainiandowdaysep}{#1}}
 \DTMdefkey{ukrainian}{daymonthsep}{\renewcommand*{\DTMukrainiandaymonthsep}{#1}}
 \DTMdefkey{ukrainian}{monthyearsep}{\renewcommand*{\DTMukrainianmonthyearsep}{#1}}
+\DTMdefkey{ukrainian}{nommonthyearsep}{\renewcommand*{\DTMukrainiannommonthyearsep}{#1}}
 \DTMdefkey{ukrainian}{datetimesep}{\renewcommand*{\DTMukrainiandatetimesep}{#1}}
 \DTMdefkey{ukrainian}{timezonesep}{\renewcommand*{\DTMukrainiantimezonesep}{#1}}
 \DTMdefkey{ukrainian}{datesep}{\renewcommand*{\DTMukrainiandatesep}{#1}}
 \DTMdefkey{ukrainian}{timesep}{\renewcommand*{\DTMukrainiantimesep}{#1}}
 %    \end{macrocode}
+% \changes{1.2}{2017/06/13}{Added genitive and nominative keys}
+% The block that defines the module options for using genitive or nominative case of month name:
+%
+%    \begin{macrocode}
+\DTMdefchoicekey{ukrainian}{month}[\val\nr]{genitive,nominative}{%
+ \ifcase\nr\relax
+  \renewcommand*\DTMukrainianmonthname{\DTMukrainiangenitivemonthname}%
+  \renewcommand*\DTMukrainianMonthname{\DTMukrainiangenitiveMonthname}%
+ \or
+  \renewcommand*\DTMukrainianmonthname{\DTMukrainiannominativemonthname}%
+  \renewcommand*\DTMukrainianMonthname{\DTMukrainiannominativeMonthname}%
+ \fi
+}
+%    \end{macrocode}
+%
+% \changes{1.2}{2017/06/13}{Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format}
+% Define a boolean key that can switch between full and abbreviated
+% formats for the month and day of week names in the text format.
+%    \begin{macrocode}
+\DTMdefboolkey{ukrainian}{abbr}[true]{}
+%    \end{macrocode}
+% The default is the full name.
+%    \begin{macrocode}
+\DTMsetbool{ukrainian}{abbr}{false}
+%    \end{macrocode}
 %
-% TODO: provide a boolean key to switch between full and abbreviated
-% formats if appropriate. (I don't know how the date should be
-% abbreviated.)
 %
 % Define a boolean key that determines if the time zone mappings
 % should be used.
@@ -807,32 +1337,28 @@
 \DTMsetbool{ukrainian}{showyear}{true}
 %    \end{macrocode}
 %
-% Define the "ukrainian" style. (TODO: implement day of week?)
 %    \begin{macrocode}
 \DTMnewstyle
  {ukrainian}% label
  {% date style
    \renewcommand*\DTMdisplaydate[4]{%
-     \DTMifbool{ukrainian}{showdayofmonth}
-     {\DTMukrainianordinal{##3}\DTMukrainiandaymonthsep}%
-     {}%
-     \DTMukrainianmonthname{##2}%
-     \DTMifbool{ukrainian}{showyear}%
+     \ifDTMshowdow
+       \ifnum##4>-1
+         \DTMifbool{ukrainian}{abbr}%
+         {\DTMukrainianshortweekdayname{##4}}%
+         {\DTMukrainianweekdayname{##4}}%
+         \DTMukrainiandowdaysep
+       \fi
+     \fi
+     \DTMifbool{ukrainian}{showdayofmonth}%
      {%
-       \DTMukrainianmonthyearsep
-       \DTMukrainianyear{##1}%
+       \DTMukrainianordinal{##3}%
+       \DTMukrainiandaymonthsep
      }%
      {}%
-   }%
-   \renewcommand*\DTMDisplaydate[4]{%
-     \DTMifbool{ukrainian}{showdayofmonth}
-     {%
-       \DTMukrainianordinal{##3}\DTMukrainiandaymonthsep
-       \DTMukrainianmonthname{##2}%
-     }%
-     {%
-       \DTMukrainianMonthname{##2}%
-     }%
+     \DTMifbool{ukrainian}{abbr}%
+     {\DTMukrainianshortmonthname{##2}}%
+     {\DTMukrainianmonthname{##2}}%
      \DTMifbool{ukrainian}{showyear}%
      {%
        \DTMukrainianmonthyearsep
@@ -840,9 +1366,77 @@
      }%
      {}%
    }%
+   \renewcommand*\DTMDisplaydate[4]{%
+     \ifDTMshowdow
+       \ifnum##4>-1
+         \DTMifbool{ukrainian}{abbr}%
+         {\DTMukrainianshortWeekdayname{##4}}%
+         {\DTMukrainianWeekdayname{##4}}%
+         \DTMukrainiandowdaysep
+         \DTMifbool{ukrainian}{showdayofmonth}%
+         {%
+           \DTMukrainianordinal{##3}%
+           \DTMukrainiandaymonthsep
+         }%
+         {}%
+         \DTMifbool{ukrainian}{abbr}%
+         {\DTMukrainianshortmonthname{##2}}%
+         {\DTMukrainianmonthname{##2}}%
+         \DTMifbool{ukrainian}{showyear}%
+         {%
+           \DTMukrainianmonthyearsep
+           \DTMukrainianyear{##1}%
+         }%
+         {}%
+       \else
+         \DTMifbool{ukrainian}{showdayofmonth}
+         {%
+           \DTMukrainianordinal{##3}%
+           \DTMukrainiandaymonthsep
+           \DTMifbool{ukrainian}{abbr}%
+           {\DTMukrainianshortMonthname{##2}}%
+           {\DTMukrainianMonthname{##2}}%
+         }%
+         {%
+           \DTMifbool{ukrainian}{abbr}%
+           {\DTMukrainianshortMonthname{##2}}%
+           {\DTMukrainianMonthname{##2}}%
+         }%
+         \DTMifbool{ukrainian}{showyear}%
+         {%
+           \DTMukrainianmonthyearsep
+           \DTMukrainianyear{##1}%
+         }%
+         {}%
+       \fi
+     \else
+       \DTMifbool{ukrainian}{showdayofmonth}
+       {%
+        \DTMukrainianordinal{##3}%
+        \DTMukrainiandaymonthsep
+        \DTMifbool{ukrainian}{abbr}%
+        {\DTMukrainianshortMonthname{##2}}%
+        {\DTMukrainianMonthname{##2}}%
+       }%
+       {%
+        \DTMifbool{ukrainian}{abbr}%
+        {\DTMukrainianshortMonthname{##2}}%
+        {\DTMukrainianMonthname{##2}}%
+       }%
+       \DTMifbool{ukrainian}{showyear}%
+       {%
+        \DTMukrainianmonthyearsep
+        \DTMukrainianyear{##1}%
+       }%
+       {}%
+     \fi
+   }%
  }%
- {% time style (use default)
-   \DTMsettimestyle{default}%
+ {% time style (ignores seconds)
+   \renewcommand*\DTMdisplaytime[3]{%
+     \number##1
+     \DTMukrainiantimesep\DTMtwodigits{##2}%
+   }%
  }%
  {% zone style
    \DTMresetzones
@@ -947,8 +1541,8 @@
 % files).
 %    \begin{macrocode}
 \newcommand*{\DTMukrainianzonemaps}{%
-  \DTMdefzonemap{02}{00}{EET}%
-  \DTMdefzonemap{03}{00}{EEST}%
+  \DTMdefzonemap{02}{00}{EET}% Східноєвропейський час
+  \DTMdefzonemap{03}{00}{EEST}% Східноєвропейський літній час
 }
 %    \end{macrocode}
 %\end{macro}
@@ -993,5 +1587,6 @@
 %</datetime2-ukrainian.ldf>
 %    \end{macrocode}
 %\fi
+%
+% \CheckSum{1642}
 %\Finale
-\endinput
-- 
cgit v1.2.3

