summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext
Initial commit
Diffstat (limited to 'macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext')
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README50
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx901
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins40
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdfbin0 -> 231420 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdfbin0 -> 46528 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex164
6 files changed, 1155 insertions, 0 deletions
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README
new file mode 100644
index 0000000000..97586a91b7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/README
@@ -0,0 +1,50 @@
+English Full Text Styles for datetime2 Package
+
+Author: Nicola L. C. Talbot
+ www.dickimaw-books.com
+
+Licence: LPPL
+
+Required Packages: datetime2, fmtcount
+
+This package provides the following the date and time
+styles "en-fulltext", "en-FullText", "en-FULLTEXT" and the
+additional time style "en-Fulltext". (The date equivalent can be
+obtained through commands like \Today.)
+
+Example usage:
+
+\documentclass{article}
+\usepackage[showdow]{datetime2-en-fulltext}
+\begin{document}
+Date: \today. Time: \DTMcurrenttime.
+\end{document}
+
+Unlike the base styles provided by datetime2.sty, these styles
+aren't expandable styles. This means that you can't use the
+date or time in PDF bookmarks or in the argument of certain
+commands, such as \MakeUppercase, while these styles are in use.
+
+INSTALLATION
+============
+
+latex datetime2-fulltext.ins
+
+Move *.sty file to
+TEXMF/tex/latex/datetime2-contrib/datetime2-en-fulltext/
+
+Documentation:
+
+pdflatex datetime2-fulltext.dtx
+makeindex -s gind.ist datetime2-fulltext.idx
+makeindex -s gglo.ist -o datetime2-fulltext.gls datetime2-fulltext.glo
+pdflatex datetime2-fulltext.dtx
+pdflatex datetime2-fulltext.dtx
+
+Move datetime2-fulltext.pdf and README to
+TEXMF/doc/latex/datetime2-contrib/datetime2-fulltext/
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx
new file mode 100644
index 0000000000..e3958a3a38
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.dtx
@@ -0,0 +1,901 @@
+%\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.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{alltt}
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{datetime2-en-fulltext}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={datetime2-en-fulltext.sty: English Full Text
+Date and Time Styles}]{hyperref}
+
+
+\CheckSum{649}
+
+\renewcommand*{\usage}[1]{\hyperpage{#1}}
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
+
+\RecordChanges
+\PageIndex
+\CodelineNumbered
+
+\begin{document}
+\DocInput{datetime2-en-fulltext.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+%\MakeShortVerb{"}
+%
+%\title{datetime2-en-fulltext.sty: English Full Text Date and Time
+%Styles}
+%\author{Nicola L. C. Talbot}
+%\date{2014-04-01 (v1.0)}
+%\maketitle
+%
+%\begin{abstract}
+%This is a supplementary package that provides English full text date and
+%time styles for the datetime2.sty package. These styles are
+%analogous to the styles provided by the old \sty{datetime}'s
+%\cs{textdate} and \cs{oclock}. \textbf{These styles are not
+%expandable styles.} This means that you can't use them in PDF
+%bookmarks nor can you use them in case-changing commands such as
+%\cs{MakeUppercase}.
+%\end{abstract}
+%
+%\section{Introduction}
+%
+%This package loads the \sty{datetime2} package and the
+%"english-base" language module, if not already loaded, and provides the
+%date styles:
+%\begin{description}
+%\item[en-fulltext] Produces the date in the style:
+%\DTMsetdatestyle{en-fulltext}\today. (Lower case ordinal and number
+%words.) Commands such as \cs{Today} will start with a capital. For
+%example: \Today.
+%\item[en-FullText] Produces the date in the style:
+%\DTMsetdatestyle{en-FullText}\today. (Title Case.)
+%\item[en-FULLTEXT] Produces the date in the style:
+%\DTMsetdatestyle{en-FULLTEXT}\today. (All caps.)
+%\end{description}
+%These styles honour the \opt{showdow} setting. Example:
+%\begin{verbatim}
+%\documentclass{article}
+%\usepackage[showdow]{datetime2-en-fulltext}
+%\begin{document}
+%Date: \today.
+%\end{document}
+%\end{verbatim}
+%The separator between the month and year is given by
+%\cs{DTMenfulltextmonthyearsep} which may be redefined using
+%\cs{renewcommand}.
+%
+%The \sty{datetime2-en-fulltext} package automatically switches on
+%the "en-fulltext" date style. You can switch the style using
+%\cs{DTMsetdatestyle}. For example:
+%\begin{verbatim}
+%\DTMsetdatestyle{en-FullText}
+%\end{verbatim}
+%
+%This package also provides the time styles:
+%\begin{description}
+%\item[en-fulltext] Produces the time in the style:
+%\DTMsettimestyle{en-fulltext}\DTMcurrenttime. (Lower case.)
+%
+%\item[en-Fulltext] Produces the time in the style:
+%\DTMsettimestyle{en-Fulltext}\DTMcurrenttime. (Initial capital.)
+%
+%\item[en-FullText] Produces the time in the style:
+%\DTMsettimestyle{en-FullText}\DTMcurrenttime. (Title Case.)
+%
+%\item[en-FULLTEXT] Produces the time in the style:
+%\DTMsettimestyle{en-FULLTEXT}\DTMcurrenttime. (All caps.)
+%
+%\end{description}
+%
+%The \sty{datetime2-en-fulltext} package automatically switches on
+%the "en-fulltext" time style. You can switch the style using
+%\cs{DTMsettimestyle}. For example:
+%\begin{verbatim}
+%\DTMsettimestyle{en-FullText}
+%\end{verbatim}
+%
+%Note that if you use \sty{polyglossia} or \sty{babel} and you don't
+%have \sty{datetime2}'s \opt{useregional} setting set to "false",
+%then the regional styles will override the styles provided here.
+%
+%\StopEventually{%
+%\clearpage
+%\phantomsection
+%\addcontentsline{toc}{section}{Change History}%
+%\PrintChanges
+%\addcontentsline{toc}{section}{\indexname}%
+%\PrintIndex}
+%\section{The Code}
+%
+%\changes{1.0}{2015-04-01}{Initial release}
+%\iffalse
+% \begin{macrocode}
+%<*datetime2-en-fulltext.sty>
+% \end{macrocode}
+%\fi
+%Identify package
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{datetime2-en-fulltext}[2015/04/01 v1.0]
+% \end{macrocode}
+% Pass all options to \sty{datetime2}:
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{datetime2}}
+\ProcessOptions
+% \end{macrocode}
+% Requires \sty{datetime2}:
+% \begin{macrocode}
+\RequirePackage{datetime2}
+% \end{macrocode}
+% Also requries \sty{fmtcount}:
+% \begin{macrocode}
+\RequirePackage{fmtcount}
+% \end{macrocode}
+% If the "english-base" language module hasn't been loaded, load it now.
+% \begin{macrocode}
+\def\CurrentTrackedDialect{english}
+\RequireDateTimeModule{english-base}
+\undef\CurrentTrackedDialect
+% \end{macrocode}
+% Define the "en-fulltext" date style:
+% \begin{macrocode}
+\DTMnewdatestyle{en-fulltext}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMenglishweekdayname{##4} the\space
+ \fi
+ \fi
+ \protect\ordinalstringnum{##3} of \DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep
+ \protect\numberstringnum{##1}%
+ }%
+ \renewcommand*\DTMDisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMenglishweekdayname{##4} the\space
+ \else
+ \protect\Ordinalstringnum{##3}
+ \fi
+ \else
+ \protect\Ordinalstringnum{##3}
+ \fi
+ of \DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep
+ \protect\numberstringnum{##1}%
+ }%
+}
+% \end{macrocode}
+%
+% Define the "en-FullText" date style:
+% \begin{macrocode}
+\DTMnewdatestyle{en-FullText}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \DTMenglishweekdayname{##4} the\space
+ \fi
+ \fi
+ \protect\Ordinalstringnum{##3} of \DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep
+ \protect\Numberstringnum{##1}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+}
+% \end{macrocode}
+%
+% Define the "en-FULLTEXT" date style:
+% \begin{macrocode}
+\DTMnewdatestyle{en-FULLTEXT}{%
+ \renewcommand*\DTMdisplaydate[4]{%
+ \ifDTMshowdow
+ \ifnum##4>-1
+ \MakeUppercase{\DTMenglishweekdayname{##4}} THE\space
+ \fi
+ \fi
+ \protect\ORDINALstringnum{##3} OF
+ \MakeUppercase{\DTMenglishmonthname{##2}%
+ \DTMenfulltextmonthyearsep}%
+ \protect\NUMBERstringnum{##1}%
+ }%
+ \renewcommand*\DTMDisplaydate{\DTMdisplaydate}%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMenfulltextmonthyearsep}
+% Separator between month and year.
+% \begin{macrocode}
+\newcommand*\DTMenfulltextmonthyearsep{,\space}
+% \end{macrocode}
+%\end{macro}
+% Set the "en-fulltext" date style:
+% \begin{macrocode}
+\DTMsetdatestyle{en-fulltext}
+% \end{macrocode}
+%
+%Define the "en-fulltext" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-fulltext}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \DTMenglishnoon
+ \else
+ \DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\numberstringnum{##1} \DTMoclockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \DTMquarterpaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \DTMhalfpaststring\space
+ \else
+ \protect\numberstringnum{##2}
+ \ifnum##2=1 \DTMminutepaststring\else \DTMminutespaststring\fi
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \DTMquartertostring\space
+ \else
+ \protect\numberstringnum{\numexpr60-##2}
+ \ifnum##2=59 \DTMminutetostring\else \DTMminutestostring\fi
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\numberstringnum{1}%
+ \else
+ \ifnum##1=23
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\numberstringnum{1}%
+ \else
+ \protect\numberstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMafternoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \else
+ \space\DTMafternoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\DTMmorningstring
+ \else
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%Define the "en-Fulltext" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-Fulltext}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \expandafter\MakeUppercase\DTMenglishnoon
+ \else
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\Numberstringnum{##1} \DTMoclockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \expandafter\MakeUppercase\DTMquarterpaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \expandafter\MakeUppercase\DTMhalfpaststring\space
+ \else
+ \protect\Numberstringnum{##2}
+ \ifnum##2=1 \DTMminutepaststring\else \DTMminutespaststring\fi
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \expandafter\MakeUppercase\DTMquartertostring\space
+ \else
+ \protect\Numberstringnum{\numexpr60-##2}
+ \ifnum##2=59 \DTMminutetostring\else \DTMminutestostring\fi
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\numberstringnum{1}%
+ \else
+ \ifnum##1=23
+ \DTMenglishmidnight
+ \else
+ \protect\numberstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\numberstringnum{1}%
+ \else
+ \protect\numberstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMafternoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \else
+ \space\DTMafternoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\DTMmorningstring
+ \else
+ \ifnum##2>30
+ \space\DTMmorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%Define the "en-FULLTEXT" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-FULLTEXT}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \MakeUppercase\DTMenglishnoon
+ \else
+ \MakeUppercase\DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\NUMBERstringnum{##1} \MakeUppercase\DTMoclockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \MakeUppercase\DTMquarterpaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \MakeUppercase\DTMhalfpaststring\space
+ \else
+ \protect\NUMBERstringnum{##2}
+ \MakeUppercase
+ {%
+ \ifnum##2=1 \DTMminutepaststring\else \DTMminutespaststring\fi
+ }%
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\NUMBERstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\NUMBERstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \MakeUppercase\DTMquartertostring\space
+ \else
+ \protect\NUMBERstringnum{\numexpr60-##2}
+ \MakeUppercase
+ {%
+ \ifnum##2=59 \DTMminutetostring\else \DTMminutestostring\fi
+ }%
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\NUMBERstringnum{1}%
+ \else
+ \ifnum##1=23
+ \MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\NUMBERstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\NUMBERstringnum{1}%
+ \else
+ \protect\NUMBERstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\MakeUppercase\DTMafternoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\MakeUppercase\DTMmorningstring
+ \fi
+ \else
+ \space\MakeUppercase\DTMafternoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\MakeUppercase\DTMmorningstring
+ \else
+ \ifnum##2>30
+ \space\MakeUppercase\DTMmorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%Define the "en-FullText" time style. Seconds are ignored.
+% \begin{macrocode}
+\DTMnewtimestyle{en-FullText}{%
+ \renewcommand*\DTMdisplaytime[3]{%
+ \ifboolexpr
+ { test {\ifnumequal{##2}{0}} and
+ (
+ test {\ifnumequal{##1}{0}}
+ or test {\ifnumequal{##1}{12}}
+ or test {\ifnumequal{##1}{24}}
+ )
+ }%
+ {%
+% \end{macrocode}
+% Either midnight or midday.
+% \begin{macrocode}
+ \ifnum##1=12
+ \expandafter\MakeUppercase\DTMenglishnoon
+ \else
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Neither midnight nor midday.
+% \begin{macrocode}
+ \ifnum##2=0
+% \end{macrocode}
+% On the hour.
+% \begin{macrocode}
+ \protect\Numberstringnum{##1} \DTMOClockstring
+ \else
+% \end{macrocode}
+% Not on the hour.
+% \begin{macrocode}
+ \ifnum##2<31
+% \end{macrocode}
+% Past the hour.
+% \begin{macrocode}
+ \ifnum##2=15
+% \end{macrocode}
+% Quarter past the hour.
+% \begin{macrocode}
+ \DTMQuarterPaststring\space
+ \else
+ \ifnum##2=30
+% \end{macrocode}
+% Half past the hour.
+% \begin{macrocode}
+ \DTMHalfPaststring\space
+ \else
+ \protect\Numberstringnum{##2}
+ \ifnum##2=1 \DTMMinutePaststring\else \DTMMinutesPaststring\fi
+ \space
+ \fi
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\Numberstringnum{\numexpr##1-12}%
+ \fi
+ \else
+ \ifnum##1=0
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\Numberstringnum{##1}%
+ \fi
+ \fi
+ \else
+% \end{macrocode}
+% To the hour.
+% \begin{macrocode}
+ \ifnum##2=45
+ \DTMQuarterTostring\space
+ \else
+ \protect\Numberstringnum{\numexpr60-##2}
+ \ifnum##2=59 \DTMMinuteTostring\else \DTMMinutesTostring\fi
+ \space
+ \fi
+ \ifnum##1>12
+ \ifnum##1=24
+ \protect\Numberstringnum{1}%
+ \else
+ \ifnum##1=23
+ \expandafter\MakeUppercase\DTMenglishmidnight
+ \else
+ \protect\Numberstringnum{\numexpr##1-11}%
+ \fi
+ \fi
+ \else
+ \ifnum##1=12
+ \protect\Numberstringnum{1}%
+ \else
+ \protect\Numberstringnum{\numexpr##1+1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum##1>11
+ \ifnum##1=23
+ \ifnum##2<31
+ \space\DTMAfterNoonstring
+ \fi
+ \else
+ \ifnum##1=24
+ \ifnum##2>30
+ \space\DTMMorningstring
+ \fi
+ \else
+ \space\DTMAfterNoonstring
+ \fi
+ \fi
+ \else
+ \ifnum##1>0
+ \space\DTMMorningstring
+ \else
+ \ifnum##2>30
+ \space\DTMMorningstring
+ \fi
+ \fi
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\DTMoclockstring}
+% \begin{macrocode}
+\newcommand*{\DTMoclockstring}{o'clock}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMOClockstring}
+% \begin{macrocode}
+\newcommand*{\DTMOClockstring}{O'Clock}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMquarterpaststring}
+% \begin{macrocode}
+\newcommand*{\DTMquarterpaststring}{quarter past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMQuarterPaststring}
+% \begin{macrocode}
+\newcommand*{\DTMQuarterPaststring}{Quarter Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutepaststring}
+% \begin{macrocode}
+\newcommand*{\DTMminutepaststring}{minute past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutespaststring}
+% \begin{macrocode}
+\newcommand*{\DTMminutespaststring}{minutes past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinutePaststring}
+% \begin{macrocode}
+\newcommand*{\DTMMinutePaststring}{Minute Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinutesPaststring}
+% \begin{macrocode}
+\newcommand*{\DTMMinutesPaststring}{Minutes Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMhalfpaststring}
+% \begin{macrocode}
+\newcommand*{\DTMhalfpaststring}{half past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMHalfPaststring}
+% \begin{macrocode}
+\newcommand*{\DTMHalfPaststring}{Half Past}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMquartertostring}
+% \begin{macrocode}
+\newcommand*{\DTMquartertostring}{quarter to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMQuarterTostring}
+% \begin{macrocode}
+\newcommand*{\DTMQuarterTostring}{Quarter to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutetostring}
+% \begin{macrocode}
+\newcommand*{\DTMminutetostring}{minute to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinuteTostring}
+% \begin{macrocode}
+\newcommand*{\DTMMinuteTostring}{Minute to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMminutestostring}
+% \begin{macrocode}
+\newcommand*{\DTMminutestostring}{minutes to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMinutesTostring}
+% \begin{macrocode}
+\newcommand*{\DTMMinutesTostring}{Minutes to}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMmorningstring}
+% \begin{macrocode}
+\newcommand*{\DTMmorningstring}{in the morning}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMMorningstring}
+% \begin{macrocode}
+\newcommand*{\DTMMorningstring}{in the Morning}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMafternoonstring}
+% \begin{macrocode}
+\newcommand*{\DTMafternoonstring}{in the afternoon}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTMAfterNoonstring}
+% \begin{macrocode}
+\newcommand*{\DTMAfterNoonstring}{in the Afternoon}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%Set the "en-fulltext" time style:
+% \begin{macrocode}
+\DTMsettimestyle{en-fulltext}
+% \end{macrocode}
+%
+%\iffalse
+% \begin{macrocode}
+%</datetime2-en-fulltext.sty>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins
new file mode 100644
index 0000000000..761fe12867
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.ins
@@ -0,0 +1,40 @@
+\input docstrip
+
+\preamble
+
+ datetime2-en-fulltext.dtx
+ Copyright 2015 Nicola Talbot
+
+ 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 `maintained'.
+
+ The Current Maintainer of this work is Nicola Talbot.
+
+ This work consists of the files datetime2-en-fulltext.dtx and
+ datetime2-en-fulltext.ins and the derived file
+ datetime2-en-fulltext.sty.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate
+{%
+ \file
+ {datetime2-en-fulltext.sty}%
+ {%
+ \usepreamble\defaultpreamble
+ \usepostamble\defaultpostamble
+ \from{datetime2-en-fulltext.dtx}{datetime2-en-fulltext.sty,package}%
+ }%
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdf
new file mode 100644
index 0000000000..2f5a6a05e6
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/datetime2-en-fulltext.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdf
new file mode 100644
index 0000000000..b672ba4120
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex
new file mode 100644
index 0000000000..ee2bee11f7
--- /dev/null
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-en-fulltext/sample-en-fulltext.tex
@@ -0,0 +1,164 @@
+% This file is public domain.
+\documentclass{article}
+
+\usepackage[showdow]{datetime2-en-fulltext}
+
+\begin{document}
+\section{Date}
+
+\begin{description}
+\item[en-fulltext:]
+\DTMsetdatestyle{en-fulltext}
+\today.
+
+\item[en-FullText:]
+\DTMsetdatestyle{en-FullText}
+\today.
+
+\item[en-FULLTEXT:]
+\DTMsetdatestyle{en-FULLTEXT}
+\today.
+\end{description}
+
+\section{Time}
+\subsection{Default (en-fulltext)}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\subsection{en-Fulltext}
+\DTMsettimestyle{en-Fulltext}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\subsection{en-FULLTEXT}
+\DTMsettimestyle{en-FULLTEXT}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\subsection{en-FullText}
+\DTMsettimestyle{en-FullText}
+
+Time: \DTMcurrenttime.
+
+12.00: \DTMdisplaytime{12}{00}{00}.
+
+0.00: \DTMdisplaytime{0}{0}{0}.
+
+24.00: \DTMdisplaytime{24}{0}{0}.
+
+0.01: \DTMdisplaytime{0}{1}{0}.
+
+0.30: \DTMdisplaytime{0}{30}{0}.
+
+0.45: \DTMdisplaytime{0}{45}{0}.
+
+8.01: \DTMdisplaytime{8}{01}{0}.
+
+8.59: \DTMdisplaytime{8}{59}{0}.
+
+6.30: \DTMdisplaytime{6}{30}{0}.
+
+11.45: \DTMdisplaytime{11}{45}{0}.
+
+12.15: \DTMdisplaytime{12}{15}{0}.
+
+12.55: \DTMdisplaytime{12}{55}{0}.
+
+23.58: \DTMdisplaytime{23}{58}{0}.
+
+24.03: \DTMdisplaytime{24}{03}{0}.
+
+24.48: \DTMdisplaytime{24}{48}{0}.
+
+\end{document}
+