% \iffalse %% File: flabels.dtx %% Copyright (C) 1997,1999 Volker B"orchers %% This program can be redistributed and/or modified under the terms %% of the LaTeX Project Public License Distributed from CTAN %% archives in directory macros/latex/base/lppl.txt; either %% version 1 of the License, or any later version. % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{flabels} %[1999/05/19 v1.0 Macros for file/binder labels] % %<*driver> \documentclass{ltxdoc} \usepackage[nice]{flabels} \GetFileInfo{flabels.sty} \begin{document} \title{The \textsf{flabels} package\thanks{This file has version number \fileversion, dated \filedate.}} \author{Volker B\"orchers\thanks{email: boercher@physik.uni-bremen.de}\\ Universit\"at Bremen} \date{\filedate} \maketitle \DocInput{flabels.dtx} \end{document} % % \fi %\iffalse % %% Package `flabels' to use with LaTeX2e % % Version: Date: Changes: % % 1.0 1997/07/16 First working version for "Leitz-Ordner" % optionally including color % 1999/05/19 Only change: added licence informations %\fi % % % \DoNotIndex{\advance,\box,\CurrentOption,\DeclareOption,\def} % \DoNotIndex{\else,\fi,\hrule,\hspace,\newdimen,\newif} % \DoNotIndex{\ifnum,\loop,\MessageBreak,\newcount,\divide} % \DoNotIndex{\PackageWarning,\ProcessOptions,\relax,\repeat} % \DoNotIndex{\color,\textcolor,\colorbox,\begin,\end,\endinput} % \DoNotIndex{\framebox,Rest,\huge,\line,\linethickness,\makebox} % \DoNotIndex{\multiput,\newsavebox,\parbox,\protect,\put,\RequirePackage} % \DoNotIndex{\savebox,\thinlines,\thicklines,\usebox,\setlength} % \DoNotIndex{\l@itztrue,\l@itztrue,\f@llheighttrue,\n@rrowtrue} % \DoNotIndex{\f@llheighttrue,\n@rrowtrue} % \DoNotIndex{\colorl@beltrue,\be@nicetrue,\no@holetrue} % \DoNotIndex{\l@itzfalse,\l@itzfalse,\f@llheightfalse,\n@rrowfalse} % \DoNotIndex{\f@llheightfalse,\n@rrowfalse} % \DoNotIndex{\colorl@belfalse,\be@nicefalse,\no@holefalse} % % \CheckSum{368} % % \begin{abstract} % This package provides macros for typesetting pretty labels % (optionally colored) for the back of files or binders. So far % they are only applicable for the special format of the (for % a4 paper) widely used ``Leitz-Ordner'' (ring binder). We use 2 % macros, the first one for a number of empty labels (for % handwriting) while the second contains a text field. % \end{abstract} % % \tableofcontents % % \section{Introduction} % Thanks to photo-copiers a lot of paper is produced that has to be kept % somewhere and (perhaps) even in some order. If you want to keep an % overview over it you will punch it and put it into a file/binder % (otherwise one or more stacks will do). This package have been % invented to make life with this binders a little bit nicer, prettier % and more colored. % % The |flabels| (`filelabels') package provides two macros for % producing labels for the back of a binder in the wide-spread format % (for a4 paper!) 28.3 $\times$ 31.8 cm (11.1 $\times$ 12.5 inch) with % the back height 31.8 cm (12.5 inch) and different available widths. % % \newlength{\mytextwidth}\setlength{\mytextwidth}{\textwidth} % \addtolength{\mytextwidth}{-2\fboxsep} % \smallskip\noindent % \fbox{\parbox{\mytextwidth}{I hope that further % versions of the |flabels| package will support more than one % binder format. (But this will depend on \emph{You}, the % friendly reader who want to contribute to |flabels| by adding % support for \emph{Your} favourite binder \texttt{:-)}.}} % % % \section{Using the flabels package} % Invoke the |flabels| package by requesting it in the % preamble (Note that this package requires \LaTeXe!): % % |\usepackage[...]{flabels}| % % % \subsection{Quick start}\label{sec:quick} % \begin{itemize} % \item Use option |a4paper| if you need it. % \item Check the format of the binder you have: If the label should be % 37mm wide choose option |narrow|; the \emph{default} width is 60mm. % \item Decide if you want large labels (full height of the binder back). % If you do include option |fullheight| in the |usepackage| command. % \item Use option |color| if you have a color printer or if your % printer at least can translate colors into greyscale-`colors'. % \item Neither call any package that sets page layout parameters (like % |\textheight|) \emph{after} |flabels| nor set them by yourself. % \item If you are using colors: Create a file |color.cfg| including % the line |\ExecuteOptions{}|, where || stands for % your color graphics driver, e.g.\ |dvips| or |xdvi| (see description % of the |color| package). % \item If you are using colors: Set the fore- and background colors for % the ``company label'' and the whole label using |\setbgcompany|, % |\setfgcompany|, |\setbglabel|, |\setfglabel|, each one of this % accepts a color name as argument. % \item Choose the text for the ``company label'' (the command for % getting the default would be |\company{\huge LEITZ}|). % \item In the document: % \begin{itemize} % \item If you want to create 4 ``empty'' labels for handwriting use % command |\emptylabel{4}| % \item If you want to print a label with text use the macro % |\labeltext{text}|. % \item Avoid empty lines (paragraphs) between the label because this % may lead to a wrong vertical and horizontal placement of the % labels. % \end{itemize} % \item Check for overfull |\hboxes| and (if necessary for the printer) % shift the labels on the page up- or downwards using the macro % |\extratopmargin|. % \end{itemize} % % % \subsection{Options}\label{sec:opt} % % The package recognizes the following options\DescribeMacro{Options}: % |leitz|, |fullheight|, |narrow|, |color|, |a4paper|, |nice| and |nohole|. % % \begin{description} % \item[\texttt{leitz}] This option is more-or-less a ``dummy option'' % since |leitz| is the default and, even more, the user has no other % choice. Nevertheless it is an option because this should change in % the future. To cut a long story short: You can ignore this option % for now! % \item[\texttt{fullheight}] See the pictures for the difference between % |fullheight| and labels of normal height in % sec.~\ref{sec:exam}. You may switch from large labels to the smaller % ones (and vice versa) whenever you want from inside the document % using the macros |\fullheight| and |\normalheight|. % \item[\texttt{narrow}] Change the default width of the labels from % 60mm to 37mm. You may also change the width from inside the document % with the commands |\narrowlabels| and |\widelabels|. % \item[\texttt{color}] Use this option if you have a color % printer\footnote{You may also use colors if your printer can % translate real colors into greyscale-`colors'!} to % include the standard \LaTeXe\ package |color|. This package (see % |color|-documentation |grfguide.tex|) needs to know the driver for % which the color informations should be generated. So you have to create % a file |color.cfg| including the line |\ExecuteOptions{}|, % where || stands for your color graphics driver, e.g.\ % |dvips| or |xdvi|. The colors to be used may be set in the preamble % or in the document (see sec.\ \ref{sec:usercmd}). % \item[\texttt{a4paper}] So far only ``Leitz-Ordner'' are supported by % this package which are used for a4 paper. So normally you will % include this option (or use the equivalent option for the % document classes. % \item[\texttt{nice}] This option should be used \emph{only} if you % want to include labels in a normal document! Normally this package % uses the whole page, changing nearly every layout parameter. Since % this makes |flabels| very un-co-operative and forbids the use of % this package inside a normal text document (unlikely that there is % any need for this this but the documentation you read now uses the % option |nice|). The option |nice| makes |flabels| nicer to other % packages. Warning: If you use this option you have to take care % for correct placement on the page for yourself! % \item[\texttt{nohole}] Do not include a marker for the hole in the % back of a ``Leitz-Ordner'' (to be used for an exact alignment of the % label). % \end{description} % % \subsection{User commands}\label{sec:usercmd} % It follows a complete list of all user accessible macros, lengths and % counters. % \subsubsection{Label properties} % Some of these macros have been described before in the options % section. % \begin{itemize} % \item To switch to narrow labels use the macro % |\narrowlabels|\DescribeMacro{\narrowlabels}. % \item To switch to wide labels use the macro % |\widelabels|\DescribeMacro{\widelabels}. % \item To switch to large labels use the macro % |\fullheight|\DescribeMacro{\fullheight}. % \item To switch to small labels use the macro % |\normalheight|\DescribeMacro{\normalheight} % \item To change the text of the ``company label'' use the macro % |\company{}|\DescribeMacro{\company} % \item\DescribeMacro{numberauxlines} Change the number of auxiliary % lines in |\emptylabel| this way:\\ % |\setcounter{numberauxlines}{}| % (default is |4|). Usually you will also change the distance between % the lines \dots % \item \dots\ using the macro % \DescribeMacro{\auxlinedistance}|\auxlinedistance| where % || can be any valid \TeX-dimension. % \item You may also change the appearance of the ``company label'' via % the redefinition of this three \emph{macros}: % \DescribeMacro{\companylabelheight}|\companylabelheight|, % \DescribeMacro{\ylowercompany}|\ylowercompany| and % \DescribeMacro{\yuppercompany}|\yuppercompany|. Each of them are % set to a \emph{number}, that is a lenght measured in the unit % |mm|. You can get the default height of the company label e.g.\ by % |\renewcommand{\companylabelheight}{17}|, since --by default-- this % height is |17mmm|. The other two macros determine the \emph{y-coordinate % of the bottom} of the upper and the lower label. Their default (for % |leitz|) are |160| resp.\ |-68|. % \end{itemize} % \subsubsection{Changing colors} % Set the fore- and background colors for the ``company label'' and the % whole label using |\setbgcompany|\DescribeMacro{\setbgcompany}, % |\setfgcompany|\DescribeMacro{\setfgcompany}, % |\setbglabel|\DescribeMacro{\setbglabel} and % \DescribeMacro{\setfglabel}|\setfglabel| (|fg| stands for `foreground' % and |bg| for `background'), e.g.\ |\setbglabel{white}|. % % You have to use (predefined) color-\emph{names}, like % |black| or |red|. Which names are already defined depends on you % graphics driver. You may define \emph{new} colors following the % |color|-package documentation |grfguide.tex|. % % \subsubsection{Layout parameters} % As mentioned in the options section (see discussion of option |nice|, % this package leaves only few layout parameters untouched to make the % labels fit onto a page. Vertically there is no room for a user to % adjust anything except the distance between the border of the paper % and the labels. This is accessible via the macro % |\extratopmargin|\DescribeMacro{\extratopmargin}. The % default for this length is |0mm| -- then the large labels will be % vertically centered on the page. With a positive |\extratopmargin| the % labels will be shifted down (negative values are allowed). % % The horizontal layout is not that restricted, for example you can % change the text width (as usual using the macro |\textwidth|) and all % margins. The distance between two labels is generally handled by % \TeX\ like any space between two words. (There must be space between % the labels in order to give \TeX\ the chance to break ``lines'' of % labels!) You may want to specify a \emph{minimum} distance (default % is |0mm|) using % |\setlength{\hspaceinterlabel}{}|\DescribeMacro{\hspaceinterlabel}. % % The distance between the text box of |\labeltext| and the label % border is controlled by the length % |\labeltextmargin|\DescribeMacro{\labeltextmargin}. It is preset to % |3mm|. This value is at the same time top-, left- and right margin of % the text (the lower boundary is free). It can be changed directly this % way: |\setlength{\labeltextmargin}{}|. % % \subsubsection{Creating labels} % To create labels you have the choice between 2 macros: % \DescribeMacro{\emptylabel}|\emptylabel{}| and % \DescribeMacro{\labeltext}|\labeltext{}|. Instead of a longish % discussion look at the examples in sec.~\ref{sec:exam}. Note that the % argument of |\labeltext| is typeset as plain text -- there is no predefined % font change etc. The only special is the switch to the text color % |\c@lorl@bel@fg| (if option |color| is chosen). If you want all your % labels to be typeset in a special font perhaps with a title in a % larger font size, you should define a macro, e.g.\ like this: % \begin{verbatim} % \newcommand{\mylabel}[2]{\labeltext{\vspace{1ex}\sffamily% % \begin{flushleft}% % \textbf{{\huge #1}}\\ % \textsl{\Large\flushleft{\large #2}}% % \end{flushleft}}} % \end{verbatim} % To get a good positioning of the labels may take a while. The % best advice I can give is: Avoid `paragraphs' between the labels, % perhaps you have to remove also any `space' by ending the lines % with a |%|. Then insert pagebreaks, |vspace| and |hspace| as % needed. Having both large and small labels (|\fullheight| and % |\normalheight|) on one page results in a wrong vertical placement % of the smaller labels (the \emph{bottoms} of the labels instead of % their reference points are vertically aligned)\footnote{The % reason for that I currently do not unterstand, perhaps \emph{You} do?!} % % \subsection{Examples}\label{sec:exam} % The following labels are drawn with a |\unitlength| of |0.5mm| instead % of |1mm| (that is why they fit onto this page!). The \emph{vertical} % label position on the paper (paper contour is drawn too) is the % original one, while the \emph{horizontal} positioning shown here is % very unusual (therefore you had to vary |\textwidth|, |\odd|- and % |\evensidemargin|). % % \makeatletter % \setlength{\unitlength}{0.5mm} % \cnt@paperheight=297 % \cnt@pictvoffset=5 % \company{\large LEITZ} % \begin{center} % \begin{picture}(210,297) % \iffalse ------ the paper contour ------ \fi % \multiput(0,0)(210,0){2}{\line(0,1){297}} % \multiput(0,0)(0,297){2}{\line(1,0){210}} % \iffalse -- Update necessary due to new unitlength -- \fi % \savebox{\theh@le}{% % \begin{picture}(\hole@diameter,\hole@diameter)(17,17) % \linethickness{0.01pt} % \put(0,\hole@radius){\line(1,0){\hole@diameter}} % \put(\hole@radius,0){\line(0,1){\hole@diameter}} % \end{picture}% % } % \put(3,3){\framebox(100,61){\parbox{47mm}{ % \footnotesize \textbf{The vertical positioning} of the labels can be % understood this way: The large labels are centered vertically on the % page. The position of the small labels is fixed by the constraint % that all labels should share the same reference point % \texttt{(0,0)}. (That is why the ``company labels'' are all % aligned.) % }}} % \iffalse ------------ 1. label -------------------- \fi % \put(3,101){\emptylabel{1}} % \put(3,66){\framebox(\l@belwidth,28){\parbox{27mm}{ % \footnotesize One empty label (\texttt{\bslash emptylabel\{1\}}), % wide and small (this is the default)}}} % \iffalse ------------ 2. label -------------------- \fi % \company{\large\textsf{narrow}} % \narrowlabels % \put(66,101){\emptylabel{1}} % \put(66,66){\framebox(\l@belwidth,28){\parbox{15.5mm}{ % \footnotesize One empty label, narrow and small}}} % \iffalse ------------ 3. label -------------------- \fi % \iffalse one text label (narrow, fullheight) \fi % \company{\large\textsf{fullheight}} % \fullheight % \put(102,12){% % \labeltext{\hspace{0.25\l@beltextwidth}\parbox{0.5\l@beltextwidth}{ % \sf\footnotesize % \begin{flushleft} % This narrow and large label has been generated with % \texttt{\bslash labeltext} after commands \texttt{\bslash % narrow\-labels} and \texttt{\bslash fullheight} % \end{flushleft} % }}} % \iffalse ------------ 4. label -------------------- \fi % \iffalse one text label (wide, fullheight) \fi % \company{\large\textsf{wide}} % \widelabels % \put(142,12){% % \labeltext{\hspace{0.25\l@beltextwidth}\parbox{0.5\l@beltextwidth}{ % \sf\footnotesize % \begin{flushleft} % This wide and large label has been generated with % \texttt{\bslash labeltext} after commands \texttt{\bslash % widelabels} and \texttt{\bslash fullheight}. The ``company % name'' has been changed with \texttt{\bslash % company\{\bslash huge \bslash textsf\{wide\}\}}. % \end{flushleft} % }}} % \end{picture} % \end{center} % \makeatother % % \pagebreak[2] % The next picture is not an example, but gives a listing of nearly all % dimensions used by this package and a description of `empty' and % text labels. Note that all variables containing an |@| are not % directly accessible in the document (but some are via macros). % % \iffalse % In the following pictures I had to change some lenghts and % positions compared to the original values to get correct % miniatures of the labels. % \fi % \makeatletter % \setlength{\unitlength}{0.6mm} % \cnt@paperheight=297 % \fullheight % \widelabels % \label{all_dimens} % \begin{picture}(\l@belwidth,300)(-55,-105) % \small % \iffalse --------- First the label... --------\fi % \savebox{\c@mpanyl@bel}{\thicklines % \dashbox{2}(\l@belwidth,\companylabelheight){\c@mpany}}% % \savebox{\theh@le}{% % \begin{picture}(\hole@diameter,\hole@diameter)(17,14.5) % \linethickness{0.01pt} % \put(0,\hole@radius){\line(1,0){\hole@diameter}} % \put(\hole@radius,0){\line(0,1){\hole@diameter}} % \put(0,0){\dashbox{2}(\hole@diameter,\hole@diameter){}} % \end{picture}% % } % \l@beloutline % \multiput(-2,\cnt@auxlinedistance)(0,\cnt@auxlinedistance){% % \value{numberauxlines}}{\line(1,0){\l@belwidth}} % \iffalse --------- ... Now the description of it: -------\fi % \multiput(-33,0)(10,0){13}{\line(1,0){5}}\put(95,2){% % \makebox(0,0)[l]{\parbox{2.5cm}{\flushleft{lower part only for % \texttt{fullheight}!}}}} % \put(-10,-6.67){\vector(3,2){10}} % \put(-10,-10){\makebox(0,0)[r]{(0,0)}} % \put(70,-96.67){\vector(-3,2){10}} % \put(70,-100){\makebox(0,0)[l]{ % (\texttt{\bslash l@belwidth},\texttt{\bslash l@belbase})}} % \put(-10,-96.67){\vector(3,2){10}} % \put(-10,-100){\makebox(0,0)[r]{ % (0,\texttt{\bslash l@belbase})}} % \iffalse --------- company label: -------------------------\fi % \put(-10,-74.67){\vector(3,2){10}} % \put(-10,-78){% % \makebox(0,0)[r]{(0,\texttt{\bslash ylowercompany})}} % \put(-10,-59.5){\vector(1,0){16}} % \put(-10,-59.5){% % \makebox(0,0)[r]{Height \texttt{\bslash companylabelheight}}} % \put(70,\ylowercompany){\vector(-3,2){15}} % \put(72,-70){% % \makebox(0,0)[l]{Box \texttt{\bslash c@mpanyl@bel}}} % \put(70,180){\vector(-3,-1){27}} % \put(70,181){% % \makebox(0,0)[l]{\texttt{\bslash c@mpany}}} % \put(70,156){\vector(-3,2){15}} % \put(70,156){% % \makebox(0,0)[l]{Box \texttt{\bslash c@mpanyl@bel}}} % \put(-8,157){\vector(4,1){30}} % \put(-11,157){% % \makebox(0,0)[r]{Text color \texttt{\bslash c@lorc@mpany@fg}}} % \put(-8,177){\vector(3,-1){17}} % \put(-11,177){% % \makebox(0,0)[r]{Bg. color \texttt{\bslash c@lorc@mpany@bg}}} % \iffalse --------- the hole ---------------\fi % \put(-8,-27){\vector(4,1){30}} % \put(-12,-27){% % \makebox(0,0)[r]{\parbox{2.5cm}{\flushleft{% % Box \texttt{\bslash theh@le}:\\height = width =\\ % \hspace{1ex}\texttt{\bslash hole@diameter}}}}} % \put(70,-39.7){\vector(-3,1){40}} % \put(72,-42){% % \makebox(0,0)[l]{(\texttt{\bslash halfl@belwidth},% % \texttt{\bslash y@center@hole})}} % \iffalse --------- aux. lines --------------\fi % \put(30,10){\vector(0,-1){10}} \put(30,20){\vector(0,1){10}} % \put(30,15){% % \makebox(0,0){\texttt{\bslash cnt@auxlinedistance}}} % \put(-5,30){\circle{5}}\put(-5,30){\makebox(0,0){\footnotesize 1}} % \put(-5,60){\circle{5}}\put(-5,60){\makebox(0,0){\footnotesize 2}} % \put(-5,90){\circle{5}}\put(-5,90){\makebox(0,0){\footnotesize 3}} % \put(-5,120){\circle{5}}\put(-5,120){\makebox(0,0){\footnotesize 4}} % \put(75,75){ % \makebox(0,0)[l]{\parbox{2.5cm}{\flushleft{The number of auxiliary % lines is \texttt{numberauxlines}}}}} % \iffalse --------- text box ----------------\fi % \put(3,0){\dashbox{3}(54,157){}} % \put(-22,62){\vector(3,1){25}} % \put(-8,60){% % \makebox(0,0)[r]{\parbox{3.5cm}{\flushleft{% % The text box.\\-- distance to\\label outline is\\\texttt{ % \bslash labeltextmargin}}}}} % \end{picture} % \makeatother % % \subsection{To do} % \begin{itemize} % \item The package should support further binder formats! % \item Perhaps the package should provide further special labels % e.g.\ for a table of contents on the first page etc. % \item Perhaps there should be an option for a landscape mode (using the % |Lscape| package)? % \item Perhaps the package should care for horizontal spacing and % should help to avoid |Overfull \hbox| warnings. % \item Perhaps even more lengths should be user-accessible (most of the % macro names contain an |@| so you can not use them in a normal % document). % \item To be solved: Placing full- and normal-height labels on one % page currently causes problems --- I have no idea why. % \end{itemize} % \textbf{If You} have any problems, suggestions, critical remarks -- or % whatever according this package write to Volker B\"orchers % (email-address see title). % % \StopEventually{} % % \section{The Macros} % % \begin{macrocode} %<*package> % \end{macrocode} % % \begin{macro}{Options} % At the start of the package all Options are declared but % for most options the implied actions are executed later (controlled % by a corresponding |\newif|). % \begin{macro}{leitz} % As mentioned in section \ref{sec:opt} the option |leitz| is so far a % ``dummy option'' since there is no alternative. If you want to add % support for another label format you should make it choose-able as an % option. The declarations below are only a part of the format-dependent % settings (especially all widths are not set here). Some (not all!) % other of these settings are in a |\ifl@itz| \dots\ |\fi| % construction (see macros |\f@llheight| and |\n@rrow|). % \begin{macrocode} \newif\ifl@itz \l@itztrue \DeclareOption{leitz}{\l@itztrue \newcount\cnt@auxlinedistance \cnt@auxlinedistance=30 \newcounter{numberauxlines}\setcounter{numberauxlines}{4} \def\hole@diameter{29} \def\hole@radius{14.5} \def\y@center@hole{-26.5} \def\ylowercompany{-68} \def\yuppercompany{160} \def\companylabelheight{17} \def\f@lll@belheight{285}} % \end{macrocode} % \end{macro} % \begin{macro}{fullheight} % If this option is chosen, the macro |\fullheight| (respectively % |\f@llheight1|) is invoked later. The label will then extend % (nearly) over the full height of the binder back (this is not the % default). % \begin{macrocode} \newif\iff@llheight \f@llheightfalse \DeclareOption{fullheight}{\f@llheighttrue} % \end{macrocode} % \end{macro} % \begin{macro}{narrow} % Invoke the macro |\narrowlabels| (resp. |\n@rrow1|) later to create % narrower labels (default is wide labels). % \begin{macrocode} \newif\ifn@rrow \n@rrowfalse \DeclareOption{narrow}{\n@rrowtrue} % \end{macrocode} % \end{macro} % \begin{macro}{color} % Load the package |color| later. This is not the default because % not everyone has a color printer. % \begin{macrocode} \newif\ifcolorl@bel \colorl@belfalse \DeclareOption{color}{\colorl@beltrue} % \end{macrocode} % \end{macro} % \begin{macro}{a4paper} % The same thing that the |\documentclass| option |a4paper| % does. Perhaps this option should imply further actions?. % \begin{macrocode} \DeclareOption{a4paper}{\paperheight 297mm\paperwidth 210mm} % \end{macrocode} % \end{macro} % \begin{macro}{nice} % This option turns off the special, extreme, page layout of package % |flabels|. % \begin{macrocode} \newif\ifbe@nice \be@nicefalse \DeclareOption{nice}{\be@nicetrue} % \end{macrocode} % \end{macro} % \begin{macro}{nohole} % Do not include a marker for the hole in the back of a ``Leitz-Ordner'' % (to be used for an exact alignment of the label). A new option for a % binder that do not have such a hole should include the command % |\ExecuteOptions{nohole}|. % \begin{macrocode} \newif\ifno@hole \no@holefalse \DeclareOption{nohole}{\no@holetrue} % \end{macrocode} % \end{macro} % The end of the option section of the code: Produce an error message when % unknown options (type mistakes\dots) are given; make |leitz| the default % and force evaluation of the given option list. % \begin{macrocode} \DeclareOption*{\PackageWarning{flabels}{% Unknown option `\CurrentOption' (Known option:\MessageBreak `fullheight', `narrow', `color', `nohole', `a4paper', `nice')}} \ExecuteOptions{leitz} \ProcessOptions\relax % \end{macrocode} % \end{macro} % \begin{macro}{\unitlength} % \begin{macro}{\C@nvertToCount} % \begin{macro}{\cnt@paperheight} % The unitlength of the pictures used to % create the labels is 1 millimeter. Since \TeX-dimensions are % internally represented by integer variables (unit |sp|: scaled % point) they are also `counters'. This macro converts |sp| into |mm| % (code taken from |layout| package). |\cnt@paperheight| keeps the % paper height in |mm| as a counter. % \begin{macrocode} \setlength{\unitlength}{1mm} \def\C@nvertToCount#1#2{#1=#2 \divide #1 by 186468} \newcount\cnt@paperheight \C@nvertToCount\cnt@paperheight\paperheight % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\cnt@pictvoffset} % \begin{macro}{\tmp@count} % \begin{macro}{\tmp@count} % The counter |\cnt@pictvoffset| (to be computed later) is used to place % the label vertically centered on the page. |\tmp@count| and % |\tmp@dim| are used as temporary variables. % \begin{macrocode} \newcount\cnt@pictvoffset \newcount\tmp@count \newdimen\tmp@dim % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{pagelayout} % Since the labels can be very large (compared to the paper height) we use % the full page height if option |nice| is \emph{not} chosen. (This is % not the same as the |fullpage| package does. Here we use really the % whole page!) Horizontally this package leaves only a margin of |1in| % on the left side but leaves |\textwidth| untouched. % % On the other hand this makes |flabels| very sensible to the sequence of % |\usepackage| commands. If one loads a package after |flabels| that % overwrites this settings again (like |a4|) the layout will be wrong. % \begin{macrocode} \ifbe@nice\relax \else \textheight\paperheight \topmargin -1in \oddsidemargin 0mm \evensidemargin 0mm \marginparwidth 0mm \marginparsep 0mm \headheight0mm \headsep0mm \fi % \end{macrocode} % \end{macro} % \begin{macro}{\extr@topmargin} % \begin{macro}{\extratopmargin} % Definition of a dimension for extra vertical space at the top of a % page and the macro |\extratopmargin| as an user interface to % it. Note: A |\topmargin| of |-1in| means that the text/labels can % start right at the top of the page. The way the macro is defined % hides this offset of |-1in| from the user. % \begin{macrocode} \newdimen\extr@topmargin \extr@topmargin=0mm \def\extratopmargin#1{\extr@topmargin=#1 \advance\extr@topmargin by -1in \topmargin\extr@topmargin} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\cnt@auxlinedistance} % \begin{macro}{\auxlinedistance} % The counter |\cnt@auxlinedistance| contains the distance between two % auxiliary lines (for |\emptylabels|) in the unit |1mm|. It is preset % by the option |leitz| to the value 30. To allow the user to use % other dimensions than |mm| the macro |\auxlinedistance| is used. % \begin{macrocode} \def\auxlinedistance#1{\tmp@dim=#1 \C@nvertToCount\cnt@auxlinedistance\tmp@dim} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\labeltextmargin} % \begin{macro}{\l@beltextwidth} % \begin{macro}{\hspaceinterlabel} % |\l@beltextwidth| is the width of the text in the label text field % -- it is a computed value (see macro |\labeltext|) since the % label width is variable. The user can set |\labeltextmargin|, the % margin between text and label outline (left and right side, top) % instead to adjust the text width. |\hspaceinterlabel| (also % user-accessible) is the \emph{minimal} horizontal space between two % labels (it is more usually). % \begin{macrocode} \newdimen\labeltextmargin \labeltextmargin=3mm \newdimen\l@beltextwidth \newdimen\hspaceinterlabel \hspaceinterlabel=0mm % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\label@textheight} % The text box extends from |y=0| to the ``company label''. We compute % the text height in macro |\labeltext| as |\label@textheight| = % |\yuppercompany| - |\labeltextmargin|.\\ % Note: making the box smaller moves the text down. % \begin{macrocode} \newcount\label@textheight % \end{macrocode} % \end{macro} % Now the options |fullheight|, |narrow| and |color| have to be % processed. (Till now only a corresponding |\newif| has been set.) % \begin{macro}{->fullheight} % \begin{macro}{\full@height} % The first of this three options is |fullheight|. Of course we % have to set here a big part of the label dimensions. Firstly we % define a macro for internal use (the user interface for it is % provided by the macros |\fullheight| and |\normalheight|). (For the % explanation of |\l@belheight| and --|width| see % figure on page \pageref{all_dimens}.) % \begin{macrocode} \def\full@height#1{% \ifl@itz \ifnum #1=0 \f@llheightfalse \def\l@belheight{190} \def\l@belbase{0} \else \f@llheighttrue \def\l@belheight{\f@lll@belheight} \def\l@belbase{-90} \fi \fi % \end{macrocode} % \begin{macro}{\cnt@pictvoffset} % The small labels (|normalheight|) should have the same % y-coordinate |y=0| as the big labels \emph{on the page}. We could % achieve this by setting the y-offset (argument of the label picture % environment!) to |\l@belbase|. Then the top of the big labels would % start right the beginning of the paper. % % If we additionally want the big labels (|fullheight|) be % vertically centered on the whole page we have to divide the % remaining vertical space between top and bottom (this ends the macro % |\full@height|): % \begin{macrocode} \cnt@pictvoffset=\cnt@paperheight \advance\cnt@pictvoffset by -\f@lll@belheight \divide\cnt@pictvoffset by 2 \advance\cnt@pictvoffset by \l@belbase } % \end{macrocode} % \end{macro} % \end{macro} % After having defined |fullheight| and |normalheight| now we can % call |\full@height| with the appropriate argument: % \begin{macrocode} \iff@llheight \full@height1 \else \full@height0 \fi % \end{macrocode} % \end{macro} % \begin{macro}{->narrow} % \begin{macro}{\n@rrow} % Now option |narrow|! Here \emph{all horizontal} dimensions have to % be set. As for |fullheight| we define a macro for internal use and % call it then according to the chosen option. % \begin{macrocode} \def\n@rrow#1{% \ifl@itz \ifnum #1=0 \n@rrowfalse \def\l@belwidth{60} \def\halfl@belwidth{30} \else \n@rrowtrue \def\l@belwidth{37} \def\halfl@belwidth{18.5} \fi \fi } % \end{macrocode} % \end{macro} % Process option |narrow| now: % \begin{macrocode} \ifn@rrow \n@rrow1 \else \n@rrow0 \fi % \end{macrocode} % \end{macro} % \begin{macro}{->color} % The option |color| first loads the package |color|. --- % \emph{Note:} The package |color| needs to know for which driver % color informations have to be generated (|dvips|, |xdvi|, % \dots). While we can not select the driver here (as an option: % |\RequirePackage[]{color}|), we require the |color| macros % \emph{now}. So the user must specify the driver in the file % |color.cfg| with an |\ExecuteOptions{}| command. % % The colors of the labels will depend on 4 colors: % \DescribeMacro{\c@lorc@mpany@bg} |\c@lorc@mpany@bg| (background of % the ``company label''), \DescribeMacro{\c@lorc@mpany@fg} % |\c@lorc@mpany@fg| (foreground of the ``company label''), % \DescribeMacro{\c@lorl@bel@fg} |\c@lorl@bel@fg| (color of the % labeltext), \DescribeMacro{\c@lorl@bel@bg} |\c@lorl@bel@bg| (back % ground of the whole label). We define 4 macros as an user % interface to these colors and use them to set the default colors. % \begin{macrocode} \ifcolorl@bel \RequirePackage{color} \def\setbgcompany#1{\def\c@lorc@mpany@bg{#1}} \def\setfgcompany#1{\def\c@lorc@mpany@fg{#1}} \def\setbglabel#1{\def\c@lorl@bel@bg{#1}} \def\setfglabel#1{\def\c@lorl@bel@fg{#1}} \ifl@itz \setbgcompany{black} \setfgcompany{green} \setbglabel{yellow} \setfglabel{black} \fi \fi % \end{macrocode} % \end{macro} % \begin{macro}{\c@mpanyl@bel} % Small labels have a ``company label'' at the top of the label and % large labels in addition another near the bottom. It is a small box % that may contain the logo of the company or institute or perhaps the % user's name. We save it in the box |\c@mpanyl@bel|. The macro % \DescribeMacro{\rem@kecompanyl@bel}|\rem@kecompanyl@bel| is used for % each label by |\emptylabel| and |\labeltext|. % % The text in this box is kept in the macro |\c@mpany| and is % user-accessible with the macro |\company| (defined below). % \begin{macrocode} \ifl@itz \def\c@mpany{\huge LEITZ} \fi \newsavebox{\c@mpanyl@bel} \def\rem@kecompanyl@bel{% \ifcolorl@bel \protect\savebox{\c@mpanyl@bel}{% \fboxsep0pt\protect\colorbox{\c@lorc@mpany@bg}{% \protect\makebox(\l@belwidth,\companylabelheight){% \color{\c@lorc@mpany@fg}\c@mpany}}}% \else \thicklines\protect\savebox{\c@mpanyl@bel}{% \protect\framebox(\l@belwidth,\companylabelheight){\c@mpany}}% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\theh@le} % This is specific to the label format. A ``Leitz-Ordner'' has a hole % in the back of the binder to make the large binder handier (diameter % 29mm). Since \TeX\ is not capable to typeset circles larger then % 15mm, we mark this hole with a cross. The reference point of this % box is its center. % \begin{macrocode} \newsavebox{\theh@le} \savebox{\theh@le}{% \ifl@itz \begin{picture}(\hole@diameter,\hole@diameter)(\hole@radius,\hole@radius) \linethickness{0.01pt} \put(0,\hole@radius){\line(1,0){\hole@diameter}} \put(\hole@radius,0){\line(0,1){\hole@diameter}} \end{picture}% \fi } % \end{macrocode} % \end{macro} % \begin{macro}{\l@beloutline} % This macro draws the common label outline for text and empty % labels. It has to be called from inside a picture environment. % The background color of the label is realised by putting a box that % is slightly larger than the label (2$\times$ 0.5mm more) on the % appropriate place. % \begin{macrocode} \def\l@beloutline{ \fboxsep0.5mm \ifcolorl@bel \put(-1,\l@belbase){% \colorbox{\c@lorl@bel@bg}{\makebox(\l@belwidth,\l@belheight){\relax}}} \fi \linethickness{0.01pt} \multiput(0,\l@belbase)(\l@belwidth,0){2}{\line(0,1){\l@belheight}} \multiput(0,\l@belbase)(0,\l@belheight){2}{\line(1,0){\l@belwidth}} \thinlines \put(0,\yuppercompany){\usebox{\c@mpanyl@bel}} \iff@llheight \ifno@hole\relax\else \put(\halfl@belwidth,\y@center@hole){\usebox{\theh@le}} \fi \put(0,\ylowercompany){\usebox{\c@mpanyl@bel}} \fi } % \end{macrocode} % \end{macro} % \begin{macro}{User commands} % To switch between |fullheight|/|normalheight| and |narrow|/|wide| % from inside the document we have these macros: % \DescribeMacro{\narrowlabels} \DescribeMacro{\widelabels} % \DescribeMacro{\fullheight} \DescribeMacro{\normalheight} % \begin{macrocode} \def\narrowlabels{\n@rrow1} \def\widelabels{\n@rrow0} \def\fullheight{\full@height1} \def\normalheight{\full@height0} % \end{macrocode} % To redefine the company name: % \begin{macrocode} \def\company#1{\def\c@mpany{#1}} % \end{macrocode} % \end{macro} % \hrule % \begin{macro}{\emptylabel} % The first macro that actually creates label is |\emptylabel|. It has % as argument the number of identical labels to draw. Every `empty' % label consists of the common label outline and a number % (|numberauxlines|, user accessible) of auxiliary lines. % \begin{macrocode} \def\emptylabel#1{% \rem@kecompanyl@bel \tmp@count=#1\loop \begin{picture}(\l@belwidth,\l@belheight)(0,\cnt@pictvoffset) \l@beloutline \multiput(0,\cnt@auxlinedistance)(0,\cnt@auxlinedistance){% \value{numberauxlines}}{\line(1,0){\l@belwidth}} \end{picture} \hspace{\hspaceinterlabel} \advance\tmp@count by -1 \ifnum\tmp@count>0\repeat } % \end{macrocode} % \end{macro} % \begin{macro}{\labeltext} % Here the second macro for creating labels: |\labeltext|. Perhaps it % would have been nicer to declare this as an environment but this % should do. The text-width and -height is computed here. % % Note that the text is plain text -- there is no predefined font % change etc. The only special is the switch to the text color % |\c@lorl@bel@fg| (if option |color| is chosen). % \begin{macrocode} \def\labeltext#1{% \rem@kecompanyl@bel \l@beltextwidth=\l@belwidth mm \advance\l@beltextwidth by -2\labeltextmargin \C@nvertToCount{\label@textheight}{-\labeltextmargin} \advance\label@textheight by \yuppercompany \begin{picture}(\l@belwidth,\l@belheight)(0,\cnt@pictvoffset) \l@beloutline \put(0,0){\protect\makebox(\l@belwidth,\label@textheight)[t]{% \parbox{\l@beltextwidth}{% \ifcolorl@bel\textcolor{\c@lorl@bel@fg}{#1}\else #1\fi}}} \end{picture} \hspace{\hspaceinterlabel}% } % \end{macrocode} % \end{macro} % \begin{macrocode} % % \end{macrocode} % % \Finale \endinput