From 68d1082187795028afc486f56eaf6cd303f8b79e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 17 Oct 2012 22:43:57 +0000 Subject: xwatermark (17oct12) git-svn-id: svn://tug.org/texlive/trunk@28001 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/xwatermark/xwatermark.sty | 576 +++++++++++++-------- 1 file changed, 360 insertions(+), 216 deletions(-) (limited to 'Master/texmf-dist/tex/latex/xwatermark/xwatermark.sty') diff --git a/Master/texmf-dist/tex/latex/xwatermark/xwatermark.sty b/Master/texmf-dist/tex/latex/xwatermark/xwatermark.sty index c9b5394e3b8..51b61741c18 100644 --- a/Master/texmf-dist/tex/latex/xwatermark/xwatermark.sty +++ b/Master/texmf-dist/tex/latex/xwatermark/xwatermark.sty @@ -1,5 +1,5 @@ %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% -% This is file 'xwatermark.sty', version 1.5.2b, August 2012. % +% This is file 'xwatermark.sty', version 1.5.2c, October 2012. % % % % This package puts user-specified watermarks (graphics and arbitrary % % texts) on select pages of documents. See package documentation % @@ -23,17 +23,17 @@ %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% \@ifpackageloaded{catoptions}{% - \@ifpackagelater{catoptions}{2012/08/01}{}{% + \@ifpackagelater{catoptions}{2012/10/14}{}{% \@latex@error{Loaded version of 'catoptions' package is - not current}\@ehc + not current}\@ehd }% }{% - \RequirePackage{catoptions}[2012/08/01]% + \RequirePackage{catoptions}[2012/10/14]% } \UseNormalCatcodes \StyleFilePurpose{A dynamic watermarking scheme} \StyleFileRCSInfo -$Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ +$Id: xwatermark.sty,v 1.5.2c 2012/10/14 09:00:00 Ahmed Musa Exp $ \ProvidesPackage{xwatermark}[\StyleFileInfo] \NeedsTeXFormat{LaTeX2e}[2011/06/27] \SetStyleFileMessages[xwm@]{info}{warn}{err} @@ -55,13 +55,44 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \newletcs\xwm@nil\relax \new@def*\xwm@nnil{\xwm@nil} \AtBeginShipoutInit -\newvariables{box}[xwm@box]{a,b}\relax -\newvariables{count}[xwm@]{cnta}[\z@pt] -\newvariables{if}[xwm@]{pdf,swa,swb,foregrd,wall}[false] -\newvariables{write}[xwm@]{wrt}\relax +\cptnewvariables{box}[xwm@box]{a,b}\relax +\cptnewvariables{count}[xwm@]{cnta}[\z@pt] +\cptnewvariables{if}[xwm@]{pdf,swa,swb,foregrd,wall,putmark}[false] +\xwm@putmarktrue +\cptnewvariables{write}[xwm@]{wrt}\relax \robust@def*\AtShipoutAlwaysUpperLeft#1{% \AtBeginShipout{\AtBeginShipoutUpperLeft{#1}}% } +\robust@def*\xwm@secstartpage#1{% + \begingroup + \def\do##1##2,{% + \ifx\do##1\else + \csn@gdef{xwm@secstartpage@@\romannumeral##1}{##2}% + \expandafter\do + \fi + }% + \do#1,\do\do,% + \endgroup +} +\new@def*\xwm@seclist{} +\AtEndDocument{% + \immediate\write\@auxout{% + \string\xwm@secstartpage{\xwm@seclist}% + }% +} +\robust@def*\xwm@recordsecno{% + \xdef\xwm@seclist{% + \xwm@seclist\ifx\xwm@seclist\@empty\else,\fi + {\thesection}{\thepage}% + }% +} +\edef\reserved@a{% + \def\noexpand\@seccntformat##1{% + \unexpanded\expandafter{\@seccntformat{#1}}% + \unexpanded{\protect\xwm@recordsecno}% + }% +} +\reserved@a \new@def*\xwm@boxframestack{} \robust@def*\xwm@pushboxframe{% \xdef\xwm@boxframestack{% @@ -107,7 +138,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ } \robust@def*\xwm@ifxcolorloaded{% \ifcsndefTF{ver@xcolor.sty}\@iden{% - \xwm@err{'xcolor' package not loaded}\@ehc + \xwm@err{'xcolor' package not loaded}\@ehd }% } \robust@def*\xwmdefinecolor{% @@ -126,7 +157,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \@ifundefinedcolor{#2}{% \reserved@e[#1]{#2}% }{% - \xwm@err{Color name '#2' already defined}\@ehc + \xwm@err{Color name '#2' already defined}\@ehd }% } \robust@def*\xwmdefinecolorset{\cpt@testopt\xwm@definecolorset{x}} @@ -140,7 +171,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \def\xwm@tempa##1,##2,##3,##4,##5\@nil{% \ifblankTF{##4}{% \xwm@err{Incomplete color format in - \string\xwmdefinecolorset}\@ehc + \string\xwmdefinecolorset}\@ehd }{% \def\xwm@tempf{##1}% }% @@ -165,10 +196,10 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \expandafter\do\normalized@list;\@nil;% \ifcsemptyTF\xwm@tempe{}{% \xwm@err{Color names '\expandcsonce\xwm@tempe' multiply - \MsgBrk submitted to \string\xwmdefinecolorset}\@ehc + \MsgBrk submitted to \string\xwmdefinecolorset}\@ehd }% \ifcsemptyTF\xwm@tempc{}{% - \xwm@err{Color names '\expandcsonce\xwm@tempc' already in use}\@ehc + \xwm@err{Color names '\expandcsonce\xwm@tempc' already in use}\@ehd }% \ifcsemptyTF\xwm@tempb{}{% \cptexpandarg{\xglobal\definecolorset{rgb}{#1}{#2}} @@ -179,15 +210,21 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ } \DefSuffixChecker\xwm@suffixcheck{*}{+}{'} \robust@def*\xwmifitemsinTF{% - \cpt@swatrue\cpt@testopt\xwm@itemsin\@ne + \xwm@swatrue\cpt@testopt\xwm@itemsin\@ne } \robust@def*\xwmifitemsinFT{% - \cpt@swafalse\cpt@testopt\xwm@itemsin\@ne + \xwm@swafalse\cpt@testopt\xwm@itemsin\@ne +} +\robust@def*\xxwmifitemsinTF{% + \xwm@swatrue\cpt@testopt\xwm@xitemsin{1}% +} +\robust@def\xwm@xitemsin[#1]#2#3{% + \cptexpandtwoargs{\xwm@itemsin[#1]}{#2}{#3}% } \robust@def\xwm@itemsin[#1]#2#3{% \ifnum\numexpr#1<\@ne \xwm@err{Invalid number '\the#1'\relax\MsgBrk - for command \string\xwmifitemsinTF}\@ehc + for command \string\xwmifitemsinTF}\@ehd \fi \lowercase{% \edef\xwm@tempa{\unexpanded{#2}}% @@ -198,28 +235,23 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \def\xwm@items{}% \def\csv@do##1{% \xifinsetFT{,\detokenize{##1}}{,\cptoxdetok\xwm@tempb}{}{% - \cptaddtolist[,]\xwm@items{##1}% - \pushnumber\xwm@nritems - \ifnum\xwm@nritems>\numexpr#1-1\relax - \loopbreak - \fi + \edef\xwm@items{% + \expandcsonce\xwm@items\ifx\xwm@items\@empty\else,\fi + \unexpanded{##1}% + }% + \edef\xwm@nritems{\the\numexpr\xwm@nritems+1}% + \ifnum\xwm@nritems>\numexpr#1-1\relax\loopbreak\fi }% }% \csv@@parse*[,]\xwm@tempa \csname @\ifnum\xwm@nritems>\numexpr#1-1\relax - \ifcpt@swa first\else second\fi + \ifxwm@swa first\else second\fi \else - \ifcpt@swa second\else first\fi + \ifxwm@swa second\else first\fi \fi oftwo\endcsname } -\robust@def*\x@xwmifitemsinTF{% - \cpt@swatrue\cpt@testopt\xwm@xitemsin{1}% -} -\robust@def\xwm@xitemsin[#1]#2#3{% - \cptexpandtwoargs{\xwm@itemsin[#1]}{#2}{#3}% -} \robust@def*\xwm@hyphenpagerange#1#2#3{% \xifinsetTF{\detokenize{\xwmgetpagenumber}}{\cptoxdetok{#1}}{% \xwm@swbtrue @@ -240,7 +272,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }{% \ifblankTF{#1}{% \xwm@err{Empty page range for watermark: - ^^J'\expandcsonce\currwatermark'.^^J}\@ehc + ^^J||\expandcsonce\xwm@currwatermark||.^^J}\@ehd }{% \protected@edef#3{#1}% }% @@ -250,11 +282,11 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \def#3{#1}\def#4{#2}% \ifinsetTF{-}{#2}{% \xwm@err{Too many hyphens in page range '#1-#2' - \MsgBrk of watermark:^^J'\expandcsonce\currwatermark'}\@ehc + \MsgBrk of watermark:^^J||\expandcsonce\xwm@currwatermark||}\@ehd }{% \ifblankTF{#1}{% \xwm@warn{No start-page in page-range of watermark: - ^^J'\expandcsonce\currwatermark'.^^JI have used the + ^^J||\expandcsonce\xwm@currwatermark||.^^JI have used the default start-page '\xwm@defaultfirstpage' instead}% \def#3{\xwm@defaultfirstpage}% @@ -264,7 +296,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% \ifblankTF{#2}{% \xwm@warn{No end-page for page-range - of watermark:^^J'\expandcsonce\currwatermark' + of watermark:^^J||\expandcsonce\xwm@currwatermark|| ^^JI have used the default end-page '\xwm@defaultlastpage' instead}% \def#4{\xwm@defaultlastpage}% @@ -277,7 +309,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \ifnum\numexpr#1<\numexpr#2\relax\else \ifxwm@swb\else \xwm@err{Watermark start-page '#1' is greater - than end-page '#2'}\@ehc + than end-page '#2'}\@ehd \fi \fi \fi @@ -331,7 +363,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \cptexpandsecond{\def\reserved@a##1}{#1}##2##3\xwm@nil{% \def\reserved@a{##2}% \ifxTF\reserved@a\xwm@nnil{% - \cpt@err{Invalid value '#1' for textalign}\@ehc + \cpt@err{Invalid value '#1' for textalign}\@ehd \def#1{xwm@relax}% }{% \def#1{##2}% @@ -379,12 +411,12 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \expandafter\xwm@resa\reserved@a-\xwm@nil-% \s@expandarg\ifnullTF{\the\toks@}{}{% \xwm@err{'boxalign' has invalid or inconsistent - \MsgBrk values '#1'}\@ehc + \MsgBrk values '#1'}\@ehd }% \ifcsnullTF\xwm@tempa{}{% \ifcsnullTF\xwm@tempb{}{% \xwm@err{Invalid values '#1' for 'boxalign': - \MsgBrk possibly a mixture of styles}\@ehc + \MsgBrk possibly a mixture of styles}\@ehd }% }% \def\xwm@tempc{}% @@ -417,7 +449,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xifblankTF{#1}{% \def\xwm@tempc{s}% }{% - \xwm@err{Invalid entries '#1' for 'boxalign'}\@ehc + \xwm@err{Invalid entries '#1' for 'boxalign'}\@ehd }% }{% \begingroup @@ -425,7 +457,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \def\siso@do##1{\advance\cpt@cnta\@ne}% \s@expandarg\siso@@loop\xwm@tempc \ifnum\cpt@cnta>2\relax - \xwm@err{More than two entries '#1' for 'boxalign'}\@ehc + \xwm@err{More than two entries '#1' for 'boxalign'}\@ehd \fi \endgroup }% @@ -433,7 +465,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \postgroupdef#1\endgroup } \robust@def*\xwm@notenddocerr{% - \xwm@err{Wrong location of end-of-document command}\@ehc + \xwm@err{Wrong location of end-of-document command}\@ehd } \robust@def*\AfterEndOfDocument{\grightaddtocs\xwm@afterenddoc} \new@def*\xwm@afterenddoc{} @@ -572,7 +604,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \cptgxaddtolist*\xwm@picfilesread{\usename{#2picfile}}% }% \aftercsname\xwm@stripallouterbracesincs{#2picfileext}% - \ifboolTF{xwm@pdf}{% + \ifdefboolTF{xwm@pdf}{% \xifinsetTF{,\usename{#2picfileext},}{,pdf,png,jpeg,jpg,mps,}{}{% \csn@def{#2picfileext}{pdf}% \ifxwm@swb\xwm@tempb{pdf}{pdf}\fi @@ -605,7 +637,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ printwatermark=true; print-watermark=true/\setaliaskey{printwatermark}; allownesting=true; - showpagecenter=true/\ifboolTF{xwm@showpagecenter} + showpagecenter=true/\ifdefboolTF{xwm@showpagecenter} {\wmk@showpagecentertrue\wlp@showpagecentertrue}{}; show-page-center=true/\setaliaskey{showpagecenter}; showpapercenter=true/\setaliaskey{showpagecenter}; @@ -652,13 +684,13 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \ifbracedTF{##1}{% \aftercsname{\xwm@stripallouterbraces{##1}}{#1graphicsoptions} }{% - \cpt@err{Values of key 'graphicsoptions' not braced}\@ehc + \cpt@err{Values of key 'graphicsoptions' not braced}\@ehd }; GraphicsOptions=/ \ifdocstartedTF{% \xwm@err{\noexpand\GraphicsOptions is a command, not a key.\MsgBrk - Maybe you meant 'graphicsoptions'}\@ehc + Maybe you meant 'graphicsoptions'}\@ehd }{}; picontoptext=true; picture-on-top-text=true/\setaliaskey{picontoptext}; @@ -713,8 +745,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \usename{#1tmarkfalse} }{% \usename{#1tmarktrue} - }% - \letcstocsn\currwatermark{#1textmark}; + }; text-mark=DRAFT/\setaliaskey{textmark}; firstpage=true/\ifdefboolFT{#1firstpage}{}{\usename{#1minmarktrue}}; first-page=true/\setaliaskey{firstpage}; @@ -724,7 +755,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ page=1/ \ifinsetTF{-}{##1}{% \xwm@err{I found '-' in '##1' for key 'page', - \MsgBrk but 'page' doesn't take page-range}\@ehc + \MsgBrk but 'page' doesn't take page-range}\@ehd }{% \ifnum\numexpr##1=\z@pt\else\usename{#1onepageonlytrue} \usename{#1minmarktrue}\fi @@ -738,7 +769,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \cptmakecs{#1pagestart}\cptmakecs{#1pageend}}; pagex={1}/ \ifbracedTF{##1}{}{% - \xwm@err{Value of key 'pagex' must be braced}\@ehc + \xwm@err{Value of key 'pagex' must be braced}\@ehd }; boxalign=/\ifblankTF{##1}{} {\aftercsname\xwm@setboxalign{#1boxalign}}; @@ -954,29 +985,31 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ tileno,tilenumber,tile-number,number-of-tiles } \new@def*\xwm@pagespecifiers{% - page=,pages=,pagex=,firstpage,lastpage,allpages,% - oddpages,evenpages% + % '=' is needed here to create uniqueness; eg, to avoid confusing + % ',page' with ',pages'. + page=,pages=,pagex=,firstpage,lastpage,allpages,oddpages,evenpages,% + section=,sections=,sectionx=% } \robust@def*\xwm@decidedetok#1{% - \ifsingletokenTF{#1}{% + \ifntypeTF{#1}{% \ifmacroTF{#1}{% - \let\xwm@detok\cptoxdetok + \let\xwm@detoktype\cptoxdetok }{% - \let\xwm@detok\detokenize + \let\xwm@detoktype\detokenize }% }{% - \let\xwm@detok\detokenize + \let\xwm@detoktype\detokenize }% } \robust@def*\xwm@decidexp#1{% - \ifsingletokenTF{#1}{% + \ifntypeTF{#1}{% \ifmacroTF{#1}{% - \let\xwm@xp\expandcsonce + \let\xwm@exptype\expandcsonce }{% - \let\xwm@xp\unexpanded + \let\xwm@exptype\unexpanded }% }{% - \let\xwm@xp\unexpanded + \let\xwm@exptype\unexpanded }% } \robust@def*\newwatermark#1{% @@ -992,8 +1025,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% } \robust@def*\xnewwatermark{% - \xwm@suffixcheck - {\cpt@teststpm{\cpt@testopt\cpt@xnewwatermark{}}}% + \xwm@suffixcheck{\cpt@teststpm{\cpt@testopt\cpt@xnewwatermark{}}}% } \robust@def*\xwm@ltxcmds{% \centering,\flushright,\flushleft,\raggedright,% @@ -1051,20 +1083,20 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% } \robust@def\xwm@n@wwatermark[#1]#2{% - \ifboolTF{cpt@pm}{}{\xwm@n@ww@termark{#1}{#2}}% + \ifdefboolTF{cpt@pm}{}{\xwm@n@ww@termark{#1}{#2}}% } \robust@def\xwm@n@ww@termark#1#2{% \xwm@decidexp{#1}% - \edef\xwm@currattrib{\xwm@xp{#1}}% + \edef\xwm@currattrib{\xwm@exptype{#1}}% \cpt@sttrue\cpt@kvnormalize[,]\xwm@currattrib \xwm@decidexp{#2}% - \edef\xwm@currmark{\xwm@xp{#2}}% + \edef\xwm@currmark{\xwm@exptype{#2}}% \xwm@decidedetok{#2}% \xwm@swafalse - \xifinsetTF{\detokenize{\newwatermark}}{\xwm@detok{#2}}{% + \xifinsetTF{\detokenize{\newwatermark}}{\xwm@detoktype{#2}}{% \xwm@swatrue }{% - \xifinsetTF{\detokenize{\newwallpaper}}{\xwm@detok{#2}}{% + \xifinsetTF{\detokenize{\newwallpaper}}{\xwm@detoktype{#2}}{% \xwm@swatrue }{}% }% @@ -1072,10 +1104,10 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \ifxwm@allownesting\else \xwm@err{Nested '\string\newwatermark' or '\string\newwallpaper'\MsgBrk - while option 'allownesting' is false}\@ehc + while option 'allownesting' is false}\@ehd \fi \fi - \ifboolTF{xwm@wall}{}{% + \ifdefboolTF{xwm@wall}{}{% \xwmifitemsinFT[1]{% squaretiles,square-tiles,tilexsize,tile-xsize,% tileysize,tile-ysize,wpxoffset,wallpaper-xoffset,% @@ -1084,13 +1116,13 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ tile-number,number-of-tiles% }{#1}{}{% \xwm@@err{'\xwm@items' not admissible for - \MsgBrk non-wallpaper watermarks}\@ehc + \MsgBrk non-wallpaper watermarks}\@ehd }% }% - \ifboolTF{xwm@allownesting}{}{% + \ifdefboolTF{xwm@allownesting}{}{% \cpt@choicefdfalse \def\csv@do##1{% - \xifinsetFT{,\detokenize{##1}}{,\xwm@detok{#2}}{}{% + \xifinsetFT{,\detokenize{##1}}{,\xwm@detoktype{#2}}{}{% \def\xwm@tempa{##1}% \cpt@choicefdtrue\loopbreak }% @@ -1101,28 +1133,28 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \MsgBrk The following keys are not allowed in \MsgBrk mandatory/second argument of \MsgBrk '\string\newwatermark' or '\string\newwallpaper': - ^^J||\xwm@samplemarkkeys||}\@ehc + ^^J||\xwm@samplemarkkeys||}\@ehd \fi }% - \xifinsetFT\xwm@watermarkparser{\xwm@detok{#2}}{}{% + \xifinsetFT\xwm@watermarkparser{\xwm@detoktype{#2}}{}{% \xwm@err{Watermark parser '\xwm@watermarkparser' appears in the following watermark.\MsgBrk Enclose your token - '\xwm@watermarkparser' in braces:^^J||\unexpanded{#2}||}\@ehc + '\xwm@watermarkparser' in braces:^^J||\unexpanded{#2}||}\@ehd }% - \x@xwmifitemsinTF[1]\xwm@pagespecifiers{\expandcsonce\xwm@currattrib}{% - \x@xwmifitemsinTF[2]\xwm@pagespecifiers{\expandcsonce\xwm@currattrib}{% + \xxwmifitemsinTF[1]\xwm@pagespecifiers{\expandcsonce\xwm@currattrib}{% + \xxwmifitemsinTF[2]\xwm@pagespecifiers{\expandcsonce\xwm@currattrib}{% \xwm@err{Too many page specifiers '\xwm@items' for watermark: ^^J||\expandcsonce\xwm@currattrib||}{% Only one page specifier is allowed in watermark.}% }{}% }{% \xwm@err{No page specifier for watermark: - ^^J||\expandcsonce\xwm@currmark||}\@ehc + ^^J||\expandcsonce\xwm@currmark||}\@ehd }% \ifcsnullTF\xwm@currattrib{% \ifcsnullTF\xwm@currmark{}{% \xwm@@err{No attributes for watermark: - ^^J||\expandcsonce\xwm@currmark||}\@ehc + ^^J||\expandcsonce\xwm@currmark||}\@ehd }% }{% \xwm@makecurrmark @@ -1132,150 +1164,256 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \expandcsonce\xwm@backlist\fi }% \expandafter\edef\reserved@a{% - \expandafter\ifdefTF\reserved@a{\expandcstwice\reserved@a}{}% - \expandcsonce\currwatermark + \expandafter\ifdefined\reserved@a\expandcstwice\reserved@a\fi + \expandcsonce\xwm@currwatermark }% - \undefcs\xwm@xp\undefcs\xwm@detok } -\robust@def*\xwm@twopagespecerr{% - \ifxwm@swa +\robust@def*\xwm@avoidtwopagespecs{% + \if\xwm@pagespecfd \xwm@err{Two page specifiers in watermark attributes: - ^^J||\cptoxdetok{\xwm@currattrib}||}\@ehc + ^^J||\cptoxdetok\xwm@currattrib||}\@ehd \else - \xwm@swatrue + \def\xwm@pagespecfd{00}% \fi } \robust@def*\xwm@addcurrmark#1{% - \begingroup - \xifinsetTF{,\detokenize{textmark}}{,\cptoxdetok\xwm@currattrib}{% - \@tempswafalse - \ifxTF\xwm@currmark\@empty{}{% - \xwm@err{Duplicate nonempty 'textmark'}\@ehc + % Local group is in effect. + % If the current mark is already on current page, ignore it. This, eg, + % avoids 'pagex={1,1,2},textmark=X' making two entries for 'X' on page 1. + \letcstocsn\reserved@a{xwm@mark@@\romannumeral#1}% + \ifx\reserved@a\xwm@currattrib\else + \xifinsetTF{\detokenize{textmark=}}{\cptoxdetok\xwm@currattrib}{% + \@tempswafalse + \ifx\xwm@currmark\@empty\else + \xwm@err{Duplicate textmark in ||\cptoxdetok\xwm@currmark||} + {I found textmark earlier in the mandotory argument of + \noexpand\newwatermark, and now I find textmark key in the + attribute list.}% + \fi + }{% + \@tempswatrue }% - }{% - \@tempswatrue - }% - \edef\xwm@tempb{% - page=\number#1,\expandcsonce\xwm@currattrib,% - \if@tempswa textmark={\expandcsonce\xwm@currmark}\fi - }% - \ifcsemptyTF\xwm@tempb{}{\xwm@normalizedoublecomma\xwm@tempb}% - \edef\currwatermark{% - \expandcsonce\currwatermark{\number#1}{\expandcsonce\xwm@tempb}% - }% - \postgroupdef\currwatermark\endgroup + \edef\xwm@tempb{% + page=\number#1,\expandcsonce\xwm@currattrib,% + \if@tempswa textmark={\expandcsonce\xwm@currmark}\fi + }% + \edef\xwm@currwatermark{% + % {}{} + \expandcsonce\xwm@currwatermark{\number#1}{\expandcsonce\xwm@tempb}% + }% + \gletcsntocs{xwm@mark@@\romannumeral#1}\xwm@currattrib + \fi } \robust@def*\xwm@getpagespec#1{% - \ifinsetTF{,#1,}{,page,pages,pagex,}{% - \def\xwm@tempa##1#1=##2,##3\xwm@nil{% - \ifblankTF{##2}{% - \xwm@warn{Key 'page/pages' has blank value; - \MsgBrk '1' used instead}\@ehc - \def\xwm@currpage{1}% - }{% - \ifstrcmpTF{#1}{pages}{% - \ifinsetTF{,}{##2}{% - \xwm@err{Key 'pages' doesn't accept comma-separated - \MsgBrk page numbers: use a hyphen}\@ehc - }{}% + \ifinsetTF{,#1,}{,page,pages,pagex,section,sections,sectionx,}{% + % \xwm@ifpagespec has shown that #1 is in \xwm@currattrib. We + % need to confirm that '#1=' is in \xwm@currattrib. + \xifinsetTF{,\detokenize{#1=}}{,\cptoxdetok\xwm@currattrib}{% + \def\xwm@tempa##1#1=##2,##3\xwm@nil{% + \ifblankTF{##2}{% + \xwm@warn{Key '#1' has an empty value; '1' assumed}\@ehd + \def\xwm@currpages{1}% }{% - \ifstrcmpTF{#1}{pagex}{% - \ifinsetTF{-}{##2}{% - \xwm@err{Key 'pagex' doesn't accept hyphen-separated - \MsgBrk page numbers: use commas}\@ehc + \ifinsetTF{,#1,}{,pages,sections,}{% + \ifinsetTF{,}{##2}{% + \xwm@err{Key '#1' doesn't accept comma-separated + \MsgBrk page numbers: use a hyphen}\@ehd }{}% - }{}% + }{% + \ifinsetTF{,#1,}{,pagex,sectionx,}{% + \ifinsetTF{-}{##2}{% + \xwm@err{Key '#1' doesn't accept hyphen-separated + \MsgBrk page numbers: use commas}\@ehd + }{}% + }{}% + }% + \def\xwm@currpages{##2}% }% - \def\xwm@currpage{##2}% + \edef\xwm@currattrib{\unexpanded{##1,##3}}% }% - \edef\xwm@currattrib{\unexpanded{##1,##3}}% + \expandafter\xwm@tempa\xwm@currattrib,\xwm@nil + }{% + \xwm@err{Key '#1' doesn't have '=' and a value}\@ehd }% - \expandafter\xwm@tempa\xwm@currattrib,\xwm@nil }{% - \def\xwm@tempa##1#1,##2\xwm@nil{% + \xwm@getpagespec@a{#1}% + }% + \kv@@normalize*\xwm@currattrib +} +\robust@def*\xwm@getpagespec@a#1{% + \xifinsetTF{,\detokenize{#1=true},}{,\cptoxdetok\xwm@currattrib,}{% + \def\xwm@tempa##1#1=true,##2\xwm@nil{% \edef\xwm@currattrib{\unexpanded{##1,##2}}% }% \expandafter\xwm@tempa\xwm@currattrib,\xwm@nil + }{% + \xifinsetTF{,\detokenize{#1=false},}{,\cptoxdetok\xwm@currattrib,}{% + \def\xwm@tempa##1#1=false,##2\xwm@nil{% + \edef\xwm@currattrib{\unexpanded{##1,##2}}% + }% + \expandafter\xwm@tempa\xwm@currattrib,\xwm@nil + }{% + \def\xwm@tempa##1#1,##2\xwm@nil{% + \edef\xwm@currattrib{\unexpanded{##1,##2}}% + }% + \expandafter\xwm@tempa\xwm@currattrib,\xwm@nil + }% }% } \robust@def*\xwm@ifpagespec#1{% - \cptexpandtwoargs\cpt@in - {,\detokenize{#1}}{,\cptoxdetok\xwm@currattrib}% - \ifboolTF{cpt@in}\@iden\@gobble + \@expandtwoargs\cpt@in{,\detokenize{#1}}{,\cptoxdetok\xwm@currattrib}% + \ifdefboolTF{cpt@in}\@iden\@gobble } \robust@def*\xwm@normalizedoublecomma#1{% - \def\xwm@tempa##1,,##2\xwm@@nil{% + \def\xwm@tempa##1,,##2\normal@nil{% \ifblankTF{##2}{% \edef#1{\unexpanded{##1}}% }{% - \xwm@tempa##1,##2\xwm@@nil + \xwm@tempa##1,##2\normal@nil }% }% - \expandafter\xwm@tempa#1,,\xwm@@nil + \expandafter\xwm@tempa#1,,\normal@nil } \robust@def*\xwm@makecurrmark{% - \edef\xwm@rsvda{\lastdocpage}% - \def\currwatermark{}% - \xwm@swafalse + \begingroup + \edef\xwm@lastpage{\lastdocpage}% + \def\xwm@currwatermark{}% + \def\xwm@pagespecfd{01}% \xwm@ifpagespec{page=}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{page}% - \xwm@addcurrmark\xwm@currpage + \xwm@addcurrmark\xwm@currpages }% \xwm@ifpagespec{pages=}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{pages}% - \xwm@hyphenpagerange\xwm@currpage\xwm@pagestart\xwm@pageend + \xwm@hyphenpagerange\xwm@currpages\xwm@pagestart\xwm@pageend \xwm@cnta\numexpr\xwm@pagestart\relax \cptloop \xwm@addcurrmark\xwm@cnta - \advance\xwm@cnta by1 % + \advance\xwm@cnta\@ne \ifnum\xwm@cnta<\numexpr\xwm@pageend+1\relax \cptrepeat }% \xwm@ifpagespec{pagex=}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{pagex}% - \def\ltxkeys@do##1{\xwm@addcurrmark{##1}}% - \ltxkeys@parse*1\xwm@currpage + \expandafter\cptfor\xwm@currpages\dofor{% + \xwm@addcurrmark{##1}% + }% }% \xwm@ifpagespec{firstpage}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{firstpage}% \xwm@addcurrmark{1}% }% \xwm@ifpagespec{lastpage}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{lastpage}% - \xwm@addcurrmark\xwm@rsvda + \xwm@addcurrmark\xwm@lastpage + }% + \xwm@ifpagespec{allpages}{% + \xwm@avoidtwopagespecs + \xwm@getpagespec{allpages}% + \xwm@cnta\@ne + \cptloop + \xwm@addcurrmark\xwm@cnta + \advance\xwm@cnta\@ne + \ifnum\xwm@cnta<\numexpr\xwm@lastpage+1\relax + \cptrepeat }% \xwm@ifpagespec{evenpages}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{evenpages}% \xwm@cnta\@ne \cptloop \ifodd\xwm@cnta\else \xwm@addcurrmark\xwm@cnta \fi - \advance\xwm@cnta by1 - \ifnum\xwm@cnta<\numexpr\xwm@rsvda+1\relax + \advance\xwm@cnta\@ne + \ifnum\xwm@cnta<\numexpr\xwm@lastpage+1\relax \cptrepeat }% \xwm@ifpagespec{oddpages}{% - \xwm@twopagespecerr + \xwm@avoidtwopagespecs \xwm@getpagespec{oddpages}% \xwm@cnta\z@pt \cptloop - \ifodd\xwm@cnta\expandafter\@iden\else\expandafter\@gobble\fi - {\xwm@addcurrmark\xwm@cnta}% - \advance\xwm@cnta by1 - \ifnum\xwm@cnta<\numexpr\xwm@rsvda+1\relax + \ifodd\xwm@cnta + \xwm@addcurrmark\xwm@cnta + \fi + \advance\xwm@cnta\@ne + \ifnum\xwm@cnta<\numexpr\xwm@lastpage+1\relax + \cptrepeat + }% + \xwm@ifpagespec{section=}{% + \xwm@avoidtwopagespecs + \xwm@getpagespec{section}% + \xwm@convertsectopage\xwm@currpages + \xwm@addcurrmark\xwm@currpages + }% + \xwm@ifpagespec{sections=}{% + \xwm@avoidtwopagespecs + \xwm@getpagespec{sections}% + \xwm@convertsectopage@hyphen\xwm@currpages + \xwm@hyphenpagerange\xwm@currpages\xwm@pagestart\xwm@pageend + \xwm@cnta\numexpr\xwm@pagestart\relax + \cptloop + \xwm@addcurrmark\xwm@cnta + \advance\xwm@cnta\@ne + \ifnum\xwm@cnta<\numexpr\xwm@pageend+1\relax \cptrepeat }% - \ifxwm@swa\else + \xwm@ifpagespec{sectionx=}{% + \xwm@avoidtwopagespecs + \xwm@getpagespec{sectionx}% + \xwm@convertsectopage\xwm@currpages + \expandafter\cptfor\xwm@currpages\dofor{% + \xwm@addcurrmark{##1}% + }% + }% + \if\xwm@pagespecfd\else \xwm@err{No page specifier in watermark attributes: - ^^J||\cptoxdetok\xwm@currattrib||}\@ehc + ^^J||\cptoxdetok\xwm@currattrib||}\@ehd \fi + \postgroupdef\xwm@currwatermark\endgroup +} +% \xwm@convertsectopage{} +\robust@def*\xwm@convertsectopage#1{% + \begingroup + \def\xwm@tempa{}% + \expandafter\cptfor#1\dofor{% + \letcstocsn\reserved@a{xwm@secstartpage@@\romannumeral##1}% + \ifx\reserved@a\undefined + \def\reserved@a{1}% + \fi + \xifinsetTF{,\reserved@a,}{,\xwm@tempa,}{}{% + \edef\xwm@tempa{% + \xwm@tempa\ifx\xwm@tempa\@empty\else,\fi\reserved@a + }% + }% + }% + \let#1\xwm@tempa + \postgroupdef#1\endgroup +} +% \xwm@convertsectopage@hyphen{} +\robust@def*\xwm@convertsectopage@hyphen#1{% + \begingroup + \def\xwm@tempa{}% + \def\csv@do##1{% + \letcstocsn\reserved@a{xwm@secstartpage@@\romannumeral##1}% + \ifx\reserved@a\undefined + \def\reserved@a{1}% + \fi + \xifinsetTF{-\reserved@a-}{-\xwm@tempa-}{}{% + \edef\xwm@tempa{% + \xwm@tempa\ifx\xwm@tempa\@empty\else-\fi\reserved@a + }% + }% + }% + \csv@@parse*[-]#1% + \let#1\xwm@tempa + \postgroupdef#1\endgroup } \robust@def*\dummywatermark#1{% \ifstrcmpTF{#1}\newwatermark{% @@ -1283,7 +1421,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ {'\string\newwatermark' in front of \string\dummywatermark}% {First comment out or remove '\string\newwatermark'.}% }{% - \ifboolTF{xwm@usedummymarks}\newwatermark\xwm@dummywatermark + \ifdefboolTF{xwm@usedummymarks}\newwatermark\xwm@dummywatermark #1% }% } @@ -1293,7 +1431,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ {'\string\newwallpaper' in front of \string\dummywallpaper}% {First comment out or remove '\string\newwallpaper'.}% }{% - \ifboolTF{xwm@usedummymarks}\newwallpaper\xwm@dummywatermark + \ifdefboolTF{xwm@usedummymarks}\newwallpaper\xwm@dummywatermark #1% }% } @@ -1308,18 +1446,25 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \global\let\newwatermark\dummywatermark \global\xwm@usedummymarksfalse } +\robust@def*\xwmsuspendwatermark{\xwm@putmarkfalse} +\robust@def*\xwmresumewatermark{\xwm@putmarktrue} +\newletcs\xwmwatermarkoff\xwmsuspendwatermark +\newletcs\xwmwatermarkon\xwmresumewatermark + \robust@def*\xwm@putbothmarks{% - \ifdefFT\xwm@watermarklist{}\xwm@textpicmark@a - \ifdefFT\xwm@wallpaperlist{}\xwm@wallpaper@a + \ifdefboolFT{xwm@putmark}{}{% + \ifdefFT\xwm@watermarklist{}\xwm@textpicmark@a + \ifdefFT\xwm@wallpaperlist{}\xwm@wallpaper@a + }% } -\chardef\xwm@nowatermark\z@pt +\chardef\xwm@nowatermarksignal\z@pt \AtBeginShipout{% - \endlinechar13\catcode13=5 - \catcode`\ =10 + \endlinechar13 \catcode13=5\relax + \catcode`\ =10\relax \catcode`\\\z@pt \catcode`\{\@ne \catcode`\}\tw@ - \ifboolTF{xwm@printwatermark}{% + \ifdefboolTF{xwm@printwatermark}{% \let\xwm@watermarklist\xwm@backwmklist \let\xwm@wallpaperlist\xwm@backwalllist \AtBeginShipoutUpperLeft{% @@ -1333,8 +1478,8 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xwm@putbothmarks }% }{% - \ifnum\xwm@nowatermark<\@ne - \pushnumber\xwm@nowatermark + \ifnum\xwm@nowatermarksignal<\@ne + \edef\xwm@nowatermarksignal{\the\numexpr\xwm@nowatermarksignal+1}% \xwm@info{'printwatermark=false': no watermark printed}% \fi }% @@ -1400,10 +1545,10 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ } \robust@def*\xwm@textpicmark@a{% \ifcsnullTF\xwm@watermarklist{% - \ifboolTF{xwm@foregrd}{}{% + \ifdefboolTF{xwm@foregrd}{}{% \ifdefboolFT{xwm@printwatermark}{}{% - \ifboolTF{xwm@draft}{% - \ifboolTF{wmk@showpagecenter}{}{% + \ifdefboolTF{xwm@draft}{% + \ifdefboolTF{wmk@showpagecenter}{}{% \ifnumcmpFT\c@page=\@ne{}{% \cptexpandargonce{\ltxkeys@setkeys[XWM]{watermark}}% \xwm@perpagewmkstate @@ -1446,21 +1591,19 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }{% [\ltxkeys@keynames]{\expandcsnonce{xwm@perpage#2state}}% }% - \edef\currwatermark{\unexpanded{#3}}% + \edef\xwm@currwatermark{\unexpanded{#3}}% \ifblankTF{#3}{}{\ltxkeys@setkeys[XWM]{#1}{#3}}% } \robust@def*\xwm@processmarks#1#2{% -%\edef\tempa{\expandcsonce{#1}} -%\show\tempa \def\xwm@pr@cessmarks##1##2{% - \ifstrcmpTF{##1}{.}{}{% + \ifstrcmpTF{##1}{\@nil}{}{% \ifnumcmpTF##1=\c@page{#2}{% \edef#1{\expandcsonce#1\unexpanded{{##1}{##2}}}% }% \xwm@pr@cessmarks }% }% - \cptexpandsecondonce{\def#1{}\xwm@pr@cessmarks}{#1}{.}{}% + \cptexpandsecondonce{\def#1{}\xwm@pr@cessmarks}{#1}{\@nil}{}% } \ltxkeys@disablekeys*[XWM]{main}{printwatermark,disablegeometry} \BeforeStartOfDocument{% @@ -1482,7 +1625,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \edef\xwm@curralign{\expandcsnonce{#1@textalign}}% \cptexpanded{\endgroup \xwm@put(\mcs{#1@textxpos@a},\mcs{#1@textypos@a}){% - \quitvmode\nxp\@killglue\noindent + \nxp\leavevmode\nxp\@killglue\noindent \nxp\makebox(0,0)[\expandcsnonce{#1@boxalign}]{% \nxp\rotatebox[origin=c]{\mcs{#1@textangle}}{% \nxp\scalebox{\mcs{#1@textscale}}{% @@ -1496,7 +1639,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \nxp\fontseries\mcs{#1@fontseries}% \nxp\fontsize\mcs{#1@fontsize}\mcs{#1@fontsize@a}% \nxp\selectfont - \quitvmode + \nxp\leavevmode \nxp\begin{\xwm@curralign}% \mcs{#1@textmark}% \nxp\end{\xwm@curralign}% @@ -1508,18 +1651,19 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% \@killglue\normalcolor } -\robust@def*\xwm@getpicsize#1{% +% See also \xwmgetpicturesize. +\robust@def*\xwm@getgrafsize#1{% \ifcsnnullTF{#1@picwidth}{% \ifcsnnullTF{#1@picheight}{% \edef\pic@size{scale=\cptmakecs{#1@picscale}}% }{% \xwm@err{You have supplied picture height - but not width}\@ehc + but not width}\@ehd }% }{% \ifcsnnullTF{#1@picheight}{% \xwm@err{You have supplied picture width - but not height}\@ehc + but not height}\@ehd }{% \edef\pic@size{width=\cptmakecs{#1@picwidth},% height=\cptmakecs{#1@picheight}}% @@ -1528,12 +1672,13 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ } \robust@def*\xwm@picmark{% \xwm@findpicfile\wmk@picfile\wmk@picfileext - \xwm@getpicsize{wmk}% + \xwm@getgrafsize{wmk}% \cptpassexpanded{% \setbox\xwm@boxa=\hbox{% - \noexpand\includegraphics[\ifxwm@pdf viewport\else - bb\fi=\wmk@picbb,\pic@size,clip,\wmk@graphicsoptions, - \xwm@gr@phicsoptions]{\xwm@filefound}}% + \noexpand\includegraphics[\ifxwm@pdf viewport\else + bb\fi=\wmk@picbb,\pic@size,clip,\wmk@graphicsoptions,% + \xwm@gr@phicsoptions]{\xwm@filefound}% + }% }% \cptdimdef\widthofcurrpic{\wd\xwm@boxa}% \cptdimdef\heightofcurrpic{\ht\xwm@boxa}% @@ -1542,7 +1687,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xwm@put(\wmk@picxpos@a,\wmk@picypos@a){% \rotatebox[origin=c]\wmk@picangle{% \cptexpandsecond{\makebox(0,0)}{[\wmk@boxalign]{% - \ifboolTF{xwm@draft}{\xwm@draftbox{wmk}}{\copy\xwm@boxa}% + \ifdefboolTF{xwm@draft}{\xwm@draftbox{wmk}}{\copy\xwm@boxa}% }% }% }}% @@ -1568,7 +1713,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \newcommand*\xwm@textpicmark@c{% \xwm@getposition\wmk@textxpos\wmk@textypos\wmk@coordunit \xwm@getposition\wmk@picxpos\wmk@picypos\wmk@coordunit - \ifboolTF{wmk@picontoptext}{% + \ifdefboolTF{wmk@picontoptext}{% \ifdefboolFT{wmk@tmark}{}{\xwm@textbox{wmk}}% \ifdefboolFT{wmk@pmark}{}\xwm@picmark }{% @@ -1601,7 +1746,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \robust@def*\xwm@w@term@rkpaths#1(#2)#3{% \cpt@useemptytrue \def\xwm@tempa{#3}% - \ifboolTF{cpt@st}{% + \ifdefboolTF{cpt@st}{% \ifbracedTF{#3}{\xwm@stripallouterbraces{#3}\xwm@tempa}{}% \def\csv@do##1{% \ifbracedTF{##1}{% @@ -1616,13 +1761,13 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xifinsetFT{,}{\cptoxdetok\xwm@tempa}{}{% \xwm@err{Input path '#3' contains comma: \MsgBrk Commas can appear only in the argument - \MsgBrk of star (*) variant of \string\watermarkpaths}\@ehc + \MsgBrk of star (*) variant of \string\watermarkpaths}\@ehd }% \def\tsv@do##1{% \ifbracedTF{##1}{% \cptexpandarg{\grightaddtocs\xwm@inputpath}{{#1\@iden##1#2}}% }{% - \xwm@err{Input path '##1' needs outer braces}\@ehc + \xwm@err{Input path '##1' needs outer braces}\@ehd }% }% \tsv@@parse*\xwm@tempa @@ -1664,7 +1809,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% }% \tsv@@loop*\xwm@inputpath - \ifboolTF{cpt@choicefd}% + \ifdefboolTF{cpt@choicefd}% } \robust@def*\xwm@nofileerr#1#2{% \message{% @@ -1693,7 +1838,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \robust@def*\xwm@findpicfile#1#2{% \let\xwm@filefound\@empty \edef\xwm@filegiven{#1.#2}% - \ifboolTF{xwm@pdf}{% + \ifdefboolTF{xwm@pdf}{% \xwm@f@ndpicfile{#1}{#2}{pdf,png,jpeg,mps}% }{% \xwm@f@ndpicfile{#1}{#2}{eps,ps}% @@ -1713,8 +1858,8 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% \csv@@loop[,]{#3}% }% - \ifboolTF{xwm@swb}{}{% - \ifboolTF{xwm@swa}{% + \ifdefboolTF{xwm@swb}{}{% + \ifdefboolTF{xwm@swa}{% \xwm@warn{File '\xwm@filegiven' doesn't exist \MsgBrk on given path(s) '\xwm@inputpath', \MsgBrk but I have found \xwm@filefound'}% @@ -1725,7 +1870,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% } \robust@def*\xwm@wallpaper@c{% - \ifboolTF{wlp@picontoptext}{% + \ifdefboolTF{wlp@picontoptext}{% \xwm@textwallpaper \xwm@picwallpaper }{% @@ -1736,13 +1881,12 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ } \robust@def*\xwm@textwallpaper{% \ifdefboolFT{wlp@tmark}{}{% - \ifboolTF{wlp@squaretiles}\xwm@sqtexttiles\xwm@texttiles + \ifdefboolTF{wlp@squaretiles}\xwm@sqtexttiles\xwm@texttiles }% } \robust@def*\xwm@picwallpaper{% \ifdefboolFT{wlp@pmark}{}{% - \ifboolTF{wlp@squaretiles}% - \xwm@sqpictiles\xwm@pictiles + \ifdefboolTF{wlp@squaretiles}\xwm@sqpictiles\xwm@pictiles }% } \robust@def*\xwm@dotiling{\xwm@makedraftbox\xwm@dotiling@a} @@ -1756,8 +1900,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xwm@put(\tilex,\xwm@tempa){\rotatebox[origin=c] \xwm@currangle{% \cptexpandsecond{\makebox(0,0)}{[\wlp@boxalign]}{% - \ifboolTF{xwm@draft} - {\xwm@draftbox{wlp}}{\copy\xwm@boxa}% + \ifdefboolTF{xwm@draft}{\xwm@draftbox{wlp}}{\copy\xwm@boxa}% }% }}% \cptdimadd\tilex{\wlp@tilexsize+\wlp@tilexoffset}% @@ -1768,7 +1911,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \robust@def*\xwm@toofewtiles#1{% \ifnum\numexpr#1<4\relax \xwm@err{Too few square wallpapers '#1'; - \MsgBrk minimum expected: 4}\@ehc + \MsgBrk minimum expected: 4}\@ehd \fi } \robust@def*\xwm@texttiles{% @@ -1836,21 +1979,23 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \ifmmode\copy\@tempboxa\else\unhcopy\@tempboxa\fi \endgroup } -\robust@def*\xwmgetpicdim{\cpt@testopt\xwm@getpicdim{}} -\robust@def*\xwm@getpicdim[#1]#2{% +\robust@def*\xwmgetpicturesize{\cpt@testopt\xwm@getpicsize{}} +\robust@def*\xwm@getpicsize[#1]#2{% \begingroup \edef\Ginput@path{% \usecsifdef\Ginput@path\usecsifdef\xwm@inputpath \usecsifdef\input@path }% \setbox\xwm@boxa=\hbox{\includegraphics[#1]{#2}}% - \cptdimdef\xwmwdofpic{\wd\xwm@boxa}% - \cptdimdef\xwmhtofpic{\ht\xwm@boxa}% - \cptdimdef\xwmdpofpic{\dp\xwm@boxa}% - \cptdimdef\xwmtothtofpic{\ht\xwm@boxa+\dp\xwm@boxa}% + % See also \widthofcurrpic. + \cptdimdef\widthofpic{\wd\xwm@boxa}% + \cptdimdef\heightofpic{\ht\xwm@boxa}% + \cptdimdef\depthofpic{\dp\xwm@boxa}% + \cptdimdef\totalheightofpic{\ht\xwm@boxa+\dp\xwm@boxa}% \let\\\cpt@csexit \cptexpanded{\endgroup - \\\xwmwdofpic\\\xwmhtofpic\\\xwmdpofpic\\\xwmtothtofpic}% + \\\widthofpic\\\heightofpic\\\depthofpic\\\totalheightofpic + }% } % #1=optional text to be printed as watermark % #2=sundry fixed keys @@ -1860,12 +2005,11 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \cpt@teststpm{\cpt@testopt\xwm@repeatwatermarks{}}% } \robust@def\xwm@repeatwatermarks[#1]#2#3{% - \edef\repeat@marks{\csv@@loop\ifcpt@st*\fi}% + \edef\cpt@tempa{\csv@@loop\ifcpt@st*\fi}% \def\csv@do##1{% \ifblankTF{##1}{}{\newwatermark[#2,##1]{#1}}% }% - \ifboolTF{cpt@pm}{}{\repeat@marks[;]{#3}}% - \undefcs\repeat@marks + \ifdefboolTF{cpt@pm}{}{\cpt@tempa[;]{#3}}% } \ltxkeys@definekeys*[XWM]{boxedminipage}[xwmbmp@]{% width=\textwidth; @@ -1894,7 +2038,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xifstrcmpTF\xwmbmp@innerpos{t}{% \vtop }{% - \ifboolTF{mmode}{% + \ifdefboolTF{mmode}{% \vcenter }{% \@pboxswtrue $\vcenter |$ @@ -2146,7 +2290,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \color{\fad@boxcolor}% \chardef\icol\z@pt \cptdotimes\@tempcnta{% - \pushnumber\icol + \cptpushnumber\icol \colbox{\scalebox\fad@scale {\xwmstrut\fad@height\fad@depth \usename{fade@\romannumeral\icol}}}% @@ -2203,7 +2347,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \xwm@gethfoffset\pgn@hfoffsetleft\pgn@hfoffsetright \fancyhfoffset[R,L]\xwm@hfoffset \AtBeginShipout{% - \ifboolTF{pgn@sendtoback}{% + \ifdefboolTF{pgn@sendtoback}{% \AtBeginShipoutUpperLeft{% \xwm@f@ncyp@genos }% @@ -2214,7 +2358,7 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ }% }% } -\newswitch{xwm@fancy} +\cptnewswitch{xwm@fancy} \robust@def*\xwm@f@ncypagenos{% \def\pgn@textmark{% \begingroup @@ -2222,14 +2366,14 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \pgn@format{\normalfont\pgn@style}% \endgroup }% - \switchtrue{xwm@fancy}% + \cptswitchtrue{xwm@fancy}% \xwm@textbox{pgn}% - \switchfalse{xwm@fancy}% + \cptswitchfalse{xwm@fancy}% } \robust@def*\xwm@f@ncyp@genos{% \ifboolFT{pgn@showpagenos}{}{% \ifnumcmpTF\c@page=\@ne{% - \ifboolTF{pgn@showonpageone}\xwm@f@ncypagenos\relax + \ifdefboolTF{pgn@showonpageone}\xwm@f@ncypagenos\relax }{% \xwm@f@ncypagenos }% @@ -2239,13 +2383,13 @@ $Id: xwatermark.sty,v 1.5.2b 2012/08/10 09:00:00 Ahmed Musa Exp $ \begingroup \def\temp@err{% \xwm@err{Only digits (without units) are allowed\MsgBrk - in the values of 'hfoffsetleft' and 'hfoffsetright'}\@ehc + in the values of 'hfoffsetleft' and 'hfoffsetright'}\@ehd }% \xifblankTF{#1}{}{% - \x@xwmifitemsinTF\xwm@allowedcoordunits{#1}\temp@err{}% + \xxwmifitemsinTF\xwm@allowedcoordunits{#1}\temp@err{}% }% \xifblankTF{#2}{}{% - \x@xwmifitemsinTF\xwm@allowedcoordunits{#2}\temp@err{}% + \xxwmifitemsinTF\xwm@allowedcoordunits{#2}\temp@err{}% }% \def\xwm@tempc##1##2{% \xifblankTF{##1}{\def##2{1}}{\def##2{##1}}% -- cgit v1.2.3