diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/datenumber/datenumber.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/datenumber/datenumber.sty | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/datenumber/datenumber.sty b/Master/texmf-dist/tex/latex/datenumber/datenumber.sty new file mode 100644 index 00000000000..2c77f6821cf --- /dev/null +++ b/Master/texmf-dist/tex/latex/datenumber/datenumber.sty @@ -0,0 +1,356 @@ +%% +%% This is file `datenumber.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% datenumber.dtx (with options: `datenumber') +%% +%% This file is part of the `datenumber' package, +%% +%% Copyright (C) 2001 J"org-Michael Schr"oder. +%% +%% IMPORTANT NOTICE: +%% +%% This program may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.2 +%% 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.2 or later is part of all distributions of LaTeX +%% version 1999/12/01 or later. +%% +%% This program consists of all files listed in README.txt. +%% +%% For error reports, or offers to help make this a more powerful +%% tool, please contact me on schrj020@mail.uni-mainz.de +%% +\def\fileversion{v0.02} +\def\filedate{2001/08/06} + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{datenumber}[\filedate \fileversion] + +\DeclareOption{english}{\input datenumberenglish.ldf} +\DeclareOption{USenglish}{\input datenumberUSenglish.ldf} +\DeclareOption{french}{\input datenumberfrench.ldf} +\DeclareOption{italian}{\input datenumberitalian.ldf} +\DeclareOption{spanish}{\input datenumberspanish.ldf} +\DeclareOption{german}{\input datenumbergerman.ldf} +\DeclareOption{ngerman}{\input datenumbergerman.ldf} +\input datenumberUSenglish.ldf +\ProcessOptions +\newcounter{@dayscnt} +\newcounter{@startyear} + +\def\setstartyear#1{% + \ifnum#1<1 + \errmessage{Package datenumber: startyear < 1}% + \fi + \setcounter{@startyear}{#1}% + \setdatetoday +} + +\def\thestartyear{\the@startyear} + +\def\setmydatenumber#1#2#3#4{% + \ifvaliddate{#2}{#3}{#4}% + \else + \errmessage{\@errmessage}% + \fi + \ifnum\the@startyear<1 + \errmessage{Package datenumber: startyear < 1}% + \fi + \ifnum#2<\the@startyear + \errmessage{Package datenumber: datenumber < startyear (#2 < \the@startyear)}% + \fi + \setcounter{@dayscnt}{0}% + \ifnum#2>\the@startyear + \relax\@yearloop{#2}% + \fi + \addtocounter{@dayscnt}{% + \ifcase #3% + \or 0\or 31\or 59 + \or 90\or 120\or 151 + \or 181\or 212\or 243 + \or 273\or 304\or 334 + \fi + }% + \ifleapyear{#2}% + \ifnum#3>2 + \addtocounter{@dayscnt}{1}% + \fi + \fi + \ifnum#2=1582 + \ifnum#3>10 + \addtocounter{@dayscnt}{-10}% + \fi + \ifnum#3=10 + \ifnum#4>14 + \addtocounter{@dayscnt}{-10}% + \fi + \fi + \fi + \addtocounter{@dayscnt}{#4}% + \setcounter{#1}{\the@dayscnt}% +} + +\def\setmydatebynumber#1#2#3#4{% + \ifnum\the@startyear<1 + \errmessage{Package datenumber: startyear < 1}% + \fi + \ifnum#1<1 + \errmessage{Package datenumber: datenumber < 1}% + \fi + \setcounter{#2}{\the@startyear}% + \setcounter{@dayscnt}{1}% + \loop + \ifleapyear{\thedateyear}% + \@tempcnta=366 + \else + \@tempcnta=365 + \fi + \ifnum\thedateyear=1582 + \@tempcnta=355 + \fi + \addtocounter{@dayscnt}{\the\@tempcnta}% + \ifnum\the@dayscnt<#1\addtocounter{dateyear}{1}% + \repeat + \addtocounter{@dayscnt}{-\the\@tempcnta}% + % + \setcounter{#3}{1}% + \setcounter{#4}{1}% + \setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}% + \ifnum#1>\the@dayscnt\relax + \loop + \mynextdate{#2}{#3}{#4}% + \addtocounter{@dayscnt}{1}% + \ifnum\the@dayscnt<#1\relax + \repeat + \setmydatenumber{@dayscnt}{\value{#2}}{\value{#3}}{\value{#4}}% + \fi +} + +\def\mynextdate#1#2#3{% + \ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}% + \else + \errmessage{\@errmessage}% + \fi + \addtocounter{#3}{1}% + \ifleapyear{\value{#1}}% + \@tempcnta=29 + \else + \@tempcnta=28 + \fi + \ifnum\value{#3}>% + \ifcase\value{#2}\or31\or\@tempcnta\or31\or30\or31\or30% + \or31\or31\or30\or31\or30\else31% + \fi\relax + \setcounter{#3}{1}% + \addtocounter{#2}{1}% + \ifnum\value{#2}>12 + \setcounter{#2}{1}% + \addtocounter{#1}{1}% + \fi + \fi + \ifnum\value{#1}=1582 + \ifnum\value{#2}=10 + \ifnum\value{#3}=5 + \setcounter{#3}{15}% + \fi + \fi + \fi +} + +\def\myprevdate#1#2#3{% + \ifvaliddate{\value{#1}}{\value{#2}}{\value{#3}}% + \else + \errmessage{\@errmessage}% + \fi + \addtocounter{#3}{-1}% + \ifleapyear{\value{#1}}% + \@tempcnta=29 + \else + \@tempcnta=28 + \fi + \ifnum\value{#3}=0 + \addtocounter{#2}{-1}% + \ifnum\value{#2}=0 + \addtocounter{#1}{-1}% + \setcounter{#2}{12}% + \fi + \setcounter{#3}{% + \ifcase\value{#2}\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30 + \or 31\or 31\or 30\or 31\or 30\else 31 + \fi + }% + \fi + \ifnum\value{#1}=1582 + \ifnum\value{#2}=10 + \ifnum\value{#3}=14 + \setcounter{#3}{4}% + \fi + \fi + \fi +} + + +\newcounter{datenumber} +\newcounter{dateyear} +\newcounter{datemonth} +\newcounter{dateday} +\newcounter{datedayname} + +\def\setdatenumber#1#2#3{% + \setmydatenumber{datenumber}{#1}{#2}{#3}% + \setcounter{dateyear}{#1}% + \setcounter{datemonth}{#2}% + \setcounter{dateday}{#3}% + \setdaynamebynumber{\thedatenumber}% + \setmonthname{\thedatemonth}% +} + +\def\setdatebynumber#1{% + \setmydatebynumber{#1}{dateyear}{datemonth}{dateday}% + \setcounter{datenumber}{#1}% + \setdaynamebynumber{\thedatenumber}% + \setmonthname{\thedatemonth}% +} + +\def\nextdate{% + \mynextdate{dateyear}{datemonth}{dateday}% + \setdate{\thedateyear}{\thedatemonth}{\thedateday}% +} + +\def\prevdate{% + \myprevdate{dateyear}{datemonth}{dateday}% + \setdate{\thedateyear}{\thedatemonth}{\thedateday}% +} + +\def\setdate#1#2#3{%#1 year, #2 month, #3 day + \setdatenumber{#1}{#2}{#3}% +} + +\def\setdatetoday{% + \setdatenumber{\the\year}{\the\month}{\the\day}% +} + + +\def\setmonthname#1{% + \def\datemonthname{\@monthname{#1}}% +} + + +\def\setdayname#1{% + \def\datedayname{\@dayname{#1}}% +} + +\def\setdaynamebynumber#1{% + \@tempcnta=#1\relax + \ifnum\the@startyear=1800\advance \@tempcnta by 1\fi + \ifnum\the@startyear=1900\advance \@tempcnta by 6\fi + \ifnum\the@startyear=2000\advance \@tempcnta by 4\fi + \@modulo{\the\@tempcnta}{7}% + \setcounter{datedayname}{\the\@den}% + \addtocounter{datedayname}{1}% + \setdayname{\thedatedayname}% +} + +\def\datedate{\@datedate}% + +\def\dateselectlanguage#1{% + \csname @datelanguage#1\endcsname + \setdayname{\thedatedayname}% + \setmonthname{\thedatemonth}% +} + +\def\ifleapyear#1{%#1 year + \ifnum#1>1500 + \@modulo{#1}{100}% + \ifnum\@den=0 + \@modulo{#1}{400}% + \else + \@modulo{#1}{4}% + \fi + \else + \@modulo{#1}{4}% + \fi + \ifnum\@den=0 +} + +\def\ifvaliddate#1#2#3{% + \ifleapyear{#1}% + \@tempcnta=29 + \else + \@tempcnta=28 + \fi + \gdef\@errmessage{}% + \ifnum#1<1 + \gdef\@errmessage{Package datenumber: % + invalid date: year < 1, #1/#2/#3}% + \fi% + \ifnum#2<1 + \gdef\@errmessage{Package datenumber: % + invalid date: month < 1, #1/#2/#3}% + \fi% + \ifnum#2>12 + \gdef\@errmessage{Package datenumber: % + invalid date: month > 12, #1/#2/#3}% + \fi% + \ifnum#3<1 + \gdef\@errmessage{Package datenumber: % + invalid date: day < 1, #1/#2/#3}% + \fi% + \@tempcntb= + \ifcase#2 31\or 31\or\the\@tempcnta\or 31\or 30\or 31\or 30 + \or 31\or 31\or 30\or 31\or 30\else 31 + \fi\relax + \ifnum#3>\@tempcntb + \gdef\@errmessage{Package datenumber: % + invalid date: day > \the\@tempcntb, #1/#2/#3}% + \fi% + \ifnum#1=1582 + \ifnum#2=10 + \ifnum#3>4 + \ifnum#3<15 + \gdef\@errmessage{Package datenumber: % + invalid date: #1/#2/#3}% + \fi + \fi + \fi + \fi + \ifx\@errmessage\empty +} + +\def\@yearloop#1{% + \@tempcnta=\the@startyear% + \loop + \ifleapyear{\@tempcnta}% + \addtocounter{@dayscnt}{366}% + \else + \addtocounter{@dayscnt}{365}% + \fi + \ifnum\@tempcnta=1582 + \addtocounter{@dayscnt}{-10}% + \fi + \advance \@tempcnta by 1 + \ifnum\@tempcnta=#1\else + \repeat +} + +\newcount\@nom\newcount\@den + +\def\@modulo#1#2{% + \@nom=#1\relax + \@den=#2\relax + \divide\@nom by \@den% + \multiply\@nom by \@den% + \@den=#1% + \advance\@den by -\@nom% +} + +\setstartyear{1800} + +\endinput +%% +%% End of file `datenumber.sty'. |