You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tex-compiler/texmf-dist/tex/xelatex/bidipagegrid/bidipagegrid.sty

444 lines
13 KiB

%%
%% This is file `bidipagegrid.sty'.
%%
%% __________________________________________________
%% Copyright © 2014 Vafa Khalighi <persian-tex@tug.org>
%%
%% It may be distributed and/or modified under the LaTeX Project Public License,
%% version 1.3c or higher (your choice). The latest version of
%% this license is at: http://www.latex-project.org/lppl.txt
%%
%% This work is “author-maintained” (as per LPPL maintenance status)
%% by Vafa Khalighi.
%%
%%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode39=12 % '
\catcode44=12 % ,
\catcode45=12 % -
\catcode46=12 % .
\catcode58=12 % :
\catcode64=11 % @
\catcode123=1 % {
\catcode125=2 % }
\expandafter\let\expandafter\x\csname ver@bidipagegrid.sty\endcsname
\ifx\x\relax % plain-TeX, first loading
\else
\def\empty{}%
\ifx\x\empty % LaTeX, first loading,
% variable is initialized, but \ProvidesPackage not yet seen
\else
\expandafter\ifx\csname PackageInfo\endcsname\relax
\def\x#1#2{%
\immediate\write-1{Package #1 Info: #2.}%
}%
\else
\def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
\fi
\x{bidipagegrid}{The package is already loaded}%
\aftergroup\endinput
\fi
\fi
\endgroup%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode39=12 % '
\catcode40=12 % (
\catcode41=12 % )
\catcode44=12 % ,
\catcode45=12 % -
\catcode46=12 % .
\catcode47=12 % /
\catcode58=12 % :
\catcode64=11 % @
\catcode91=12 % [
\catcode93=12 % ]
\catcode123=1 % {
\catcode125=2 % }
\expandafter\ifx\csname ProvidesPackage\endcsname\relax
\def\x#1#2#3[#4]{\endgroup
\immediate\write-1{Package: #3 #4}%
\xdef#1{#4}%
}%
\else
\def\x#1#2[#3]{\endgroup
#2[{#3}]%
\ifx#1\@undefined
\xdef#1{#3}%
\fi
\ifx#1\relax
\xdef#1{#3}%
\fi
}%
\fi
\expandafter\x\csname ver@bidipagegrid.sty\endcsname
\ProvidesPackage{bidipagegrid}%
[2014/07/13 v0.2 Print bidi page grid in background]%
\begingroup\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode123=1 % {
\catcode125=2 % }
\catcode64=11 % @
\def\x{\endgroup
\expandafter\edef\csname bidipagegrid@AtEnd\endcsname{%
\endlinechar=\the\endlinechar\relax
\catcode13=\the\catcode13\relax
\catcode32=\the\catcode32\relax
\catcode35=\the\catcode35\relax
\catcode61=\the\catcode61\relax
\catcode64=\the\catcode64\relax
\catcode123=\the\catcode123\relax
\catcode125=\the\catcode125\relax
}%
}%
\x\catcode61\catcode48\catcode32=10\relax%
\catcode13=5 % ^^M
\endlinechar=13 %
\catcode35=6 % #
\catcode64=11 % @
\catcode123=1 % {
\catcode125=2 % }
\def\TMP@EnsureCode#1#2{%
\edef\bidipagegrid@AtEnd{%
\bidipagegrid@AtEnd
\catcode#1=\the\catcode#1\relax
}%
\catcode#1=#2\relax
}
\TMP@EnsureCode{9}{10}% (tab)
\TMP@EnsureCode{10}{12}% ^^J
\TMP@EnsureCode{33}{12}% !
\TMP@EnsureCode{34}{12}% "
\TMP@EnsureCode{36}{3}% $
\TMP@EnsureCode{38}{4}% &
\TMP@EnsureCode{39}{12}% '
\TMP@EnsureCode{40}{12}% (
\TMP@EnsureCode{41}{12}% )
\TMP@EnsureCode{42}{12}% *
\TMP@EnsureCode{43}{12}% +
\TMP@EnsureCode{44}{12}% ,
\TMP@EnsureCode{45}{12}% -
\TMP@EnsureCode{46}{12}% .
\TMP@EnsureCode{47}{12}% /
\TMP@EnsureCode{58}{12}% :
\TMP@EnsureCode{59}{12}% ;
\TMP@EnsureCode{60}{12}% <
\TMP@EnsureCode{62}{12}% >
\TMP@EnsureCode{63}{12}% ?
\TMP@EnsureCode{91}{12}% [
\TMP@EnsureCode{93}{12}% ]
\TMP@EnsureCode{94}{7}% ^ (superscript)
\TMP@EnsureCode{95}{8}% _ (subscript)
\TMP@EnsureCode{96}{12}% `
\TMP@EnsureCode{124}{12}% |
\edef\bidipagegrid@AtEnd{\bidipagegrid@AtEnd\noexpand\endinput}
\RequirePackage{tikz}
\RequirePackage{atbegshi}[2009/12/02]
\RequirePackage{kvoptions}[2009/07/17]
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname stockwidth\endcsname\relax
\def\bidipagegrid@width{\paperwidth}%
\def\bidipagegrid@height{\paperheight}%
\else
\def\bidipagegrid@width{\stockwidth}%
\def\bidipagegrid@height{\stockheight}%
\fi
\SetupKeyvalOptions{%
family=bidipagegrid,%
prefix=bidipagegrid@,%
}
\def\bidipagegrid@init{%
\let\bidipagegrid@origin@a\@empty
\let\bidipagegrid@origin@b\@empty
\let\bidipagegrid@init\relax
}
\let\bidipagegrid@@init\bidipagegrid@init
\def\bidipagegrid@origin@a{%
\ifnum\bidipagegrid@direction=\z@%
bl%
\else%
\ifnum\bidipagegrid@direction=\@ne%
br%
\fi%
\fi%
}
\def\bidipagegrid@origin@b{%
\ifnum\bidipagegrid@direction=\z@%
tr%
\else%
\ifnum\bidipagegrid@direction=\@ne%
tl%
\fi%
\fi%
}
\def\bidipagegrid@SetOrigin#1{%
\bidipagegrid@init
\ifx\bidipagegrid@origin@a\@empty
\def\bidipagegrid@origin@a{#1}%
\else
\ifx\bidipagegrid@origin@b\@empty
\else
\let\bidipagegrid@origin@a\bidipagegrid@origin@b
\fi
\def\bidipagegrid@origin@b{#1}%
\fi
}
\def\bidipagegrid@temp#1{%
\DeclareVoidOption{#1}{\bidipagegrid@SetOrigin{#1}}%
\@namedef{bidipagegrid@N@#1}{#1}%
}
\bidipagegrid@temp{bl}
\bidipagegrid@temp{br}
\bidipagegrid@temp{tl}
\bidipagegrid@temp{tr}
\def\bidipagegrid@temp#1#2{%
\DeclareVoidOption{#2}{\bidipagegrid@SetOrigin{#1}}%
}%
\bidipagegrid@temp{bl}{lb}
\bidipagegrid@temp{br}{rb}
\bidipagegrid@temp{tl}{lt}
\bidipagegrid@temp{tr}{rt}
\bidipagegrid@temp{bl}{bottom-left}
\bidipagegrid@temp{br}{bottom-right}
\bidipagegrid@temp{tl}{top-left}
\bidipagegrid@temp{tr}{top-right}
\bidipagegrid@temp{bl}{left-bottom}
\bidipagegrid@temp{br}{right-bottom}
\bidipagegrid@temp{tl}{left-top}
\bidipagegrid@temp{tr}{right-top}
\DeclareBoolOption[true]{enable}
\DeclareComplementaryOption{disable}{enable}
\DeclareBoolOption{foreground}
\newlength{\bidipagegrid@step}
\define@key{bidipagegrid}{step}{%
\setlength{\bidipagegrid@step}{#1}%
}
\DeclareStringOption[red]{firstcolor}
\DeclareStringOption[blue]{secondcolor}
\DeclareBoolOption[true]{arrows}
\newlength\bidipagegrid@arrowlength
\bidipagegrid@arrowlength=\z@
\define@key{bidipagegrid}{arrowlength}{%
\setlength{\bidipagegrid@arrowlength}{#1}%
}
\define@key{bidipagegrid}{double}[true]{%
\@ifundefined{bidipagegrid@double@#1}{%
\PackageWarning{bidipagegrid}{%
Unsupported value `#1' for option `double'.\MessageBreak
Known values are:\MessageBreak
`false', `first', `last', `true'.\MessageBreak
Now `false' is used%
}%
\chardef\bidipagegrid@double\z@
}{%
\chardef\bidipagegrid@double\csname bidipagegrid@double@#1\endcsname\relax
}%
}
\@namedef{bidipagegrid@double@false}{0}
\@namedef{bidipagegrid@double@first}{1}
\@namedef{bidipagegrid@double@last}{2}
\@namedef{bidipagegrid@double@true}{2}
\chardef\bidipagegrid@double\z@
\define@key{bidipagegrid}{direction}[RTL]{%
\@ifundefined{bidipagegrid@direction@#1}{%
\PackageWarning{bidipagegrid}{%
Unsupported value `#1' for option `direction'.\MessageBreak
Known values are:\MessageBreak
`LTR', `RTL'.\MessageBreak
Now `RTL' is used%
}%
\chardef\bidipagegrid@direction\@ne
}{%
\chardef\bidipagegrid@direction\csname bidipagegrid@direction@#1\endcsname\relax
}%
}
\@namedef{bidipagegrid@direction@LTR}{0}
\@namedef{bidipagegrid@direction@RTL}{1}
\chardef\bidipagegrid@direction\@ne
\newcommand*{\bidipagegridsetup}{%
\let\bidipagegrid@init\bidipagegrid@@init
\setkeys{bidipagegrid}%
}
\bidipagegridsetup{%
step=1mm%
}
\InputIfFileExists{bidipagegrid.cfg}{}%
\ProcessKeyvalOptions*\relax
\AtBeginDocument{%
\ifdim\bidipagegrid@arrowlength>\z@
\else
\bidipagegrid@arrowlength=10\bidipagegrid@step
\fi
}
\def\bidipagegridShipoutDoubleBegin{%
\begingroup
\let\newlabel\@gobbletwo
\let\zref@newlabel\@gobbletwo
\let\@writefile\@gobbletwo
\let\select@language\@gobble
}
\def\bidipagegridShipoutDoubleEnd{%
\endgroup
}
\def\bidipagegrid@WriteDouble#1#2{%
\immediate\write#1{%
\@backslashchar csname %
bidipagegridShipoutDouble#2%
\@backslashchar endcsname%
}%
}
\def\bidipagegrid@ShipoutDouble#1{%
\begingroup
\if@filesw
\bidipagegrid@WriteDouble\@mainaux{Begin}%
\ifx\@auxout\@partaux
\bidipagegrid@WriteDouble\@partaux{Begin}%
\def\bidipagegrid@temp{%
\bidipagegrid@WriteDouble\@mainaux{End}%
\bidipagegrid@WriteDouble\@partaux{End}%
}%
\else
\def\bidipagegrid@temp{%
\bidipagegrid@WriteDouble\@mainaux{End}%
}%
\fi
\else
\def\bidipagegrid@temp{}%
\fi
\let\protect\noexpand
\AtBeginShipoutOriginalShipout\copy#1\relax
\bidipagegrid@temp
\endgroup
}
\newcommand*{\bidipagegrid@x@coordinate}{%
\ifnum\bidipagegrid@direction=\z@%
0%
\else%
\ifnum\bidipagegrid@direction=\@ne%
\strip@pt\textwidth%
\fi%
\fi%
}
\newcommand*{\setLTRpagegrid}{\chardef\bidipagegrid@direction\z@}
\newcommand*{\setRTLpagegrid}{\chardef\bidipagegrid@direction\@ne}
\AtBeginShipout{%
\ifdim\bidipagegrid@step>\z@
\else
\bidipagegrid@enablefalse
\fi
\ifbidipagegrid@enable
\ifnum\bidipagegrid@double=\@ne
\bidipagegrid@ShipoutDouble\AtBeginShipoutBox
\else
\ifnum\bidipagegrid@double=\tw@
\@ifundefined{bidipagegrid@DoubleBox}{%
\newbox\bidipagegrid@DoubleBox
}{}%
\setbox\bidipagegrid@DoubleBox=\copy\AtBeginShipoutBox
\fi
\fi
\ifbidipagegrid@foreground
\expandafter\AtBeginShipoutUpperLeftForeground
\else
\expandafter\AtBeginShipoutUpperLeft
\fi
{%
\put(\bidipagegrid@x@coordinate,0){%
\makebox(0,0)[lt]{%
\begin{tikzpicture}[%
bl/.style={},%
br/.style={xshift=\bidipagegrid@width,xscale=-1},%
tl/.style={yshift=\bidipagegrid@height,yscale=-1},%
tr/.style={xshift=\bidipagegrid@width,%
yshift=\bidipagegrid@height,scale=-1}%
]%
\useasboundingbox
(0mm,\bidipagegrid@height) rectangle (0mm,\bidipagegrid@height);%
\draw[%
\bidipagegrid@origin@a,%
step=\bidipagegrid@step,%
style=help lines,%
ultra thin%
] (0mm,0mm) grid (\bidipagegrid@width,\bidipagegrid@height);%
\ifx\bidipagegrid@origin@b\@empty
\else
\draw[%
\bidipagegrid@origin@b,%
step=10\bidipagegrid@step,%
{\bidipagegrid@secondcolor},%
very thin%
] (0mm,0mm) grid (\bidipagegrid@width,\bidipagegrid@height);%
\fi
\draw[%
\bidipagegrid@origin@a,%
step=10\bidipagegrid@step,%
{\bidipagegrid@firstcolor},%
very thin%
] (0mm,0mm) grid (\bidipagegrid@width,\bidipagegrid@height);%
\ifx\bidipagegrid@origin@b\@empty
\else
\draw[%
\bidipagegrid@origin@b,%
step=50\bidipagegrid@step,%
{\bidipagegrid@secondcolor},%
thick%
] (0mm,0mm) grid (\bidipagegrid@width,\bidipagegrid@height);%
\fi
\draw[%
\bidipagegrid@origin@a,%
step=50\bidipagegrid@step,%
{\bidipagegrid@firstcolor},%
thick%
] (0mm,0mm) grid (\bidipagegrid@width,\bidipagegrid@height);%
\ifbidipagegrid@arrows
\ifx\bidipagegrid@origin@b\@empty
\else
\draw[%
\bidipagegrid@origin@b,%
{\bidipagegrid@secondcolor},%
stroke,%
line width=1pt,%
line cap=round%
] (0mm,0mm) %
-- (\bidipagegrid@arrowlength,\bidipagegrid@arrowlength) %
(\bidipagegrid@arrowlength,.5\bidipagegrid@arrowlength) %
-- (\bidipagegrid@arrowlength,\bidipagegrid@arrowlength) %
-- (.5\bidipagegrid@arrowlength,\bidipagegrid@arrowlength);%
\fi
\draw[%
\bidipagegrid@origin@a,%
{\bidipagegrid@firstcolor},%
stroke,%
line width=1pt,%
line cap=round%
] (0mm,0mm) %
-- (\bidipagegrid@arrowlength,\bidipagegrid@arrowlength) %
(\bidipagegrid@arrowlength,.5\bidipagegrid@arrowlength) %
-- (\bidipagegrid@arrowlength,\bidipagegrid@arrowlength) %
-- (.5\bidipagegrid@arrowlength,\bidipagegrid@arrowlength);%
\fi
\end{tikzpicture}%
}%
}%
}%
\ifnum\bidipagegrid@double=\tw@
\bidipagegrid@ShipoutDouble\bidipagegrid@DoubleBox
\fi
\fi
}
\bidipagegrid@AtEnd%
\endinput
%%
%% End of file `bidipagegrid.sty'.