diff options
Diffstat (limited to 'Master/texmf-dist/tex/plain/calendar/calend0.tex')
-rw-r--r-- | Master/texmf-dist/tex/plain/calendar/calend0.tex | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/calendar/calend0.tex b/Master/texmf-dist/tex/plain/calendar/calend0.tex new file mode 100644 index 00000000000..854adc3cab6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/calend0.tex @@ -0,0 +1,156 @@ +%% +%% FILE calend0.tex +%% Modificat 9/12/92 +\catcode`\@=11 +\newif\ifleapyear +\def\loadadvanced{% + \input calend1.tex\relax} +\newcount\date +\newcount\weekd +\newcount\Year +\newcount\yearbase +\newcount\Month +\newcount\Day +\newcount\@catch +\newcount\timezone\timezone=0 +\def\setyear#1{\Year=#1 + \advance\Year by-1900\calculateyearbase} +\def\nextyear{\advance\Year by1 + \calculateyearbase} +\def\settimezone#1{\timezone=#1 + \multiply\timezone by 1000 + \divide\timezone by24} +% \ifleapyear is set; +% \yearbase is the number of +% days passed from 1900, Jan 0 +% to New year's date; +\def\calculateyearbase{% + \yearbase=-1 + {\count0=\Year\divide\count0 by4 + \multiply\count0 by4 + \ifnum\Year=\count0 + \global\@catch=0\else\global\@catch=1\fi}% + \ifcase\@catch \leapyeartrue\or + \leapyearfalse\fi + {\count0=\Year\multiply\count0 + by1461\advance\count0 by3 + \divide\count0 by4 + \global\@catch=\count0}% + \advance\yearbase by\@catch + \ifnum\Year=0\yearbase=0\leapyearfalse\fi} +% Gives the number of days passed +% at the end of each month. +% Value returned in \Day +\def\monthdays{\global + \@catch=\ifcase\Month 0\or31\or + 59\or90\or120\or151\or181\or212\or + 243\or273\or304\or334\or365\fi + {\ifleapyear\ifnum\Month>1 + \global\advance\@catch by1\fi\fi}% + \Day=\@catch} +% Long date of \Month, \Day +% in the year \Year. +% Value returned in \date +\def\dayno{\date=\Day{\advance + \Month by-1\monthdays + \advance\date by\Day + \global\advance\date by\yearbase}} +% Long date MOD 7 gives the week day. +% Sunday is 0 and Saturday is 6. +\def\weekday{{\count0=\date\relax + \count1=\count0\divide\count0 by 7 + \multiply\count0 by 7 +\advance\count1 by -\count0 + \global\weekd=\count1}} +% Name of week day (Local). +\def\theweekday{\weekday + \ifcase\weekd + Sunday\or Monday\or Tuesday\or + Wednesday\or Thursday\or Friday\or + Saturday\fi} +% (Local) +\def\theshortweekday{\weekday + \ifcase\weekd Sun\or Mon\or Tue\or + Wed\or Thu\or Fri\or Sat\fi} +% Gives the usual calendar date for +% a long date in counter \date. +% Returned in \Day, \Month and \Year +\def\caldate{\Year=\date + \multiply\Year by4\divide\Year by1461 + \calculateyearbase + {\advance\date by-\yearbase\Month=0 + \loop\monthdays\ifnum\Day<\date + \global\advance\Month by1\repeat + {\advance\Month by-1\monthdays + \advance\date by-\Day + \global\Day=\date}}} +% Name of month \Month. (Local) +\def\themonth{\ifcase\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} +% Find the next (previous) day after +% (before) \date with \weekday=#1. +\def\nextday#1{{\count0=#1\weekday + \advance\count0 by-\weekd + \ifnum\count0<0\advance\count0 by7\fi + \global\advance\date by\count0}} +\def\prevday#1{\snextday#1 + \advance\date by-7} +\def\snextday#1{\advance\date by1 + \nextday#1} +\def\sprevday#1{\advance\date by-1 + \prevday#1} +% \beginevents...\endevents +% contains control sequences like +% \event or \evday or sequences +% generating these commands. +\newwrite\evefile +\def\beginevents{% + \immediate\openout + \evefile=\jobname.eve\relax} +\def\endevents{\immediate\closeout + \evefile\end} +\newtoks\evetext +\def\event#1/#2[#3]{\evetext={#3}% + \Day=#1\Month=#2\dayno + \evday[\the\evetext]} +\def\evday[#1]{\immediate\write\evefile{% + \string\evententry{\the\date}{#1}}} +\def\thecaldate{\the\Day/\the\Month} +\def\mute{\def\thecaldate{}} +% +% 2nd run commands +% +\newcount\currentdate +\newcount\lastdate +\newcount\nextdate +\newif\ifdoing@day +\newif\ifholy +\def\holy{\global\holytrue} +\def\upto#1{\nextdate=#1 + \loop\advance\currentdate by1\relax + \ifnum\currentdate<\nextdate + \begin@day\end@day\repeat} +\def\evententry#1#2{\unskip + \ifnum#1>\lastdate\else + \ifnum\currentdate<#1 + \ifdoing@day\end@day\fi + \upto{#1}\fi + \ifnum\currentdate=#1 + \ifdoing@day\else\begin@day\fi + #2\par\fi\fi} +\def\begin@day{\doing@daytrue + \date=\currentdate\caldate + \message{<\thecaldate}\beginday} +\def\end@day{\endday\doing@dayfalse + \global\holyfalse\message{>}} +\def\makeagenda#1{\input #1.sty\relax + \begin@day\input\jobname.eve\relax + \evententry{\the\lastdate}{}\end@day + \epilog\end} +% Do not read events +\def\makeempty{\begin@day + \evententry{\the\lastdate}{}\end@day} +\catcode`\@=12 |