\iffalse %<*package> %% Package draftcopy to use with LaTeX2e %% This package is used to print on some pages the word `DRAFT' %% (or the language dependend analogon) ``behind'' the intended stuff. %% %% Copyright (C) 1995 Dr. Juergen Vollmer %% Viktoriastrasse 15, D-76133 Karlsruhe, Germany %% Juergen.Vollmer@acm.org %% %% 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. %% %% If you find this software useful, please send me a postcard: % \fi % % \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs} % \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo} % \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage} % \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage} % \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage} % \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions} % \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument} % \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError} % \DoNotIndex{\if,\else,\fi,\emph,\footnotesize,\footrulewidth,\let} % \DoNotIndex{\newcount,\newif,\number,\or,\parindent,\plainfootrulewidth} % \DoNotIndex{\PrintChanges,\PrintIndex,\relax,\setlength,\space} % \DoNotIndex{\the,\textwidth,\thepage,\newcommand,\texttt,\verb,\vfill} % \DoNotIndex{\input,\newpage,\setcounter,\newcounter,\\,\ ,\typeout,\today} % % \changes{v1.00}{}{The initial sty was written by somebody.} % \changes{v2.00}{1995/08/10}{Upgrade to LaTeX2e added all the new % functionality.} % \changes{v2.01}{1995/08/15}{Changed translation position, lower left corner.} % \changes{v2.02}{1995/08/30}{Added README and Makefile.} % \changes{v2.03}{1995/10/16}{Use all BABEL languages, and use DRAFT for them.} % \changes{v2.04}{1996/02/24}{More translations of the word DRAFT.} % \changes{v2.05}{1996/02/28}{Added \emph{dvips} and \emph{dvipsone} options.} % \changes{v2.06}{1996/03/01}{Added fix for old dvips.} % \changes{v2.07}{1996/03/12}{Support for the \emph{textures} graphics % driver,\\ % use \emph{gracpics.cfg} configuration file.} % \changes{v2.08}{1996/05/20}{Added \emph{none}, \emph{bottom} and % \emph{bottomafter} options.} % \changes{v2.09}{1996/05/22}{Added \emph{outline} option.} % \changes{v2.10}{1996/10/04}{New address.} % \changes{v2.11}{1998/06/05}{Added the file \emph{draftcopy.cfg}, save % and execute previous defined bop-hook.} % \changes{v2.12}{1999/03/02}{Added macros:\\ % \texttt{draftcopySetScale} and\\ % \texttt{draftcopyFirstPage}.\\ % Put \texttt{draftcopy} under the same % license as \LaTeX.} % \changes{v2.12.4}{1999/04/26}{Corrected typoo in catalan translation of % draft\\ % added -- between bottom DRAFT words\\ % Corrected typoo Makefile\\ % Corrected Y\&Y stuff, thanks to the Help Line % of Y\&Y} % \changes{v2.12.5}{1999/04/30}{Now \texttt{today} can be used as draftcopy % name, even for languages like german.} % \changes{v2.12.6}{1999/04/30}{Use \texttt{space} instead of % \texttt{@draftcopySpace}} % \changes{v2.13}{2000/04/16}{New options portrait and landscape, thanks to % Ross Moore \texttt{ross@ics.mq.edu.au} % providing the Postscript code for them.} % \changes{v2.14}{2001/08/24}{Added \texttt{conditional}, \texttt{final} and % \texttt{draft} options.\\ % Added \texttt{draftcopyPageX}, etc.\ and % \texttt{draftcopySetScaleFactor} macros.\\ % Added the \texttt{timestamp} option and % \texttt{draftcopyVersion} macro.\\ % Added the \texttt{greek} language option. % } % \changes{v2.15}{2001/09/07}{Added support for the vtex DVI graphics driver. % The generated |draftcopy.cfg| will set the vtex % dvips driver automatically.\\ % Fix for MikTeX / YAP: the DVI didn't show up % propperly.} % \changes{v2.16}{2002/02/25}{Replace count99 by count@} % \title{The \texttt{draftcopy} package\thanks{This not a DRAFT % version of this document. % Its simply documentation and demonstration of the package in % one document.}} % \author{Dr.~J{\"u}rgen Vollmer\\Viktoriastra{\ss}e 15\\ % D-76133 Karlsruhe, Germany\\ % {\footnotesize Juergen.Vollmer@acm.org}} % \date{February 25, 2002; Version 2.16} % % \maketitle % % \begin{abstract} % This package is used to print on some pages the word \emph{DRAFT} % (or the language dependend analogon) ``behind'' the intended stuff. % \end{abstract} % % \section{Introduction} % %%%%%%%%%%%%%%%%%%%%%%% % Before releasing a document you may wish to give it to others to proof read % it. But it should be clear to the reader that it is still a draft version % of that document. To mark this, so it could not be overseen, you can print % the word \emph{DRAFT} with big and light grey letters onto some pages. % This can be done with this package. % You can specify the intensity of the gray, the range of pages onto which % the word \emph{DRAFT} is printed and where it is printed (across the page % or at the bottom). The word \emph{DRAFT} is replaced according to the % language you are using, e.g.\ in german you get \emph{ENTWURF}. You may % also specify any word to be used instead of \emph{DRAFT}. From now on in % this document \emph{DRAFT} stands for that word. % Credits go the the Unkown, who started this as a \LaTeX\ style file % containing only the central \texttt{special} Postscript command printing % english word \emph{DRAFT} on each page of the document. Credits also to % those, who send me translations of the word \emph{DRAFT} and bug-reports % and bug-fixes as well ideas for more functionality (see in the sources). % For \emph{italian}, \emph{dutch}, \emph{finnish} and \emph{french} two % proposals exists. Have a look and change it (in the file % \texttt{draftcopy.sty}, or by using \verb+\draftcopyName+) according to % your mind. % % \section{User Interface} % %%%%%%%%%%%%%%%%%%%%%%%% %\subsection{Options} % % Options for this package are: % %\begin{center} %\begin{tabular}{|l|p{0.75\textwidth}|}\hline\MakeShortVerb{\|} % english, & \\ % german, $\dots$ % & This package accepts the language options of the % |babel| package\footnotemark. The |babel| package is not % loaded by |draftcopy|. \\\hline % none & Don't print \emph{DRAFT} across of any page. \\ % first & Prints \emph{DRAFT} across only on the first page. \\ % firsttwo & Prints \emph{DRAFT} across only on the first two pages. \\ % all & Prints \emph{DRAFT} across on all pages of the document. \\ % bottom & Prints \emph{DRAFT} on all pages at the bottom of the page. \\ % bottomafter & Prints \emph{DRAFT} at the bottom of the pages following the % pages which have \emph{DRAFT} across them. \\ % outline & The word \emph{DRAFT} is printed with outlined letters. \\ % light & The word \emph{DRAFT} is printed with a light grey. \\ % dark & The word \emph{DRAFT} is printed with a dark grey. \\\hline % dvips, vtex, & \\ % textures, $\dots$ % & This package accepts the options of the |graphics| % package\footnotemark. The |graphics| package is not loaded % by |draftcopy|. \\\hline % portrait & Page is in portrait shape.\\ % landscape & Page is in landscape shape.\\\hline % conditional & Obey the (global) |draft| and |final| options. % If |conditional| and |draft| are given, then the % \emph{DRAFT} text is printed. If |conditional| and |final| % are given, \emph{DRAFT} is not printed. Only |conditional| % is given, \emph{DRAFT} is not printed. % If |conditional| is not given then |draft| and |final| are % ignored, and the \emph{DRAFT} text is printed always.\\ % draft & Print the \emph{DRAFT} text.\\ % final & Don't print any \emph{DRAFT} text.\\\hline % timestamp & Print together with the word \emph{DRAFT} a timestamp and the % text given by the |draftcopyVersion| macro.\\\hline %\end{tabular} %\end{center} % \addtocounter{footnote}{-1} % \footnotetext{Currently % not all languages are supported, I still need volunteers to send me % translation % of the word \emph{DRAFT} into the other languages \LaTeX2e with its % babel package supports.} % \addtocounter{footnote}{+1} % \footnotetext{Currently only |dvips|, |dvipsone|, |dvipswindo|, and % |textures| are % supported. All others are mapped to |dvips|. If you are using another driver, % let me know what to.} % The default options are: \emph{dvips,english,all,dark,portrait}, which % corresponds to the % behaviour of the old implementation of this package. % The file |draftcopy.cfg| specifies the default Postscript driver. % This specification is overruled, if the driver option is given explicitly. % % \subsection{Commands} % % Additionally to the options, each feature may be set by commands, which % must be placed in the preamble of the document. % % \begin{itemize} % \item \DescribeMacro{\draftcopySetGrey} % Set the intensity of the gray. The argument value range from $0.0$ % to $1.0$, where the smaller values darker. % \item \DescribeMacro{\draftcopyFirstPage} % The argument specifies the first page onto which % \emph{DRAFT} will be printed. This is the physical page number. % \item \DescribeMacro{\draftcopyLastPage} % The argument specifies the last page onto which % \emph{DRAFT} will be printed. This is the physical page number. % \item \DescribeMacro{\draftcopyName} % The first argument specifies the word to be printed instead % of \emph{DRAFT}, the second, gives the scale factor for the font % to be used. % E.g.\ the english word \emph{DRAFT} needs 215, the german % \emph{ENTWURF} needs 155. % To add spaces in the word use the |\space| macro. % \item \DescribeMacro{\draftcopySetScale} % Change the default size of the word \emph{DRAFT}. % \item \DescribeMacro{\draftcopySetScaleFactor} % Change the multipiler of the scale. % \item \DescribeMacro{\draftcopyPageTransform} and % \item \DescribeMacro{\draftcopyBottomTransform} take raw PostScript % to set the LL-corner of the \emph{DRAFT} string % Use them \emph{before} the |\begin{document}|. % For code examples: Have a look to the definition of the |portrait| and % |landscape| options. % \item \DescribeMacro{\draftcopyPageX} and % \item \DescribeMacro{\draftcopyPageY} are integer values specifying the % coorinates starting the \emph{DRAFT} string on the page (default 0). % \item \DescribeMacro{\draftcopyBottomX} and % \item \DescribeMacro{\draftcopyBottomY} are integer values specifying % the coorinates starting the \emph{DRAFT} string on the bootom line % (default 0). % \item \DescribeMacro{\draftcopyVersion} The argument is printed together % with the timestamp. % \end{itemize} % % \section{A Few Warnings} % %%%%%%%%%%%%%%%%%%%%%%%% % % The result of printing \emph{DRAFT} onto the page will be visible only in % the Postscript output, not in the DVI output. The other text will be % visible always. Sometimes % \emph{ghostview} has problems in presenting the correct result, use % \emph{ghostscript (gs)} instead. The printed result should always meet % your intension. % % Currently this package works only for Postscript and not for PDF, sorry. % % \section{Copyright} % %%%%%%%%%%%%%%%%%%% % % Copyright (C) 1995 Dr.\ Juergen Vollmer, Karlsruhe, % Germany\\ % \texttt{Juergen.Vollmer@acm.org} % % 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. % % If you find this software useful, please send me a postcard. % % \section{The Documentation Driver File} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The next bit of code contains the documentation driver file for % \TeX{}, i.e., the file that will produce the documentation you are % currently reading. It will be extracted from this file by the % \texttt{docstrip} program. % \begin{macrocode} %<*driver> \documentclass[english,a4paper]{article} \usepackage{doc} \usepackage[latin1]{inputenc} \usepackage{babel} \usepackage[light,first,bottomafter]{draftcopy} \RecordChanges \EnableCrossrefs \CodelineIndex \begin{document} \DocInput{draftcopy.doc} \PrintChanges \setcounter{IndexColumns}{2} \PrintIndex \end{document} % % \end{macrocode} % % % \section{Configuration} % %%%%%%%%%%%%%%%%%%%%%%% % % You should set up the default Postscript driver in the file |draftcopy.cfg|. % For a reasonable value have a look to the file |graphics.cfg| from the % |graphics| % package. The distributed default is |dvips|. % \begin{macrocode} %<*config> \ifx\OpMode\undefined \ExecuteOptions{dvips} \else \ExecuteOptions{vtex} \fi % % \end{macrocode} % % \section{The Implementation} % %%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The implementation is based on manipulating the Postscript output, % using the \texttt{special} command. % % What do we need, and who we are: % \begin{macrocode} %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{draftcopy}[2002/02/25 v2.16] % \end{macrocode} % Declaration of the conditional handling options (based on an idea of % Warren Smith \texttt{}). % \begin{macrocode} \newif\ifdraftcopy@conditional \newif\ifdraftcopy@draft \newif\ifdraftcopy@final \DeclareOption{conditional}{ \draftcopy@conditionaltrue } \DeclareOption{draft}{ \draftcopy@drafttrue } \DeclareOption{final}{ \draftcopy@finaltrue } % \end{macrocode} % Declaration of the the timestamp option. % \begin{macrocode*} % Compute the timestamp based on an idea of % Tim Piessens \texttt{}. % \begin{macrocode*} \def\draftcopy@Timestamp{} \def\draftcopy@version{} \newcount\draftcopy@hour \newcount\draftcopy@minute \draftcopy@hour=\time \divide \draftcopy@hour by 60 \draftcopy@minute=\time \count@=\draftcopy@hour \multiply \count@ by -60 \advance \draftcopy@minute by \count@ \newcommand{\draftcopy@daytime}{% \ifnum\draftcopy@hour=0 00\else\ifnum\draftcopy@hour<10 0\fi% \number\draftcopy@hour\fi:% \ifnum\draftcopy@minute<10 0\fi\number\draftcopy@minute% } \DeclareOption{timestamp}{ \def\draftcopy@Timestamp{% \draftcopy@Show \draftcopy@PageX \draftcopy@PageY -40 add moveto /Times-Roman findfont 50 \draftcopy@ScaleFactor mul scalefont setfont (\draftcopy@version \today -- \draftcopy@daytime) } } % \end{macrocode*} % Declaration of various graphic driver options. % Different DVI driver use different names \verb+:-(+ % \begin{macrocode} % VTEX-support: Thanks to "MicroPress Inc." \let\immediate@special=\special \DeclareOption{vtex}{ \def\immediate@special{\immediate\special} \immediate@special{!bophook bop-hook} \def\draftcopy@BOPhook{/bop-hook} \def\draftcopy@UserDictCmd{pS: userdict } % MV & AK } \DeclareOption{dvips}{ \def\draftcopy@BOPhook{/bop-hook} \def\draftcopy@UserDictCmd{! userdict } } \DeclareOption{dvipsone}{ % thanks to V. P. Stokes % thanks to Y&Y Help Line % thanks to "H. Salehfar" \def\draftcopy@BOPhook{/bphook} \def\draftcopy@UserDictCmd{! dvidict} } \DeclareOption{textures}{ % thanks to Jerome LAURENS \texttt{laurens@u-bourgogne.fr> \def\draftcopy@BOPhook{/bop-hook} \def\draftcopy@UserDictCmd{prepostscript userdict} } \DeclareOption{dviwindo}{\ExecuteOptions{dvipsone}} % For the following |dvips| will be used. I don't know it better. \DeclareOption{xdvi}{\ExecuteOptions{dvips}} \DeclareOption{dvi2ps}{\ExecuteOptions{dvips}} \DeclareOption{dvialw}{\ExecuteOptions{dvips}} \DeclareOption{dvilaser}{\ExecuteOptions{dvips}} \DeclareOption{dvitops}{\ExecuteOptions{dvips}} \DeclareOption{emtex}{\ExecuteOptions{dvips}} \DeclareOption{dviwin}{\ExecuteOptions{dvips}} \DeclareOption{oztex}{\ExecuteOptions{dvips}} \DeclareOption{psprint}{\ExecuteOptions{dvips}} \DeclareOption{pubps}{\ExecuteOptions{dvips}} \DeclareOption{pctexps}{\ExecuteOptions{dvips}} \DeclareOption{pctexwin}{\ExecuteOptions{dvips}} \DeclareOption{pctexhp}{\ExecuteOptions{dvips}} \DeclareOption{ln}{\ExecuteOptions{dvips}} % \end{macrocode} % To printed the word \emph{DRAFT} in outlined letter or normal letters % we use different methods of showing text: % Normal letters are printed using the PostScript \texttt{show} command. % Outlined letters are printed using \texttt{charpath} and \texttt{stroke} % (See the example in the \emph{red} PostScipt book). % The idea for this option is from Harriet B.\ Borton % \texttt{} % \begin{macrocode*} \def\draftcopy@Show{show } \DeclareOption{outline}{ \def\draftcopy@Show{false charpath 2 setlinewidth stroke } } % \end{macrocode*} % Here we define the options for setting the intensity of the gray. % Smaller values mean darker. % \begin{macrocode} \DeclareOption{light}{ \def\draftcopy@GrayValue{0.90} } \DeclareOption{dark}{ \def\draftcopy@GrayValue{0.85} } % \end{macrocode} % Here we define the options, which specify the range of pages where % \emph{DRAFT} will be printed across pages. We use the Postcript variable % \texttt{draftcopy-LastPage} to store the number. % \begin{macrocode} \DeclareOption{none}{ \def\draftcopy@LastPage{0} } \DeclareOption{first}{ \def\draftcopy@LastPage{1} } \DeclareOption{firsttwo}{ \def\draftcopy@LastPage{2} } \DeclareOption{all}{ \def\draftcopy@LastPage{99999} } % \end{macrocode} % The option to print \emph{DRAFT} at the bottom of all pages. The idea for the % \texttt{bottom} options and the corresponding PostScript code is from % Paolo Ienne \texttt{}. % \begin{macrocode} \newif\ifdraftcopy@bottom \DeclareOption{bottom}{ \draftcopy@bottomtrue } % \end{macrocode} % The option to print \emph{DRAFT} at the bottom of the page, after the % initial pages containing \emph{DRAFT} printed across of a page. % \begin{macrocode} \newif\ifdraftcopy@bottomAfter \DeclareOption{bottomafter}{ \draftcopy@bottomAftertrue } % \end{macrocode} % Define the word \emph{DRAFT} and its scaling, in case no language option % is given. % The Postscript variable \texttt{draftcopy@Name} holds the word for % \emph{DRAFT} of that language and \texttt{draftcopy@Scale} is a font % scale factor, it must be determined % empirically. % \begin{macrocode} \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} % \end{macrocode} % % The babel language options are honored, even currently not all of them have a % translation for the word \emph{DRAFT}. % Most of them use latin characters, hence we use |Times-Roman|. The macro % |draftcopy@Font| holds the font name. % \begin{macrocode*} \def\draftcopy@Font{/Times-Roman} \DeclareOption{american}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{austrian}{ \def\draftcopy@Name{ENTWURF}\def\draftcopy@Scale{155} } \DeclareOption{bahasa}{ % thanks to Glenn G. Chappell \def\draftcopy@Name{DRAF}\def\draftcopy@Scale{217} } \DeclareOption{brazil}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{brazilian}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{breton}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{british}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{catalan}{ % thanks to Dav % thanks to Xavier \def\draftcopy@Name{ESBORRANY}\def\draftcopy@Scale{110} } \DeclareOption{croatian}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{czech}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{danish}{ % thanks to Ejnar Zacho Rath , % thanks to Bjarne Vestergaard % thanks to Joergen Larsen \def\draftcopy@Name{UDKAST}\def\draftcopy@Scale{175} } \DeclareOption{dutch}{ % thanks to Kees Leune % \def\draftcopy@Name{CONCEPT}\def\draftcopy@Scale{150} % thanks to Anton Stoorvogel porposed \def\draftcopy@Name{ONTWERP}\def\draftcopy@Scale{150} } \DeclareOption{english}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{esperanto}{ % thanks to Stephan B. Webanck \def\draftcopy@Name{MALNETO}\def\draftcopy@Scale{160} } \DeclareOption{estonian}{ % thanks to DAVID FEEST \def\draftcopy@Name{VISAND}\def\draftcopy@Scale{215} } \DeclareOption{finnish}{ % thanks to Jaakko Ruohio \def\draftcopy@Name{LUONNOS}\def\draftcopy@Scale{200} % thanks to Mika Grundstroem \def\draftcopy@Name{VEDOS}\def\draftcopy@Scale{220} } \DeclareOption{francais}{ % thanks to Christophe Couvreur \def\draftcopy@Name{BROUILLON}\def\draftcopy@Scale{120} } \DeclareOption{french}{ % thanks to Christophe Couvreur \def\draftcopy@Name{BROUILLON}\def\draftcopy@Scale{120} % thanks to Marc Torzynski %\def\draftcopy@Name{EPREUVE}\def\draftcopy@Scale{120} } \DeclareOption{galician}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{german}{ \def\draftcopy@Name{ENTWURF}\def\draftcopy@Scale{155} } \DeclareOption{germanb}{ \def\draftcopy@Name{ENTWURF}\def\draftcopy@Scale{155} } \DeclareOption{greek}{ % thanks to Apostolos Syropoulos \def\draftcopy@Name{PROSCEDIO}\def\draftcopy@Scale{85} \def\draftcopy@Font{/Symbol} } \DeclareOption{hungarian}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{icelandic}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} % DRÖG % Erlendur S Thorsteinsson % does anybody knows how to create PostScript for that letter Ö? } \DeclareOption{irish}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} % DRÉACHT % Breanndán Ó Nualláin % does anybody knows how to create PostScript for that letter É? } \DeclareOption{italian}{ % thanks to Fabio Massacci % thanks to Paolo Dell'Aquila \def\draftcopy@Name{BOZZA}\def\draftcopy@Scale{215} % thanks to Giuseppe De Arcangelis % \def\draftcopy@Name{brutta copia}\def\draftcopy@Scale{80} } \DeclareOption{lowersorbian}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{magyar}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{norsk}{ % thanks to: Dag Langmyhr \def\draftcopy@Name{UTKAST}\def\draftcopy@Scale{178} } \DeclareOption{nynorsk}{ % thanks to: Dag Langmyhr \def\draftcopy@Name{FRAMLEGG}\def\draftcopy@Scale{129} } \DeclareOption{polish}{ % thanks to Piotr Chrusciel \def\draftcopy@Name{BRUDNOPIS}\def\draftcopy@Scale{120} } \DeclareOption{portuges}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{portuguese}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{romanian}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{scottish}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{spanish}{ % thanks to: Tomas Bautista \def\draftcopy@Name{BORRADOR}\def\draftcopy@Scale{120} } \DeclareOption{slovak}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{slovene}{ % thanks to brodnik@pegam.mat.uni-lj.si \def\draftcopy@Name{OSNUTEK}\def\draftcopy@Scale{120} } \DeclareOption{swedish}{ % thanks to \def\draftcopy@Name{UTKAST}\def\draftcopy@Scale{185} } \DeclareOption{turkish}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } \DeclareOption{uppersorbian}{ \def\draftcopy@Name{DRAFT}\def\draftcopy@Scale{215} } % \end{macrocode*} % Declare the page orientation options. % \begin{macrocode} \DeclareOption{portrait}{ % thanks to Ross MOORE \texttt{ross@maths.mq.edu.au>} \def\draftcopy@PageTranslate{200 70 translate 65 rotate} \def\draftcopy@BottomTranslate{0 25 translate} \def\draftcopy@ScaleFactor{1 } } \DeclareOption{landscape}{ % thanks to Ross MOORE \texttt{ross@maths.mq.edu.au>} \def\draftcopy@PageTranslate{70 450 translate 25 neg rotate} \def\draftcopy@BottomTranslate{25 650 translate 90 neg rotate} \def\draftcopy@ScaleFactor{0.6 } } % \end{macrocode} % Use these default options, % \begin{macrocode} \ExecuteOptions{dark,all,english,portrait} % \end{macrocode} % % instead of |dvips| use the graphics driver specified in the configuration file, % \begin{macrocode} \input{draftcopy.cfg} % \end{macrocode} % % and the process the user options. % \begin{macrocode} \ProcessOptions % \end{macrocode} % % Tell the user what's ongoing. % \begin{macrocode} \typeout{Prints \draftcopy@Name\space on pages; does not show in your DVI viewer} % \end{macrocode} % %\begin{macro}{\draftcopyVersion} % Set the Version text to be printed together with a timestamp % \begin{macrocode} \newcommand{\draftcopyVersion}[1]{ \def\draftcopy@version{#1} } % \end{macrocode} %\end{macro} %\begin{macro}{\draftcopySetGrey} % Set the intensity of the gray, values range from $0.0$ % to $1.0$, where the smaller values darker. % If used, it must be conatined in the preamble of the document. % \begin{macrocode} \newcommand{\draftcopySetGrey}[1]{ \def\draftcopy@GrayValue{#1} } % \end{macrocode} %\end{macro} %\begin{macro}{\draftcopySetScale} % Set the size (scale) of the word \emph{DRAFT}. % You may need this, if you use another paper format. % The default scales are for A4 paper. % If used, it must be conatined in the preamble of the document. % \begin{macrocode} \newcommand{\draftcopySetScale}[1]{ \def\draftcopy@Scale{#1} } % \end{macrocode} %\end{macro} %\begin{macro}{\draftcopySetScaleFactor} % Set the scale muliplier of the scale. % \begin{macrocode*} \newcommand{\draftcopySetScaleFactor}[1]{ \def\draftcopy@ScaleFactor{#1 } } % \end{macrocode*} %\end{macro} %\begin{macro}{\draftcopyFirstPage} % The argument specifies the first page onto which % \emph{DRAFT} will be printed. This is the physical page number. % If used, it must be conatined in the preamble of the document. % \begin{macrocode} \def\draftcopy@FirstPage{0} \newcommand{\draftcopyFirstPage}[1]{ \def\draftcopy@FirstPage{#1} } % \end{macrocode} %\end{macro} %\begin{macro}{\draftcopyLastPage} % The argument specifies the last page onto which % \emph{DRAFT} will be printed. This is the physical page number. % If used, it must be conatined in the preamble of the document. % \begin{macrocode} \newcommand{\draftcopyLastPage}[1]{ \def\draftcopy@LastPage{#1} } % \end{macrocode} %\end{macro} %\begin{macro}{\draftcopyName} % The first argument specifies the word to be printed instead % of \emph{DRAFT}, the second, gives the scale factor for the font to % be used. E.g. the english word \emph{DRAFT} needs 215, the german % \emph{ENTWURF} needs 155. % Note we need the blank after the \#2. % If used, it must be conatined in the preamble of the document. % \begin{macrocode*} \newcommand{\draftcopyName}[2]{ \def\draftcopy@Name{#1} \def\draftcopy@Scale{#2} } % \end{macrocode*} %\end{macro} %\begin{macro}{\@draftcopyTilde} % If a \~ is used as argument of |\draftcopyName|, we have to supress % expansion of it. We replace it by a simple space. % Here we store the original meaning of \~, so that it can be restored % after setting up the Postscript code. % \begin{macrocode*} \let\@draftcopyTilde~ % \end{macrocode*} %\end{macro} %\begin{macro}{\draftcopyPageTransform} % These next 2 commands take raw PostScript % to set the LL-corner of the \emph{DRAFT} string % \begin{macrocode*} \newcommand{\draftcopyPageTransform}[1]{% \def\draftcopy@PageTranslate{#1}% } % \end{macrocode*} %\end{macro} %\begin{macro}{\draftcopyBottomTransform} % \begin{macrocode*} \newcommand{\draftcopyBottomTransform}[1]{% \def\draftcopy@BottomTranslate{#1}% } % \end{macrocode*} %\end{macro} % Based on an idea or Sergio Polini \texttt{}: %\begin{macro}{\draftcopyPageX} % \begin{macrocode*} \def\draftcopy@PageX{0 } \newcommand{\draftcopyPageX}[1]{% \def\draftcopy@PageX{#1 }% } % \end{macrocode*} %\end{macro} %\begin{macro}{\draftcopyPageY} % \begin{macrocode*} \def\draftcopy@PageY{0 } \newcommand{\draftcopyPageY}[1]{% \def\draftcopy@PageY{#1 }% } % \end{macrocode*} %\end{macro} %\begin{macro}{\draftcopyBottomX} % \begin{macrocode*} \def\draftcopy@BottomX{0 } \newcommand{\draftcopyBottomX}[1]{% \def\draftcopy@BottomX{#1 }% } % \end{macrocode*} %\end{macro} %\begin{macro}{\draftcopyBottomY} % \begin{macrocode*} \def\draftcopy@BottomY{0 } \newcommand{\draftcopyBottomY}[1]{% \def\draftcopy@BottomY{#1 }% } % \end{macrocode*} %\end{macro} % Compute, wether we should show the \texttt{DRAFT} text: % \begin{macrocode*} \newif\ifdraftcopy@showit \ifdraftcopy@conditional \ifdraftcopy@draft \draftcopy@showittrue \else \draftcopy@showitfalse \fi \ifdraftcopy@final \draftcopy@showitfalse \fi \else \draftcopy@showittrue \fi % \end{macrocode*} % Here we introduce some Postscript code. % The dictionary \emph{userdict} is extended with the page counter % \texttt{draftcopy-CurrentPage}. Printing of \emph{DRAFT} % starts after page |\draftcopy@FirstPage|. % Each time a new page starts |\draftcopy@BOPhook| is called % (if it's defined). Hence we define it. First we increment the current % page counter. % If then the current page counter is smaller than the % last page counter |\draftcopy@LastPage| we print the word % contained in the \LaTeX macro \texttt{draftcopy@Name} % with the font scaled with \LaTeX macro \texttt{draftcopy@Scale}. % % This must be done at the beginning of the document |\AtBeginDocument|, % so that the preamble commands take effect. % % We redfefine and restore the meaning of \~, which may be used in the % |\draftcopy@Name|, using |\let|. This allows to use |\today| as % |\draftcopy@Name| for languages like e.g.~ german, which separates the % day and the month by \~. % % The size of the word \emph{DRAFT} is given by |\draftcopy@Scale| and % multiplied by |\draftcopy@ScaleFactor|, which is needed to different % page hights of cover landscape and portrait orientation. % % Thanks to Glenn G. Chappell \texttt{gchappell@semovm.semo.edu} for % providing the % |/draftcopy-old-BOPhook| suggestion, which saves a previous definition of % |\draftcopy@BOPhook| and executes it too. % % \begin{macrocode} % Thanks to Ross Moore \texttt{ross@ics.mq.edu.au} for adding the code to % preserve kine-end in the PostScript file. % \begin{macrocode} \ifdraftcopy@showit {\obeyspaces \ifdraftcopy@bottomAfter \AtBeginDocument{ \let~\space \immediate@special{\draftcopy@UserDictCmd begin /draftcopy-CurrentPage 0 def /draftcopy-old-BOPhook { } def currentdict \draftcopy@BOPhook\space known{ /draftcopy-old-BOPhook \draftcopy@BOPhook\space load def } if \draftcopy@BOPhook{ draftcopy-old-BOPhook /draftcopy-CurrentPage draftcopy-CurrentPage 1 add def draftcopy-CurrentPage \draftcopy@FirstPage ge draftcopy-CurrentPage \draftcopy@LastPage le and { gsave \draftcopy@PageTranslate \draftcopy@Font findfont \draftcopy@Scale \draftcopy@ScaleFactor mul scalefont setfont \draftcopy@PageX \draftcopy@PageY moveto \draftcopy@GrayValue setgray (\draftcopy@Name) \draftcopy@Timestamp \draftcopy@Show grestore } if draftcopy-CurrentPage \draftcopy@LastPage gt { gsave \draftcopy@BottomTranslate \draftcopy@Font findfont 25 scalefont setfont \draftcopy@BottomX \draftcopy@BottomY moveto \draftcopy@GrayValue setgray (\draftcopy@Name\space\space--\space\space) 0 1 15 { pop dup show } for grestore } if } def end } \let~\@draftcopyTilde } \else\ifdraftcopy@bottom \AtBeginDocument{ \let~\space \immediate@special{\draftcopy@UserDictCmd begin /draftcopy-CurrentPage 0 def /draftcopy-old-BOPhook { } def currentdict \draftcopy@BOPhook\space known{ /draftcopy-old-BOPhook \draftcopy@BOPhook\space load def } if \draftcopy@BOPhook{ draftcopy-old-BOPhook /draftcopy-CurrentPage draftcopy-CurrentPage 1 add def draftcopy-CurrentPage \draftcopy@FirstPage ge draftcopy-CurrentPage \draftcopy@LastPage le and { gsave \draftcopy@PageTranslate \draftcopy@Font findfont \draftcopy@Scale \draftcopy@ScaleFactor mul scalefont setfont \draftcopy@PageX \draftcopy@PageY moveto \draftcopy@GrayValue setgray (\draftcopy@Name) \draftcopy@Timestamp \draftcopy@Show grestore }if gsave \draftcopy@BottomTranslate \draftcopy@Font findfont 25 scalefont setfont \draftcopy@BottomX \draftcopy@BottomY moveto \draftcopy@GrayValue setgray (\draftcopy@Name\space\space--\space\space) 0 1 15 { pop dup show } for grestore } def end } \let~\@draftcopyTilde } \else \AtBeginDocument{ \let~\space \immediate@special{\draftcopy@UserDictCmd begin /draftcopy-CurrentPage 0 def /draftcopy-old-BOPhook { } def currentdict \draftcopy@BOPhook\space known{ /draftcopy-old-BOPhook \draftcopy@BOPhook\space load def } if \draftcopy@BOPhook{ draftcopy-old-BOPhook /draftcopy-CurrentPage draftcopy-CurrentPage 1 add def draftcopy-CurrentPage \draftcopy@FirstPage ge draftcopy-CurrentPage \draftcopy@LastPage le and { gsave \draftcopy@PageTranslate \draftcopy@Font findfont \draftcopy@Scale \draftcopy@ScaleFactor mul scalefont setfont \draftcopy@PageX \draftcopy@PageY moveto \draftcopy@GrayValue setgray (\draftcopy@Name) \draftcopy@Timestamp \draftcopy@Show grestore } if } def end } \let~\@draftcopyTilde } \fi\fi } \fi % % \end{macrocode} % % \section{Some Test Input Files} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The next bit of code contains the some \LaTeX\ input files with various options set. % They will be extracted from this file by the \texttt{docstrip} program, using % the \texttt{test1, ... test12} option. % \begin{macrocode} %<*test1> \documentclass[a4paper]{article} \usepackage{draftcopy} \newcommand{\xx}{ Test 1\\This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print DRAFT over all pages, quite dark.\\ \verb|\usepackage{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % \begin{macrocode} %<*test2> \documentclass[a4paper,german]{article} \usepackage[light,first]{draftcopy} \newcommand{\xx}{ Test2: Should print ENTWURF on the first page, light.\\ This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} \verb|\usepackage[light,first]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test3> \documentclass[a4paper,french]{article} \usepackage[light,firsttwo]{draftcopy} \newcommand{\xx}{ Test3: This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print BROUILLON on the first two pages, light.\\ \verb|\usepackage[light,firsttwo]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test4> \documentclass[a4paper,danish]{article} \usepackage[light,firsttwo]{draftcopy} \newcommand{\xx}{ Test4: This is a test page \thepage \vfill This is a testpage \thepage \newpage } \draftcopyFirstPage{2} \draftcopyLastPage{3} \begin{document} Should print UDKAST on the second and third pages, light.\\ \verb|\usepackage[light,firsttwo]{draftcopy}|\\ \verb|\draftcopyFirstPage{2}|\\ \verb|\draftcopyLastPage{3}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test5> \documentclass[a4paper,dutch]{article} \usepackage[none,bottom]{draftcopy} \newcommand{\xx}{ Test5: This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print ONTWERP only at the bottom each page.\\ \verb|\usepackage[none,bottom]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test6> \documentclass[a4paper,finnish]{article} \usepackage[firsttwo,light,bottom]{draftcopy} \newcommand{\xx}{ test6: This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print VEDOS on the first two pages, light.\\ Should print VEDOS at the bottom each page.\\ \verb|\usepackage[firsttwo,light,bottom]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test7> \documentclass[a4paper,norsk]{article} \usepackage[light,bottomafter]{draftcopy} \newcommand{\xx}{ Test7: This is a test page \thepage \vfill This is a testpage \thepage \newpage } \draftcopyFirstPage{2} \draftcopyLastPage{3} \begin{document} Should print UTKAST on the on the pages 2 and 3, light.\\ Should print UTKAST on bottom of the page after the third page.\\ \verb|\usepackage[light,bottomafter]{draftcopy}|\\ \verb|\draftcopyFirstPage{2}|\\ \verb|\draftcopyLastPage{3}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % % \begin{macrocode} %<*test8> \documentclass[a4paper,nynorsk]{article} \usepackage[light,firsttwo,outline,bottomafter]{draftcopy} \newcommand{\xx}{ Test8: This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print FRAMLEGG on the first two pages, light, outlined.\\ Should print FRAMLEGG on bottom of the page after the second page.\\ \verb|\usepackage[light,firsttwo,outline,bottomafter]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % % \begin{macrocode} %<*test9> \documentclass{article} \usepackage[light,firsttwo,outline,bottomafter]{draftcopy} \newcommand{\xx}{ Test9: This is a test page \thepage\\ test~the~tilde~tilde~tilde (1 fixed space (\~{}) between the words)\\ test~~the~~tilde~~tilde~~tilde (2 fixed spaces (\~{}) between the words)\\ test~~~the~~~tilde~~~tilde~~~tilde (3 fixed spaces (\~{}) between the words) \vfill This is a testpage \thepage \newpage } \draftcopyName{Release\space\space\space\today}{130} \draftcopySetScale{80} \begin{document} Should print the word \verb+Release+ and the current date \verb|\today| (in english) on the first two pages, light, outlined.\\ Should print the word \verb+Release+ and current date \verb|\today| (in english) on bottom of the page after the second page.\\ Check that the lines with \~{} have correct spacing.\\ \verb|\usepackage[light,firsttwo,outline,bottomafter]{draftcopy}|\\ and \\ \verb|\draftcopyName{Release\space\space\space\today}{130}|\\ \verb|\draftcopySetScale{80}|\\ in the preamble \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test10> \documentclass[german]{article} \usepackage{babel} \usepackage[light,firsttwo,outline,bottomafter]{draftcopy} \newcommand{\xx}{ Test10: This is a test page \thepage \\ test~the~tilde~tilde~tilde (1 fixed space (\~{}) between the words)\\ test~~the~~tilde~~tilde~~tilde (2 fixed spaces (\~{}) between the words)\\ test~~~the~~~tilde~~~tilde~~~tilde (3 fixed spaces (\~{}) between the words) \vfill This is a testpage \thepage \newpage } \draftcopyName{\today}{130} \draftcopySetScale{80} \begin{document} Should print the current date \verb|\today| (in german) on the first two pages, light, outlined.\\ Should print the current date \verb|\today| (in german) on bottom of the page after the second page.\\ Check that the lines with \~{}) have correct spacing.\\ \verb|\usepackage[light,firsttwo,outline,bottomafter]{draftcopy}|\\ and \\ \verb|\draftcopyName{\today}{130}|\\ \verb|\draftcopySetScale{80}|\\ in the preamble \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test11> \documentclass[landscape,a4paper]{article} \usepackage[landscape]{draftcopy} \newcommand{\xx}{ Test 11\\This is a test page with landscape option \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print DRAFT over all pages, quite dark.\\ \verb|\usepackage[landscape]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \begin{macrocode} %<*test12> \documentclass[landscape,german,a4paper]{article} \usepackage[landscape,bottom]{draftcopy} \newcommand{\xx}{ Test 12\\This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print ENTWURF over all pages, quite dark and on the bottom and with landscape orientation.\\ \verb|\usepackage[landscape,bottom]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % % \begin{macrocode} %<*test13> \documentclass[a4paper]{article} \usepackage[conditional]{draftcopy} \newcommand{\xx}{ Test 13\\This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should \emph{NOT} print DRAFT since, conditional is used.\\ \verb|\usepackage[conditional]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % % \begin{macrocode} %<*test14> \documentclass[draft,a4paper]{article} \usepackage[conditional]{draftcopy} \newcommand{\xx}{ Test 14\\This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should print DRAFT since, conditional and draft are used.\\ \verb|\usepackage[conditional]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % % \begin{macrocode} %<*test15> \documentclass[final,a4paper]{article} \usepackage[conditional]{draftcopy} \newcommand{\xx}{ Test 15\\This is a test page \thepage \vfill This is a testpage \thepage \newpage } \begin{document} Should \emph{NOT} print DRAFT since, final is used (as global option).\\ \verb|\usepackage{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % % \begin{macrocode} %<*test16> \documentclass[a4paper,greek]{article} \usepackage[timestamp,bottom]{draftcopy} \newcommand{\xx}{ Test 16\\This is a test page \thepage \vfill This is a testpage \thepage \newpage } \draftcopyPageX{300} \draftcopyPageY{100} \draftcopyBottomX{300} \draftcopyBottomY{100} \draftcopySetScaleFactor{0.5} \draftcopyVersion{Version 2.14: } \begin{document} Should print DRAFT (in greek translation and greek letters) on a moved position.\\ \verb|\usepackage[timestamp,bottom,greek]{draftcopy}|\\ \xx\xx\xx\xx \end{document} % % \end{macrocode} % % \Finale \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%