diff options
Diffstat (limited to 'macros/xetex/latex/bidipagegrid/bidipagegrid.sty')
-rw-r--r-- | macros/xetex/latex/bidipagegrid/bidipagegrid.sty | 444 |
1 files changed, 444 insertions, 0 deletions
diff --git a/macros/xetex/latex/bidipagegrid/bidipagegrid.sty b/macros/xetex/latex/bidipagegrid/bidipagegrid.sty new file mode 100644 index 0000000000..4965243a9d --- /dev/null +++ b/macros/xetex/latex/bidipagegrid/bidipagegrid.sty @@ -0,0 +1,444 @@ +%% +%% 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'. |