diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/calendar/yearly.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/calendar/yearly.dtx')
-rw-r--r-- | macros/latex/contrib/calendar/yearly.dtx | 340 |
1 files changed, 340 insertions, 0 deletions
diff --git a/macros/latex/contrib/calendar/yearly.dtx b/macros/latex/contrib/calendar/yearly.dtx new file mode 100644 index 0000000000..ea01432c9d --- /dev/null +++ b/macros/latex/contrib/calendar/yearly.dtx @@ -0,0 +1,340 @@ +%\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 |