From 18bb1e2c2cf25f1d0e33edb438a899f6a80cae02 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 30 Jun 2008 16:24:23 +0000 Subject: new latex package eukdate (30jun08) git-svn-id: svn://tug.org/texlive/trunk@9114 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/eukdate/eukdate.dtx | 186 +++++++++++++++++++++ Master/texmf-dist/source/latex/eukdate/eukdate.ins | 58 +++++++ 2 files changed, 244 insertions(+) create mode 100644 Master/texmf-dist/source/latex/eukdate/eukdate.dtx create mode 100644 Master/texmf-dist/source/latex/eukdate/eukdate.ins (limited to 'Master/texmf-dist/source/latex/eukdate') diff --git a/Master/texmf-dist/source/latex/eukdate/eukdate.dtx b/Master/texmf-dist/source/latex/eukdate/eukdate.dtx new file mode 100644 index 00000000000..457bc0f23bd --- /dev/null +++ b/Master/texmf-dist/source/latex/eukdate/eukdate.dtx @@ -0,0 +1,186 @@ +% \iffalse meta-comment +% +% Copyright Andrew Gilbert Moschou 2008 +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% \fi +% +% \iffalse +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{eukdate}[2008/06/28 v1.01 LaTeX Package UK format date with weekday] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{eukdate} +\EnableCrossrefs +\CodelineIndex +\newcommand\US{\textsc{us}} +\newcommand\UK{\textsc{uk}} +\newcommand\floor[1]{\left\lfloor#1\right\rfloor} +\newcommand\pp[1]{\left(#1\right)} +\usepackage{amsmath} +\frenchspacing +\begin{document} + \DocInput{eukdate.dtx} +\end{document} +% +% \fi +% +% \CheckSum{163} +% +% \GetFileInfo{eukdate.sty} +% +% \DoNotIndex{\addtocounter} +% \DoNotIndex{\day,\DeclareOption,\def,\divide} +% \DoNotIndex{\else,\ExecuteOptions,\eukordinal} +% \DoNotIndex{\fi} +% \DoNotIndex{\ifcase,\ifnum} +% \DoNotIndex{\loop} +% \DoNotIndex{\month,\multiply} +% \DoNotIndex{\newcommand,\newcounter,\newif,\number} +% \DoNotIndex{\or} +% \DoNotIndex{\ProcessOptions} +% \DoNotIndex{\relax,\repeat} +% \DoNotIndex{\setcounter,\space} +% \DoNotIndex{\year} +% +% \title{The \textsf{eukdate} package\thanks{This document corresponds to \textsf{eukdate}~\fileversion, dated~\filedate.}} +% \author{Andrew Gilbert Moschou\\\textsf{andmos@gmail.com}} +% +% \maketitle +% +% \section{Introduction} +% +% This package redefines \DescribeMacro{\today}|\today|, to typeset |\today|'s date in, for example the format \emph{Day, Date Month Year} (here, called `\UK\ format'), `\weekday, \number\day\ \monthname\ \number\year' as is preferred in many parts of the world outside the \US. Thus, |\maketitle| uses the \UK\ format (instead of the default \US\ format, `\monthname\ \number\day, \number\year' as used in the |article| class). +% +% This package also determines |\today|'s day of the week, which still makes the package useful even to Americans who might use the |usdate| option. The day of the week is calculated according to Zeller's congruence: +% \begin{align*}w &= \begin{cases} +% d + \floor{\frac{26}{10}\pp{m+1}} + y + \floor{\frac{y}{4}} + \floor{\frac{c}{4}} - 2c\mod 7 & \mbox{Gregorian calendar}\\ +% d + \floor{\frac{26}{10}\pp{m+1}} + y + \floor{\frac{y}{4}} + 5 - c\mod 7 & \mbox{Julian calendar} +% \end{cases}\end{align*}where $d$ is the day of the month, $m$ is the number of the month, $y$ is the two digit year, $c$ is the century (so the year is given by $100c+y$) and $w$ represents the day of the week (0 for \weekday\ through to 6 for Friday); January and February are counted as months 13 and 14 of the previous year. +% +% \makeatletter +% The ordinal indicator of the date (in e.g. \number\day\textsuperscript{\euk@ordinal}, \number\day\euk@ordinal) is absent because its use is outdated. +% \makeatother +% +% \section{Usage} +% +% The package is invoked with |\usepackage{eukdate}|. This package also defines \DescribeMacro{\weekday}|\weekday| to typeset |\today|'s day of the week and \DescribeMacro{\monthname}|\monthname| to typeset the name of |\today|'s month (`\weekday' and `\monthname' when this document was typeset). +% +% \subsection{Options} +% +% \begin{description} +% \item[\sffamily no-weekday]Suppresses the weekday when typesetting |\today|, for example, `\number\day\ \monthname\ \number\year'. |\weekday| is still defined and can be used in the document. +% \item[\sffamily ukdate]Typesets |\today| in \UK\ format, `\weekday, \number\day\ \monthname\ \number\year'. This option is applied by default, if the |usdate| option is not specified. +% \item[\sffamily usdate]Typesets |\today| in \US\ format, `\weekday, \monthname\ \number\day, \number\year'. +% \item[\sffamily gregorian]Calculates the day of the week according to the Gregorian calendar, which is the calendar that is socially used today. This option is applied by default, if the |julian| option is not specified. +% \item[\sffamily julian]Calculates the day of the week according to the Julian calendar. However, since |\today|'s date is not \emph{today}'s date, as intepreted using the Julian calendar, this option is of limited use and can be safely ignored for every day use. +% \end{description} +% +% \StopEventually{\PrintIndex} +% \section{\textsf{eukdate.sty}} +% \begin{macrocode} +\newif\if@euk@noweekday +\newif\if@euk@usdate +\newif\if@euk@julian +\DeclareOption{no-weekday}{\@euk@noweekdaytrue} +\DeclareOption{ukdate}{\@euk@usdatefalse} +\DeclareOption{usdate}{\@euk@usdatetrue} +\DeclareOption{gregorian}{\@euk@julianfalse} +\DeclareOption{julian}{\@euk@juliantrue} +\ExecuteOptions{ukdate,gregorian} +\ProcessOptions\relax +% \end{macrocode} +% \subsection{Zeller's congruence} +% Actually, the equivalent congruence:\begin{align*}w &= \begin{cases} +% d + \floor{\frac{26}{10}\pp{m+1}} + y + \floor{\frac{y}{4}} + \floor{\frac{c}{4}} + 5c\mod 7 & \mbox{Gregorian calendar}\\ +% d + \floor{\frac{26}{10}\pp{m+1}} + y + \floor{\frac{y}{4}} + 5 + 6c\mod 7 & \mbox{Julian calendar} +% \end{cases}\end{align*}is used instead of Zeller's, as claimed, to simplify the algorithm for the modulo operation. +% \begin{macrocode} +\newcounter{euk@date} +\newcounter{euk@month} +\newcounter{euk@century} +\newcounter{euk@year} +\setcounter{euk@date}{\number\day} +\setcounter{euk@month}{\number\month} +\setcounter{euk@century}{\number\year} +\divide\c@euk@century by 100 +\setcounter{euk@year}{\number\year} +\addtocounter{euk@year}{-\theeuk@century00} +\ifnum\number\theeuk@month<3 + \addtocounter{euk@month}{13} + \addtocounter{euk@year}{-1} +\else + \addtocounter{euk@month}{1} +\fi +\multiply\c@euk@month by 26 +\divide\c@euk@month by 10 +\addtocounter{euk@date}{\theeuk@month} +\addtocounter{euk@date}{\theeuk@year} +\divide\c@euk@year by 4 +\addtocounter{euk@date}{\theeuk@year} +\if@euk@julian + \addtocounter{euk@date}{6\theeuk@century} + \addtocounter{euk@date}{5} +\else + \addtocounter{euk@date}{5\theeuk@century} + \divide\c@euk@century by 4 + \addtocounter{euk@date}{\theeuk@century} +\fi +% \end{macrocode} +% The modulo operation. +% \begin{macrocode} +\loop\ifnum6<\theeuk@date + \addtocounter{euk@date}{-7} +\repeat +% \end{macrocode} +% \subsection{Definitions} +% \begin{macro}{\weekday} +% Define |\weekday| to typeset the day of the week. +% \begin{macrocode} +\newcommand\weekday{% + \ifcase\theeuk@date Saturday\or Sunday\or Monday\or% + Tuesday\or Wednesday\or Thursday\or Friday\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\monthname} +% Define |\monthname| to typeset the month. +% \begin{macrocode} +\newcommand\monthname{% + \ifcase\number\month\or January\or February\or March\or% + April\or May\or June\or July\or August\or% + September\or October\or November\or December\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\today} +% Redefine |\today|. +% \begin{macrocode} +\def\today{% + \if@euk@noweekday\else\weekday,\space\fi% + \if@euk@usdate + \monthname\space\number\day,% + \else + \number\day\space\monthname% + \fi + \space\number\year} +% \end{macrocode} +% \end{macro} +% An `undocumented' feature. +% \begin{macrocode} +\edef\euk@ordinal{% + \ifcase\number\day\or st\or nd\or rd\or th\or th\or% + th\or th\or th\or th\or th\or th\or th\or th\or th\or% + th\or th\or th\or th\or th\or th\or st\or nd\or rd\or% + th\or th\or th\or th\or th\or th\or th\or st\fi} +% \end{macrocode} +% \Finale +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/source/latex/eukdate/eukdate.ins b/Master/texmf-dist/source/latex/eukdate/eukdate.ins new file mode 100644 index 00000000000..281e291b9ed --- /dev/null +++ b/Master/texmf-dist/source/latex/eukdate/eukdate.ins @@ -0,0 +1,58 @@ +%% Copyright Andrew Gilbert Moschou 2008 +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c 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 Andrew Gilbert Moschou. +%% +%% This work consists of the files eukdate.dtx and eukdate.ins +%% and the derived file eukdate.sty. + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/eukdate} + +\preamble + +This is a generated file. + +Copyright Andrew Gilbert Moschou 2008 + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3c +of this license or (at your option) any later version. +The latest version of this license is in + + http://www.latex-project.org/lppl.txt + +and version 1.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +\endpreamble + +\generate{\file{eukdate.sty}{\from{eukdate.dtx}{package}}} + +\Msg{*********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the} +\Msg{* following file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space eukdate.sty} +\Msg{*} +\Msg{* To produce the documentation run the file eukdate.dtx} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*********************************************************} + +\endbatchfile -- cgit v1.2.3