diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/calendar/autofilo.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/calendar/autofilo.dtx | 642 |
1 files changed, 642 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/calendar/autofilo.dtx b/Master/texmf-dist/source/latex/calendar/autofilo.dtx new file mode 100644 index 00000000000..34151b19e02 --- /dev/null +++ b/Master/texmf-dist/source/latex/calendar/autofilo.dtx @@ -0,0 +1,642 @@ +%\iffalse +% +% file: autofilo.dtx +% Copyright (C) 1997 by Frank Bennett. All rights reserved. +% +% IMPORTANT NOTICE: +% +% You are not allowed to change this file. You may however copy +% this file to a file with a different name and then change the +% copy if (a) you do not charge for the modified code, (b) you +% acknowledge the author of this file in the new file, if it +% is distributed to others, and (c) you attach these same +% conditions to the new file. +% +% You are not allowed to distribute this file alone. You are not +% allowed to take money for the distribution or use of this file +% (or a changed version) except for a nominal charge for copying +% etc. +% +% You are allowed to distribute this file under the condition that +% it is distributed with all of its contents, intact. +% +% 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. Better yet, make a contribution to +% my pension. Account details available on request. +% +%\fi +% +% \def\fileversion{3.1.1.1} +% \def\filedate{1998/01/17 18:13:42} +% +% \iffalse +% +%<*driver> +\documentclass{ltxdoc} +%\CodelineIndex +%\EnableCrossrefs +\begin{document} +\OnlyDescription % Comment out for implementation details +\DocInput{autofilo.dtx} +\end{document} +%</driver> +%\fi +% +%\iffalse +% Source tree moved under RCS +% --------------------------- +% autofilo.dtx,v +% Revision 3.1.1.1 1998/01/17 18:13:42 root +% Release code, checksum verified +% +% Revision 3.1 1998/01/17 16:56:58 root +% Release code +% +% Revision 2.8 1998/01/16 11:52:55 root +% *** empty log message *** +% +% Revision 2.7 1998/01/15 10:45:24 root +% Filofax page now comes out centered on the physical page. +% Just fold the thing in half and cut. +% +% Revision 2.6 1997/12/05 17:01:48 root +% Added zero width vrule to force left-hand cut rule to right +% position even when jawline has no width. +% +% Revision 2.5 1997/12/05 13:47:40 root +% Fixed quandary of overlapping revisions. +% +% Revision 2.4 1997/12/05 12:14:08 root +% Fixed missing brace in af@circle, and added RequirePackage +% for keyval parser. +% Revision 2.2.1.5 1997/11/26 11:07:51 bennett +% Final change to documentation. +% +% Revision 2.2.1.4 1997/11/07 16:27:06 root +% Fixed checksum, added some documentation for the jawmarks +% code. +% +% Revision 2.2.1.3 1997/11/07 16:15:14 root +% Final fixes to jawmark code, maybe. +% +% Revision 2.2.1.2 1997/11/07 16:10:59 root +% Patched up code for jaw marks. +% +% Revision 2.2.1.1 1997/11/07 14:57:37 root +% Trial code for jaw marks. +% +% Revision 2.4 1997/12/05 12:14:08 root +% Fixed missing brace in af@circle, and added RequirePackage +% for keyval parser. +% +% Revision 2.3 1997/11/07 14:52:50 root +% Added trial code for jaw marks. +% +% Revision 2.2 1997/11/07 10:44:05 root +% Release code. +% +% Revision 2.1.1.1 1997/11/04 05:06:07 root +% Development branch +% +% Revision 2.1 1997/11/01 15:17:06 bennett +% Release code. +% +% Revision 1.2 1997/10/29 20:03:07 bennett +% *** empty log message *** +% +% Revision 1.1 1997/10/29 08:17:52 root +% Initial revision +% +%\fi +% +% \title{User's Guide to the \texttt{autofilo} +% 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 provides an environment +% within which pages are framed with cut lines and +% printed with punch-marks, so that printed text can +% easily be inserted into a filofax or binder. +% \end{abstract} +% +% \CheckSum{692} +% +% \section{About the Style} +% +% This style provides a rough solution to the design +% problem it addresses, but it does work. Pages are +% always printed in landscape, rotated using the "lscape" +% package from the "graphics" bundle, and centered on the +% physical paper.\footnote{As a technical note, the frame itself +% is not rotated, because it is inserted independently of +% the output boxes controlled by the \LaTeX{} output routine. +% The output modes (two-column, +% and a hacked-together four-column mode) have +% been modified to understand blocks of text as \cs{hbox}es +% to be laid atop one another, rather than as \cs{vbox}es +% to be set alongside one another.} It accepts two options, +% "twocolumn" (the default) and "fourcolumn". +% +% The style provides an environment called "autofilo". +% Most often, users of this package will be style +% authors who want to incorporate it into other +% environments that do more specific things. Because +% "autofilo" accepts several "keyval"-style parameters, +% style authors may have a use for documentation for those +% optional parameters. So here is some sample documentation: +% +% \begin{description} +% \item[\texttt{punchcluster}] Most filofaxes have two or +% or more clusters or groups of punches to hold the +% pages in place. This option sets the number of punches +% in each cluster. The default is three. +% \item[\texttt{intraspace}] This governs the space +% between punchouts within a group. The default is +% 19.25mm. +% \item[\texttt{punchgroups}] This option sets the number +% of groups of punches. The default is two groups. +% \item[\texttt{interspace}] This option sets the +% distance between the groups of punches. The default +% is 51.25mm. +% \item[\texttt{pageheight}] This fixes the height +% of a filofax page (not the physical paper on +% which it is printed). The default is 172mm. +% \item[\texttt{pagewidth}] This fixes the width of an individual +% page. The physical printed area will be twice this figure. +% The default is 95mm, for a 190mm printed area. +% \item[\texttt{grip}] This adjusts the distance from the +% edge of the page to the outer edge of the punchouts. +% Defaults to 5mm. +% \item[\texttt{punchmargin}] This adjusts the distance from the +% edge of the text to the inner edge of the punchouts. +% Defaults to 2mm. +% \item[\texttt{punchsize}] Size, in points, of punchouts. +% Defaults to 15. +% \item[\texttt{topspace}] Gap between top of filofax page +% and top of text page. +% \item[\texttt{bottomspace}] Gap between bottom of filofax page +% and bottom of text page. +% \item[\texttt{jawspread}] If set to a positive length, this places a set +% of rules the width of the punchmarks on either side of each +% punchhole, centered on its center and spread the distance specified. +% This can be useful as a guide with some one-hole punches that are +% designed to be used ``blind''. +% \item[\texttt{jawline}] Sets the width of the lines used to make +% jawmarks. The default value is \texttt{0.4pt}. +% \end{description} +% +% \StopEventually{\PrintIndex} +% +% \section{The Class File} +% +% \begin{macrocode} +%<*style> +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\ProvidesPackage{autofilo} + [1997/12/05 12:14:08 2.4 Filofax page outlines (Frank Bennett)] +% \end{macrocode} +% We need a boolean to process our sole option. +% \begin{macrocode} +\newif\if@usequadruplecolumn +% \end{macrocode} +% We provide four columns as an option. Two columns (one for +% each side of what will be the filofax page) will be the +% default. +% \begin{macrocode} +\DeclareOption{fourcolumn}{\@usequadruplecolumntrue} +% \end{macrocode} +% Process the option if present, and load a supporting package. +% \begin{macrocode} +\ProcessOptions +\RequirePackage{lscape} +\RequirePackage{keyval} +% \end{macrocode} +% Declare some variables. +% \begin{macrocode} +\newif\if@quadruplecolumn +\newbox\@leftleftcolumn +\newbox\@leftrightcolumn +\newbox\@rightleftcolumn +\newbox\@rightrightcolumn +\newcount\af@punchcluster +\newcount\af@punchgroups +\newlength\af@interspace +\newlength\af@intraspace +\newlength\af@grip +\newlength\af@punchmargin +\newcount\af@punchsize +\newlength\af@punchwidth +\newlength\af@halfpunchwidth +\newcount\af@subtempcount +\newcount\af@tempcount +\newlength\af@textwidth +\newlength\af@marginrel +\newlength\af@halftextwidth +\newlength\af@textheight +\newlength\af@topmargin +\newlength\af@bottommargin +\newcount\col@no +\newlength\af@jawspread +\newlength\af@halfjawspread +\newlength\af@jawline +% \end{macrocode} +% We'll need a macro to turn on the four-column mode. +% This is just a modified version of \cs{twocolumn} in +% the \LaTeX{} distribution. +% \begin{macrocode} +\def\quadruplecolumn{% + \clearpage + \global\columnwidth\textwidth + \global\advance\columnwidth-3\columnsep + \global\divide\columnwidth by4\relax + \global\hsize\columnwidth + \global\linewidth\columnwidth + \global\@twocolumntrue + \global\@quadruplecolumntrue + \global\@firstcolumntrue + \col@number=4\relax} +% \end{macrocode} +% Catch the output routine when the new mode is in effect. +% \begin{macrocode} +\def \@opcol {% + \if@twocolumn + \if@quadruplecolumn + \@outputqdrplcol + \else + \@outputdblcol + \fi + \else + \@outputpage + \fi + \global \@mparbottom \z@ \global \@textfloatsheight \z@ + \@floatplacement} +% \end{macrocode} +% Add a new output routine for the new mode, and a modified +% version of the two-column output routine. Note that these +% work \textit{only} inside the \texttt{landscape} environment. +% \begin{macrocode} +\def\@outputqdrplcol{% + \ifcase\col@no + \global\@firstcolumnfalse + \global \setbox\@leftleftcolumn \box\@outputbox + \or + \global \setbox\@leftrightcolumn \box\@outputbox + \or + \global \setbox\@rightleftcolumn \box\@outputbox + \or + \global \@firstcolumntrue + \global\setbox\@rightrightcolumn\box\@outputbox + \setbox\@outputbox \vbox to\textwidth{% + \hb@xt@\textheight {% + \vrule height\columnwidth depth0pt width0pt + \box\@rightrightcolumn \hss}% + \vfill + \hrule \@width\columnseprule + \vfill + \hb@xt@\textheight {% + \vrule height\columnwidth depth0pt width0pt + \box\@rightleftcolumn \hss}% + \vfill + \hrule \@width\columnseprule + \vfill + \hb@xt@\textheight {% + \vrule height\columnwidth depth0pt width0pt + \box\@leftrightcolumn \hss}% + \vfill + \hrule \@width\columnseprule + \vfill + \hb@xt@\textheight {% + \box\@leftleftcolumn \hss}% + }% + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \endgroup + \fi + \global\advance\col@no by1\relax + \ifnum\col@no=4\relax\global\col@no=0\fi} +\def\@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \setbox\@outputbox \vbox to\textwidth{% + \hbox to\textheight{% + \box\@outputbox}% + \vfil + \hrule \@width\columnseprule + \vfil + \hbox to\textheight{% + \box\@leftcolumn}}% + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \endgroup + \fi +} +% \end{macrocode} +% We use circles to make punchmarks. +% When making circles, \TeX{} will put the center of the +% circle at point, but consume horizontal space equal +% to the full diameter of the circle. To compensate, +% we need to skip forward by radius, and back again +% after laying each circle. +% \begin{macrocode} +\def\af@circle{\hbox{\hskip\af@halfpunchwidth% + \ifnum\af@jawspread>0\relax% + \hskip-\af@halfjawspread% + \hskip-\af@jawline% + \vrule depth\af@halfpunchwidth% + height\af@halfpunchwidth% + width\af@jawline% + \hskip\af@halfjawspread% + \else% + \vrule depth\af@halfpunchwidth% + height\af@halfpunchwidth% + width0pt% + \fi% + \circle{\af@punchsize}% + \hskip-\af@punchwidth% + \ifnum\af@jawspread>0\relax% + \hskip\af@halfjawspread% + \vrule depth\af@halfpunchwidth% + height\af@halfpunchwidth + width\af@jawline% + \hskip-\af@halfjawspread% + \hskip-\af@jawline% + \fi% + \hskip-\af@halfpunchwidth}} +% \end{macrocode} +% We define a looping command that lays down a cluster +% of circles. Grouping allows this loop to be nested +% in another. +% \begin{macrocode} +\def\af@group{% + \bgroup% + \af@tempcount=0% + \af@circle% + \loop\advance\af@tempcount by1\relax% + \ifnum\af@tempcount<\af@punchcluster% + \hskip\af@intraspace\relax\af@circle% + \repeat% + \egroup} +% \end{macrocode} +% We define a command that lays down a set of clusters +% (groups). +% \begin{macrocode} +\def\af@circles{% + \af@tempcount=0\relax% + \af@group% + \loop\advance\af@tempcount by1\relax% + \ifnum\af@tempcount<\af@punchgroups% + \hskip\af@interspace\relax\af@group% + \repeat% + \af@tempcount=0} +% \end{macrocode} +% The following command creates a set of punchmarks. +% \begin{macrocode} +\def\af@punches{% + \hbox to\af@textheight{\hfil\af@circles\hskip\af@halfpunchwidth\relax\hfil}} +% \end{macrocode} +% The following creates a frame. The model was lifted from the "geometry" +% package. +% \begin{macrocode} +\def\@@@innerframe{% + \moveright-\af@topmargin% + \vbox to 0pt{% + \vskip\topmargin% + \vbox to0pt{\hrule width\af@textheight\vss}% + \hbox to\af@textheight{\llap{\vrule height\af@textwidth}% + \hfil\vrule height\af@textwidth}% + \vskip-\af@halftextwidth% + \vbox to0pt{\hrule width\af@textheight\vss}% + \vskip-\af@halftextwidth% + \vskip\af@grip% + \nointerlineskip\af@punches\nointerlineskip% + \vskip-\af@punchwidth% + \vskip-\af@grip% + \vskip\af@textwidth% + \vskip-\af@punchwidth% + \vskip-\af@grip% + \nointerlineskip\af@punches\nointerlineskip% + \vskip\af@grip% + \vbox to0pt{\hrule width\af@textheight\vss}% + \vss}}% +% \end{macrocode} +% A further modification of the output routine, +% this time to put the frame in place. This, too, is +% lifted from "geometry". It has been modified only +% slightly, but we drop \LaTeX 2.09 support altogether. +% \begin{macrocode} +\newif\if@latextwoe +\@ifundefined{if@compatibility}{\@latextwoefalse}{\@latextwoetrue} +\if@latextwoe +\def\@outputpage{% +\begingroup % the \endgroup is put in by \aftergroup + \let \protect \noexpand + \@resetactivechars + \let\-\@dischyph + \let\'\@acci\let\`\@accii\let\=\@acciii + \let\\\@normalcr + \let\par\@@par %% 15 Sep 87 + \shipout \vbox{% + \set@typeset@protect + \aftergroup \endgroup + \aftergroup \set@typeset@protect + \if@specialpage + \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% + \fi + \if@twoside + \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot + \let\@themargin\oddsidemargin + \else \let\@thehead\@evenhead + \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \fi + \fi + \reset@font + \normalsize + \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \@begindvi + \moveright\@themargin %<<<<<<<<<<<<<<<<<<<<< added + \vtop{\@@@innerframe %<<<<<<<<<<<<<<<<<<<<< added + \vskip \topmargin + \vskip \af@marginrel +% \moveright\@themargin \vbox OPENBRACE %<<<<<<<<<<<< original + \moveright\af@topmargin% <<<<<<<<<<<< Bennett + \vbox{% %<<<<<<<<<<<<<<<<<<<<< modified + \setbox\@tempboxa \vbox to\headheight{% + \vfil + \color@hbox + \normalcolor + \hb@xt@\textwidth {% + \let \label \@gobble + \let \index \@gobble + \let \glossary \@gobble %% 21 Jun 91 + \@thehead + }% + \color@endbox + }% %% 22 Feb 87 + \dp\@tempboxa \z@ + \box\@tempboxa + \vskip \headsep + \box\@outputbox + \baselineskip \footskip + \color@hbox + \normalcolor + \hb@xt@\textwidth{% + \let \label \@gobble + \let \index \@gobble %% 22 Feb 87 + \let \glossary \@gobble %% 21 Jun 91 + \@thefoot + }% + \color@endbox + }}%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< One more close bracket added + }% +\global \@colht \textheight +\stepcounter{page}% +\let\firstmark\botmark +} +\else +\message{Sorry, autofilo.sty works only with LaTeX2e} +\fi +% \end{macrocode} +% Set some global parameters. +% \begin{macrocode} +\headheight=0pt +\headsep=0pt +\footskip=0pt +\marginparwidth=0pt +\marginparsep=0pt +\pagestyle{empty} +\parindent=0pt +\raggedbottom +\columnseprule=0.0pt% +\raggedright +% \end{macrocode} +% Some option definitions. +% \begin{macrocode} +\define@key{opt}{pageheight}{% + \af@textheight=#1\relax} +\define@key{opt}{pagewidth}{% + \af@halftextwidth=#1\relax} +\define@key{opt}{columnsep}{% + \columnsep=#1\relax} +\define@key{opt}{punchcluster}{% + \af@punchcluster=#1} +\define@key{opt}{punchgroups}{% + \af@punchgroups=#1} +\define@key{opt}{interspace}{% + \af@interspace=#1} +\define@key{opt}{intraspace}{% + \af@intraspace=#1} +\define@key{opt}{grip}{% + \af@grip=#1} +\define@key{opt}{punchmargin}{% + \af@punchmargin=#1} +\define@key{opt}{punchpoints}{% + \af@punchsize=#1} +\define@key{opt}{topspace}{% + \af@topmargin=#1} +\define@key{opt}{bottomspace}{% + \af@bottommargin=#1} +\define@key{opt}{jawspread}{% + \af@jawspread=#1} +\define@key{opt}{jawline}{% + \af@jawline=#1} +% \end{macrocode} +% The default values for the options. +% \begin{macrocode} +\af@textheight=172mm +\af@halftextwidth=95mm +\columnsep=14pt +\af@punchcluster=3 +\af@punchgroups=2 +\af@interspace=51.25mm +\af@intraspace=19.25mm +\af@grip=5mm +\af@punchmargin=2mm +\af@punchsize=15 +\af@topmargin=2pt +\af@bottommargin=0pt\relax +\af@jawline=0.4pt% +% \end{macrocode} +% The remaining dimensions must be calculated inside +% the landscape environment. We define that now. +% \begin{macrocode} +\def\autofilo#1{% + \setkeys{opt}{#1}% + \oddsidemargin=-1in\relax% + \af@textwidth\paperwidth% + \advance\af@textwidth by-\af@textheight% + \divide\af@textwidth by2\relax% + \advance\oddsidemargin by\af@textwidth% + \evensidemargin=-1in\relax% + \advance\evensidemargin by\af@textwidth% + \topmargin=-1in\relax% + \af@textwidth\paperheight% + \advance\af@textwidth by-\af@halftextwidth% + \advance\af@textwidth by-\af@halftextwidth% + \divide\af@textwidth by2\relax% + \advance\topmargin by\af@textwidth\relax% + \landscape% + \af@halfjawspread\af@jawspread% + \divide\af@halfjawspread by2\relax% + \af@punchwidth=\af@punchsize pt% + \af@halfpunchwidth\af@punchwidth% + \divide\af@halfpunchwidth by2% + \textheight\af@textheight% + \advance\textheight by-\af@topmargin% + \advance\textheight by-\af@bottommargin% + \af@textwidth\af@halftextwidth% + \multiply\af@textwidth by2\relax% + \textwidth=\af@textwidth% + \advance\textwidth by-2\af@punchwidth% + \advance\textwidth by-2\af@grip% + \advance\textwidth by-2\af@punchmargin% + \af@marginrel\af@grip% + \advance\af@marginrel by\af@punchmargin% + \advance\af@marginrel by\af@punchwidth% + \vsize\textheight% + \hsize\textwidth% + \@colroom\vsize% + \@colht\vsize% + \if@usequadruplecolumn% + \quadruplecolumn% + \else% + \twocolumn% + \fi} +% \end{macrocode} +% The end of the environment is a simple thing. +% \begin{macrocode} +\def\endautofilo{% + \endlandscape} +%</style> +% \end{macrocode} +% \Finale \PrintChanges + + + + + |