From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/flabels/flabels.dtx | 944 +++++++++++++++++++++++++++++++ 1 file changed, 944 insertions(+) create mode 100644 macros/latex/contrib/flabels/flabels.dtx (limited to 'macros/latex/contrib/flabels/flabels.dtx') diff --git a/macros/latex/contrib/flabels/flabels.dtx b/macros/latex/contrib/flabels/flabels.dtx new file mode 100644 index 0000000000..f152efa518 --- /dev/null +++ b/macros/latex/contrib/flabels/flabels.dtx @@ -0,0 +1,944 @@ +% \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 -- cgit v1.2.3