summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/draftmark/draftmark.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/draftmark/draftmark.sty')
-rw-r--r--macros/latex/contrib/draftmark/draftmark.sty222
1 files changed, 222 insertions, 0 deletions
diff --git a/macros/latex/contrib/draftmark/draftmark.sty b/macros/latex/contrib/draftmark/draftmark.sty
new file mode 100644
index 0000000000..ea8930537c
--- /dev/null
+++ b/macros/latex/contrib/draftmark/draftmark.sty
@@ -0,0 +1,222 @@
+%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
+% This is file 'draftmark.sty'. %
+% %
+% This package puts a user-specified draftmark and arbitrary texts on %
+% select pages of documents. It is more general than the 'draftwatermark' %
+% package by Sergio Callegari and 'draftcopy' by J\"{u}rgen Vollmer. The %
+% advantages of this package over 'draftwatermark' include: the user can %
+% specify his/her own draftmark and color, the draftmark position and %
+% orientation, the page (all pages, odd pages, even pages, a particular %
+% page number, and a range of pages) on which the draftmark should appear, %
+% and all the options are passed directly to package instead of being %
+% defined by user-macros. There is also the provision to use the macro %
+% \draftmarksetup, which can be utilized to dynamically specify draftmark %
+% properties for each page or range of pages. With the 'xcolor' package %
+% (loaded by this package), all colors can be passed to this package. The %
+% code of this package is very much shorter than that of the 'draftcopy' %
+% package by Jurgen Vollmer (2002) because it capitalizes on dvi hooks %
+% from Heiko Oberdiek's 'atbegshi' package. %
+% %
+% With the \includegraphics command, this package can be used to insert %
+% graphic watermarks. %
+% %
+% This work may be distributed and/or modified under the conditions %
+% of the LaTeX Project Public License, either version 1.3 of this %
+% license or any later version. The latest version of this license %
+% is in http://www.latex-project.org/lppl.txt and version 1.3 or later %
+% is part of all distributions of LaTeX version 2005/12/01 or later. %
+% %
+% Copyright (c) 2009 Ahmed Musa (a.musa@rocketmail.com). %
+% %
+%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
+\begingroup
+\catcode064=11% @
+\catcode123=01% {
+\catcode125=02% }
+\def\x{\endgroup
+ \edef\dmark@restorecodeatend{%
+ \catcode035=\the\catcode035\relax
+ \catcode064=\the\catcode064\relax
+ \catcode123=\the\catcode123\relax
+ \catcode125=\the\catcode125\relax
+ }%
+}
+\x
+\catcode035=06% #
+\catcode064=11% @
+\catcode123=01% {
+\catcode125=02% }
+\def\dmark@ensurecode#1#2{%
+ \edef\dmark@restorecodeatend{%
+ \dmark@restorecodeatend
+ \catcode#1=\the\catcode#1\relax
+ }%
+ \catcode#1=#2\relax
+}
+\dmark@ensurecode{010}{12}% ^^J
+\dmark@ensurecode{033}{12}% !
+\dmark@ensurecode{039}{12}% '
+\dmark@ensurecode{040}{12}% (
+\dmark@ensurecode{041}{12}% )
+\dmark@ensurecode{042}{12}% *
+\dmark@ensurecode{044}{12}% ,
+\dmark@ensurecode{045}{12}% -
+\dmark@ensurecode{046}{12}% .
+\dmark@ensurecode{047}{12}% /
+\dmark@ensurecode{058}{12}% :
+\dmark@ensurecode{060}{12}% <
+\dmark@ensurecode{061}{12}% =
+\dmark@ensurecode{062}{12}% >
+\dmark@ensurecode{094}{07}% ^ (superscript)
+\dmark@ensurecode{096}{12}% `
+\dmark@ensurecode{254}{12}% ^^fe
+\dmark@ensurecode{255}{12}% ^^ff
+\dmark@ensurecode{126}{13}% ~ (active)
+\AtEndOfPackage{\dmark@restorecodeatend}
+\def\readRCS$#1 #2 #3 #4 #5 #6 #7 #8 ${%
+ \def\filedate{#4}%
+ \def\fileversion{v#3}%
+ \def\filetime{#5}%
+ \def\fileauthor{#6\space#7}
+}
+\def\filedesc{%
+ Puts user-specified watermarks on select document pages (\fileauthor)}
+\readRCS
+$Id: draftmark.sty,v 1.2 2009/10/07 09:00:00 Ahmed Musa Exp $
+\ProvidesPackage{draftmark}[\filedate\space\fileversion\space\filedesc]
+\NeedsTeXFormat{LaTeX2e}[1996/12/01]
+\RequirePackage{fix-cm}
+\RequirePackage{graphicx}
+\RequirePackage{xkeyval}[2008/08/13]
+\RequirePackage{etextools}[2009/09/30]
+\RequirePackage{atbegshi}
+\RequirePackage{picture}
+\RequirePackage{xcolor}
+\RequirePackage{xifthen}[2009/04/17]
+\RequirePackage{ltxnew}
+\newrobustcmd\dmark@info[1]{\PackageInfo{draftmark}{#1\@gobble}}
+\newrobustcmd\dmark@warn[1]{\PackageWarningNoLine{draftmark}{#1}}
+\newrobustcmd\dmark@err[1]{\PackageError{draftmark}{#1}{\@ehc}}
+\def\dmark@numexpr#1#2{\xifblank{#2}{%
+ \expandafter\dmark@err{Blank argument for number}}{}
+ \ifundef{#1}{\new\count#1\relax #1=\numexpr#2\relax}{#1=\numexpr#2\relax}
+}
+\def\dmark@dimexpr#1#2{\xifblank{#2}{%
+ \expandafter\dmark@err{Blank argument for dimension}}{}
+ \ifundef{#1}{\new\dimen#1\relax #1=\dimexpr#2\relax}{#1=\dimexpr#2\relax}
+}
+\new\let\dmark@papercenter\relax
+\dmark@numexpr{\c@dmark@page}{\z@}
+\define@boolkey[KV]{draftmark}[dmark@]{draft}[true]{%
+ \ifdmark@draft\global\dmark@finalfalse\fi}
+\define@boolkey[KV]{draftmark}[dmark@]{final}[true]{%
+ \ifdmark@final\global\dmark@draftfalse\fi}
+\define@boolkeys[KV]{draftmark}[dmark@]{particularpage,
+ pagerange,showcenter,acceptrange}[true]
+\define@boolkey[KV]{draftmark}[dmark@]{firstpage}[true]{%
+ \ifdmark@firstpage\c@dmark@page=\@ne\fi}
+\define@boolkey[KV]{draftmark}[dmark@]{allpages}[true]{%
+ \ifdmark@allpages\c@dmark@page=\@ne\fi}
+\define@boolkey[KV]{draftmark}[dmark@]{oddpages}[true]{%
+ \ifdmark@oddpages\c@dmark@page=\@ne\fi}
+\define@boolkey[KV]{draftmark}[dmark@]{evenpages}[true]{%
+ \ifdmark@evenpages\c@dmark@page=\@ne\fi}
+\define@cmdkey[KV]{draftmark}[dmark@]{page}[1]{%
+ \dmark@particularpagetrue\c@dmark@page=\@ne\relax
+}
+\new\def\dmark@papercenter{\color{red}%
+ \put(0,-0.5\paperheight){\line(1,0){\paperwidth}}
+ \put(0.5\paperwidth,0){\line(0,-1){\paperheight}}
+ \put(0.5\paperwidth,-0.5\paperheight){\circle{10}}
+}
+\define@cmdkey[KV]{draftmark}[dmark@]{pages}[1-1]{%
+ \dmark@pagerangetrue\c@dmark@page=\@ne\relax
+}
+\define@cmdkey[KV]{draftmark}[dmark@]{fontfamily}[cmr]{}
+\define@cmdkey[KV]{draftmark}[dmark@]{fontsize}[5cm]{}
+\define@cmdkey[KV]{draftmark}[dmark@]{mark}[DRAFT]{}
+\define@key[KV]{draftmark}{color}[gray]{%
+ \xifstrequal{#1}{gray}{%
+ \def\dmark@color{\color[gray]{\dmark@grayness}}%
+ }{\def\dmark@color{\color{#1}}}
+}
+\define@cmdkey[KV]{draftmark}[dmark@]{grayness}[0.8]{}
+\define@cmdkey[KV]{draftmark}[dmark@]{angle}[45]{}
+\define@cmdkey[KV]{draftmark}[dmark@]{scale}[1]{}
+\define@cmdkey[KV]{draftmark}[dmark@]{coordunit}[mm]{}
+\define@key[KV]{draftmark}{xcoord}[0]{%
+ \dmark@dimexpr{\dmark@xcoord}{0.5\paperwidth+#1\dmark@coordunit}%
+}
+\define@key[KV]{draftmark}{ycoord}[0]{%
+ \dmark@dimexpr{\dmark@ycoord}{-0.5\paperheight+#1\dmark@coordunit}%
+}
+\DeclareOptionX*{\dmark@warn{Unknown option '\CurrentOption' ignored}}
+\ExecuteOptionsX[KV]<draftmark>{angle,scale,mark,color,grayness,
+ fontfamily,fontsize,coordunit,xcoord,ycoord,final}
+\ProcessOptionsX*[KV]<draftmark>\relax
+\new\gdef\draftmarksetup#1{\setkeys[KV]{draftmark}{#1}}
+\ifbool{dmark@acceptrange}{\RequirePackage[acceptempty]{pagerange}}{%
+ \RequirePackage[acceptempty=false]{pagerange}}
+\ifdmark@final
+ \dmark@info{Option 'final': no draftmark printed}
+ \expandafter\endinput
+\fi
+\newcommand\dmark@draftmark{%
+ \begingroup
+ \makebox(0,0){\rotatebox{\dmark@angle}{\scalebox{\dmark@scale}{%
+ \parbox[c]{\paperheight}{\dmark@color\centering
+ \fontfamily{\dmark@fontfamily}\fontseries{b}%
+ \fontsize{\dmark@fontsize}{1.2\dmark@fontsize}\selectfont
+ \dmark@mark
+ }}}}%
+ \endgroup
+}
+\newrobustcmd\dmark@tempa{%
+ \put(\dmark@xcoord,\dmark@ycoord){\dmark@draftmark}%
+ \ifdmark@showcenter\dmark@papercenter\fi
+}
+\newrobustcmd\dmark@printdraftmark{%
+ \ifnum\c@dmark@page=\z@
+ \ifnum\c@page=\@ne
+ \dmark@tempa%
+ \fi
+ \else\ifnum\c@dmark@page=\@ne
+ \ifdmark@allpages
+ \dmark@tempa%
+ \else\ifdmark@firstpage
+ \ifnum\c@page=\@ne
+ \dmark@tempa%
+ \fi
+ \else\ifdmark@oddpages
+ \ifodd\c@page
+ \dmark@tempa%
+ \fi
+ \else\ifdmark@evenpages
+ \unless\ifodd\c@page
+ \dmark@tempa%
+ \fi
+ \else\ifdmark@particularpage
+ \ifnum\c@page=\dmark@page
+ \dmark@tempa%
+ \fi
+ \else\ifdmark@pagerange
+ \pagerange{\dmark@pages}%
+ \dmark@numexpr{\dmark@pagestart}{\pagestart}%
+ \dmark@numexpr{\dmark@pageend}{\pageend}%
+ \ifthenelse{\(\c@page=\dmark@pagestart\OR\c@page=\dmark@pageend\)
+ \OR \(\c@page>\dmark@pagestart\AND\c@page<\dmark@pageend\)}{%
+ \dmark@tempa}{}
+ \fi\fi\fi\fi\fi\fi
+ \fi\fi
+}
+\ifdmark@draft
+ \AtBeginShipout{\AtBeginShipoutUpperLeft{\dmark@printdraftmark}}%
+ \dmark@info{Option 'draft': draftmark printed}
+ \ifnum\c@dmark@page=\z@
+ \dmark@warn{Draftmark printed on page 1 only:\MessageBreak
+ No page option ('allpages', 'firstpage',\MessageBreak
+ 'oddpages', 'evenpages', 'page=value'\MessageBreak
+ or 'pages=x-x') has been passed to package}
+\fi\fi
+
+\endinput