%% %% This is file `termcal.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% termcal.dtx (with options: `package') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from termcal.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file termcal.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \def\RCSID$#1 #2 #3 #4 #5${\def\fileversion{#3}\def\filedate{#4}} \RCSID$Id: termcal.dtx,v 1.8 1997/01/11 17:04:40 mitchell Exp $ \def\docdate{1996/01/10} \newcommand{\calprintdate}{% \ifnewmonth\framebox{\monthname\ \ordinaldate}% \else \ordinaldate\fi } \newcommand{\calprintclass}{\textbf{\small\theclassnum}} \ProvidesPackage{termcal}[\filedate\space\fileversion\space Latex2e package to print a Term calendar] \NeedsTeXFormat{LaTeX2e} \RequirePackage{longtable} \RequirePackage{ifthen} \newlength{\calboxdepth}\setlength\calboxdepth{1in} \newlength\calwidth\setlength\calwidth{\textwidth} \newlength{\ca@boxwidth} %% set by \endcalendar \newcounter{ca@dpw} \newcounter{ca@numwks} %% weeks in calendar \newcounter{ca@wknum} \newtoks\ca@doaweek \newtoks\ca@doweeks \newtoks\ca@colhead \newif\ifca@chead \newenvironment{calendar}[2]% {% \setcounter{ca@numwks}{#2} \setdate{#1} \setcounter{ca@dpw}{0} \setcounter{classnum}{1} } { \ifca@chead\ca@doweeks{\the\ca@colhead\endhead\hline\hline}\fi \setcounter{ca@wknum}{0} \whiledo{\value{ca@wknum}<\value{ca@numwks}}% {\stepcounter{ca@wknum}% \addtotoks{\ca@doweeks}{\the\ca@doaweek\\\hline}} \ca@boxwidth=\calwidth \divide\ca@boxwidth by \c@ca@dpw\relax \advance\ca@boxwidth by -2\tabcolsep\relax \setlength\@tempdima\arrayrulewidth\relax \multiply\@tempdima\c@ca@dpw\relax \advance\@tempdima\arrayrulewidth\relax \divide\@tempdima\c@ca@dpw\relax \advance\ca@boxwidth by -\@tempdima\relax \begin{longtable}[l] {|*{\theca@dpw}{p{\ca@boxwidth}|}@{}}% \hline \the\ca@doweeks \end{longtable} } \newcommand\addtotoks[2]{#1\expandafter{\the#1#2}} \ca@doaweek={\stepcounter{ca@wknum}\ignorespaces} \newcommand\calday[2][]{\stepcounter{ca@dpw}% \ifca@fday\addtotoks\ca@doaweek{&}\addtotoks\ca@colhead{&}\fi \addtotoks\ca@doaweek{\ca@doaday{#2}} \def\@tempa{#1}\ifx\@tempa\@empty \else\addtotoks\ca@colhead{\strut\scshape\centering #1}\ca@cheadtrue\fi \ca@fdaytrue } \newif\ifca@fday \newcommand\skipday{\addtotoks\ca@doaweek{\advancedate}} \newcounter{classnum} \let\ca@normbs=\\ \newcommand\ca@doaday[1]{ \hbox{\vrule depth \calboxdepth height 0pt width 0pt\vtop{ #1% %options specified by |\calday| \csname\curdate options\endcsname% % options specified by date \ifclassday\csname C\theclassnum options\endcsname\fi %by classnumber \hbox to \hsize{\calprintdate\hfill\ifclassday\calprintclass\fi} \vspace{2pt} \begingroup \let\\=\ca@normbs \raggedright \sloppy \the\weeklytext\par \csname\curdate text\endcsname \ifclassday\csname C\theclassnum text\endcsname \stepcounter{classnum}\fi \endgroup }} \global\newmonthfalse \advancedate } \long\def\ca@addmacro#1#2{ \expandafter\ifx\csname#1\endcsname\relax% \expandafter\def\csname#1\endcsname{#2} \else \toks0= \expandafter\expandafter\expandafter{\csname#1\endcsname} \toks2={#2} \expandafter \edef\csname#1\endcsname{\the\toks0 \the\toks2 }\fi} \newcommand\options[1]{\ca@addmacro{#1options}} \newif\ifclassday \newcommand{\classday}{\classdaytrue} \newcommand{\noclassday}{\classdayfalse} \newtoks\weeklytext \newcommand\caltext[2]{\ca@addmacro{#1text}{#2\par}} \newcounter{textdaycount}\setcounter{textdaycount}1 \newcommand\caltexton[2]{\setcounter{textdaycount}{#1} \caltext{C#1}{#2}} \newcommand\caltextnext[1]{\advance\c@textdaycount by 1 \caltext{C\thetextdaycount}{#1}} \newcounter{date} \newcounter{month} \newcounter{year} \newcommand\curdate{\arabic{month}/\arabic{date}/\arabic{year}} \newcommand\monthname{\ifcase\c@month\or Jan\or Feb\or Mar\or Apr% \or May\or June\or July\or Aug\or Sep\or Oct% \or Nov\or Dec\fi} \newcommand\advancedate{\stepcounter{date} \ifnum\thedate>\monthlength\relax \addtocounter{date}{-\monthlength}\advancemonth\fi} \newif\ifnewmonth\newmonthtrue \newcommand\advancemonth{% \global\newmonthtrue\stepcounter{month} \ifnum\c@month>12 \stepcounter{year}\setleap\setcounter{month}1\fi} \newif\ifleap \newcommand\setleap{% \@tempcnta=\c@year \divide\@tempcnta by 4 \multiply\@tempcnta by 4 \ifnum\@tempcnta=\c@year\global\leaptrue \else\global\leapfalse\fi} \newcommand\monthlength{% \ifcase\c@month\or31\or\ifleap29\else28\fi \or31\or30\or31\or30\or31\or31\or30\or31\or30\or31\fi% \relax} \newcommand\setdate[1]{\setdate@#1!} \def\setdate@#1/#2/#3!{ \setcounter{month}{#1} \setcounter{date}{#2} \setcounter{year}{#3} \global\newmonthtrue\setleap} \newcommand\ordinaldate{\ordinal{\c@date}} \newcommand\ordinal[1]{% \let\last@=\relax\let\last@@=\relax \expandafter\@rd\the#1x} \newcommand\@rd[1]{\ifx#1x\if\last@@1th\else\@rdend{\last@}\fi\else \let\last@@=\last@\def\last@{#1}#1\expandafter\@rd\fi} \newcommand\@rdend[1]{\ifcase#1 th\or st\or nd\or rd\else th\fi} \endinput %% %% End of file `termcal.sty'.