%\iffalse % % File yearly.dtx % Copyright (C) 1996 by Frank Bennett. All rights reserved. % % This sub-package is provided for demonstration % purposes. Please feel free to edit it in any way whatsoever, % but do not distribute it in an altered condition to others % without permission. % % For error reports, or offers to help make this a more powerful, % friendlier, and altogether more thrilling package, please contact me on % fb@soas.ac.uk % %<*dtx> \ProvidesFile{yearly.dtx} %</dtx> %<style,class>\NeedsTeXFormat{LaTeX2e}[1995/06/01] %<style>\ProvidesPackage{yearly} %<style> [1997/11/06 07:33:21 2.1.1.6 Trivial yearly calendar (Frank Bennett)] % \fi % % \def\fileversion{2.1.1.6} % \def\filedate{1997/11/06 07:33:21} % % % \iffalse %<*driver> \documentclass{ltxdoc} %\CodelineIndex %\EnableCrossrefs \begin{document} \OnlyDescription % Comment out for implementation details \DocInput{yearly.dtx} \end{document} %</driver> % \fi % % \changes{v1.0}{1996/12/26}{Initial Version} % \changes{v1.1}{1997/10/18}{New public release of all styles % and modules incorporating global bug-fixes.} % %\iffalse % Source tree moved under RCS % --------------------------- % yearly.dtx,v % Revision 2.1.1.6 1997/11/06 07:33:21 root % Changed \yrly@theweekday to \theweekday. % % Revision 2.1.1.5 1997/11/06 07:31:25 root % Changed erroneous reference to \mon@firstday to % \yrly@firstday % % Revision 2.1.1.4 1997/11/06 07:30:04 root % Added declaration of \yrly@firstday % % Revision 2.1.1.3 1997/11/06 07:27:56 root % Second round of changes necessary to hook up the three new % options. % % Revision 2.1.1.2 1997/11/06 07:19:47 root % First draft of changes to introduce firstday, labels and % title options. % % Revision 2.1.1.1 1997/11/04 05:06:07 root % Development branch % % Revision 2.1 1997/11/01 14:43:45 bennett % Release code. % % Revision 1.3 1997/10/29 20:15:54 bennett % *** empty log message *** % % Revision 1.2 1997/10/29 15:41:56 root % Globalized assignments to dates@date, dates@day and dates@month. % Apparently save size overflow problems persist with the demo % of this style on small systems. Drat. % % Revision 1.1 1997/10/29 08:17:52 root % Initial revision % %\fi % % \title{User's Guide to the Yearly Calendar package\thanks{This file is version number % \fileversion{}. It was last revised on % \filedate{}.}} % % \author{Frank G. Bennett, Jr.} % % \maketitle % % \setcounter{StandardModuleDepth}{1} % \DeleteShortVerb{\|} % \MakeShortVerb{\"} % % \begin{abstract} % \noindent This package makes a yearly calendar % on one side of A4. % \end{abstract} % % % \CheckSum{171} % % Please see the file \texttt{calguide.tex} for documentation % on this calendar style. % %\StopEventually{\PrintIndex} % % \section{The Macros} % We use the usual language options. % \begin{macrocode} \input calopts.cfg \InputIfFileExists{dates.cfg}{}{} \ProcessOptions % \end{macrocode} % Load some useful code. % \begin{macrocode} %<*style> \RequirePackage{calendar} % \end{macrocode} % Define some key values for use by the calendar environment. % \begin{macrocode} \define@key{opt}{title}{% \def\yrly@title{#1}} \define@key{opt}{labels}{% \@storelabels#1,,{}} \define@key{opt}{firstday}{% \yrly@firstday=#1} \def\yrly@title{\theyear} \newcount\yrly@firstday \yrly@firstday=0\relax % \end{macrocode} % Define a utility macro for use by the \texttt{labels} key. % This stores a comma-delimited list of labels to a single % macro, which can then be used as a line in the table % environment that makes up the calendar. % \begin{macrocode} \newtoks\yrly@tempreg@a \newcount\yrly@tempcount \def\@storelabels{% \def\yrly@labeltext{}% \@@storelabels} \def\@@storelabels#1,#2#{% \ifcat$#1$% \yrly@tempreg@a=\expandafter\expandafter\expandafter{% \expandafter\@gobble\yrly@labeltext}% \edef\yrly@labeltext{\the\yrly@tempreg@a}% \let\next\@gobble% \else% \let\next\@@storelabels% \yrly@tempreg@a=\expandafter{\yrly@labeltext}% \protected@edef\yrly@labeltext{\the\yrly@tempreg@a}% \fi% \next#2{}} % \end{macrocode} % The environment is defined using "\newcalendar" and 17 arguments. % \begin{macrocode} \newcalendar% % \end{macrocode} % The name to be used in calling the calendar style. % \begin{macrocode} {yearly} % \end{macrocode} % A command or group of commands used to print. This should end in a command % that takes one argument. % If we're making DVI, % we need to use the command "\cal@insert" to strip away the braces that surround this % in the Calendar style internals. % \begin{macrocode} {\cal@insert} % \end{macrocode} % First day. % This is expressed as an integer. % Sunday is "0", Saturday is "6". Set this to "7" or more to % start the calendar and each line without any padding to % line up the day of the week. % \begin{macrocode} {\yrly@firstday} % \end{macrocode} % Group Length. % This is an integer, or a macro that expands to an integer. % The table generator will increment a group counter by 1 % each time a new ``item'' is output. It is set to 0 every % time a new group is started. % % \begin{macrocode} {\dates@days} % \end{macrocode} % Subgroup length. % This may be an integer or a macro that expands to an integer. % The table generator will increment a subgroup counter by 1 % each time a new ``item'' is output. It is set to 0 every % time a new subgroup is started. % \begin{macrocode} {7} % \end{macrocode} % Item separator. % The item separator is placed before every item in the table % but the first in a subgroup. % \begin{macrocode} {&} % \end{macrocode} % Increment event. % The date can be incremented after every item, every subgroup % or every group. The letters I, S and G carry these meanings, % respective. % \begin{macrocode} {I} % \end{macrocode} % Calendar header. % Text to issue at the start of a calendar. % You can call on this elsewhere under the nickname % "\cal@header" % \begin{macrocode} {\begin{tabular}[t]{ccccccc}% \multicolumn{7}{c}{\textbf{\themonth}}\\\hline% \yrly@labeltext\\\hline}% % \end{macrocode} % % \subsubsection{Calendar Footer} % Commands and text for the end of the calendar. You % can call on this in other macros as "\cal@footer". % % \begin{macrocode} {\end{tabular}} % \end{macrocode} % % \subsubsection{Group Break} % This is issued at the end of every group but the last. % % \begin{macrocode} {\cal@footer% \ifodd\thumbnails% \\% \else% \rule{0.25in}{0pt}% \fi% \advance\thumbnails by 1% \cal@header} % \end{macrocode} % % \subsubsection{Sub-group Break} % This is issed at the end of every subgroup but the last % one in a calendar or a group. % % \begin{macrocode} {\\} % \end{macrocode} % % \subsubsection{Range Initialization} % Preliminary macros to run before scanning the % overall range go here. % % \begin{macrocode} {} % \end{macrocode} % % \subsubsection{Range Postprocessing} % These commands massage the date scanned for use in the % current calendar. % % \begin{macrocode} {\global\dates@month=1% \global\dates@day=1% \dates@fix% \cal@range@start\dates@date% \message{^^JStart: \theshortweekday\space% \theday\space\theshortmonth\space\theyear}% \global\dates@month=12% \global\dates@day=31% \dates@fix% \caldate% \cal@range@end\dates@date% \message{^^JEnd: \theshortweekday\space% \theday\space\theshortmonth\space\theyear}% \global\dates@date=\cal@range@start% \caldate% \addtolength{\tabcolsep}{-0.5\tabcolsep}% \newcount\thumbnails% \@ifundefined{yrly@labeltext}{% \def\yrly@defaultlabels{}% \yrly@tempcount=1% \global\advance\dates@date by-\dates@weekd% \global\advance\dates@date by\yrly@firstday% \caldate% \loop% \yrly@tempreg@a=\expandafter{\yrly@defaultlabels}% \edef\yrly@defaultlabels{\the\yrly@tempreg@a\theshortweekday,}% \ifnum\yrly@tempcount<7% \global\advance\dates@date by1% \caldate% \advance\yrly@tempcount by 1\relax% \repeat% \expandafter\@storelabels\yrly@defaultlabels,,{}% \dates@date\cal@range@start% \caldate}% {}% \yrly@title\par\bigskip}% % \end{macrocode} % % \subsubsection{Entry Separator} % This is placed before every entry but the first in a list. % % \begin{macrocode} {}% % \end{macrocode} % % \subsubsection{Item Initialization} % Commands that set registers and perform other non-printable % operations on a date by date basis should go here. This can be used to prepare % chunks of extractable text to place in a calendar that % is not being sent to DVI output. % % \begin{macrocode} {\getanycolor}% % \end{macrocode} % % \subsubsection{Entry Initialization} % Commands that are dumped on DVI to define the % macro "\cal@entry@text" for every event entry % that matches the conditions, if any, given to % "\cal@get@appointments" or "\cal@get@events". % The content of this macro is then assembled with % other matching items in "\theappointments" % and "\theevents", so that it can be dropped % into the Item Text field as literal text. And % voil\`a, we can write HTML in \LaTeX. % % \begin{macrocode} {}% % \end{macrocode} % % \subsubsection{Item Text} % And at last, that note we've been looking for! % % \begin{macrocode} {\cal@textcolor{\calcolor}{\theday}} %</style> % \end{macrocode} % \Finale \PrintChanges