%%
%% This is file `tikz-page.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% tikz-page.dtx (with options: `tikz-page')
%% This is a generated file.
%%
%% Copyright © 2016 by Sébastien Gross <seb•ɑƬ•chezwam•ɖɵʈ•org>
%%
%% This program is free software. It comes without any warranty, to the extent
%% permitted by applicable law. You can redistribute it and/or modify it under
%% the terms of the Do What The Fuck You Want To Public License, Version 2, as
%% published by Sam Hocevar. See
http://sam.zoy.org/wtfpl/COPYING for more
%% details.
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
%% or (at your option) any later version. The latest version of this
%% license is in:
%%
%%
http://www.latex-project.org/lppl.txt
%%
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2006/05/20 or later.
%%
%% DeclareTCBListing{macrocode} leave a blank line after code.
\def\pkgfileversion{1.0}
\def\pkgfiledate{2016/08/22}
%% Reset the FancyVerbLine counter to have the correct lines number in front
%% of implementation.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tikz-page}[\pkgfiledate\space (v\pkgfileversion)]
\newif\if@tp@use@textpos\@tp@use@textposfalse
\DeclareOption{textpos}{\@tp@use@textpostrue}
\ProcessOptions
\if@tp@use@textpos
\RequirePackage[absolute]{textpos}
\fi
\RequirePackage{fancyhdr}
\RequirePackage{tikz}
\usetikzlibrary{plotmarks,calc,shapes,positioning,decorations.text}
\RequirePackage{graphicx}
\RequirePackage{calc}
\makeatletter
\newlength{\@tp@left@margin}
\newlength{\@tp@right@margin}
\newlength{\@tp@top@margin}
\newlength{\@tp@bottom@margin}
\newcommand\@tp@create@length[2]{%
\expandafter\newskip\csname tp@#1@#2\endcsname%
}%
\foreach\@@tp@element in {page,body,marginpar,header,footer,top,right,bottom,left}{%
\foreach\@@tp@len in {xmin,xmax,xmid,ymin,ymax,ymid}{%
\@tp@create@length{\@@tp@element}{\@@tp@len}%
}}%
\newcommand{\tpflip}[2]{\ifodd\thepage#1\else#2\fi}
\def\tp@compute@margins{%
\setlength{\tp@page@xmin}{0pt}%
\setlength{\tp@page@ymin}{0pt}%
\setlength{\tp@page@xmax}{\paperwidth}%
\setlength{\tp@page@ymax}{\paperheight}%
\setlength{\tp@page@xmid}{\dimexpr(\tp@page@xmin+\tp@page@xmax)/2\relax}%
\setlength{\tp@page@ymid}{\dimexpr(\tp@page@ymin+\tp@page@ymax)/2\relax}%
%
\setlength\@tp@left@margin{\dimexpr(1in+\hoffset+\tpflip{\oddsidemargin}{\evensidemargin})\relax}%
\setlength\@tp@right@margin{\dimexpr(\paperwidth-\@tp@left@margin-\textwidth)\relax}%
\setlength\@tp@top@margin{\dimexpr(1in+\voffset+\topmargin+\headheight+\headsep)\relax}%
\setlength\@tp@bottom@margin{\dimexpr(\paperheight-(\textheight+\@tp@top@margin))\relax}%
%% Body computation
\setlength\tp@body@xmin{\dimexpr\tp@page@xmin+\@tp@left@margin\relax}%
\setlength\tp@body@xmax{\dimexpr\tp@page@xmax-\@tp@right@margin\relax}%
\setlength\tp@body@xmid{\dimexpr((\tp@body@xmax+\tp@body@xmin)/2)\relax}%
\setlength\tp@body@ymax{\dimexpr(\tp@page@ymax-\@tp@top@margin)\relax}%
\setlength\tp@body@ymin{\dimexpr\tp@body@ymin+\@tp@bottom@margin\relax}%
\setlength\tp@body@ymid{\dimexpr(\tp@body@ymin+(\tp@body@ymax-\tp@body@ymin)/2)\relax}%
%
%% Margin computation
%
\tpflip{%
\setlength\tp@marginpar@xmin{\dimexpr\tp@body@xmax+\marginparsep\relax}
\setlength\tp@marginpar@xmax{\dimexpr\tp@marginpar@xmin+\marginparwidth\relax}%
}{%
\setlength\tp@marginpar@xmax{\dimexpr\tp@body@xmin-\marginparsep\relax}%
\setlength\tp@marginpar@xmin{\dimexpr\tp@marginpar@xmax-\marginparwidth\relax}%
}%
\setlength\tp@marginpar@xmid{\dimexpr((\tp@marginpar@xmax+\tp@marginpar@xmin)/2)\relax}%
\setlength\tp@marginpar@ymax{\tp@body@ymax}%
\setlength\tp@marginpar@ymin{\tp@body@ymin}%
\setlength\tp@marginpar@ymid{\tp@body@ymid}%
%
%% header
%
\setlength\tp@header@xmax{\tp@body@xmax}%
\setlength\tp@header@xmin{\tp@body@xmin}%
\setlength\tp@header@xmid{\tp@body@xmid}%
\setlength\tp@header@ymin{\dimexpr\tp@body@ymax+\headsep\relax}%
\setlength\tp@header@ymax{\dimexpr\tp@header@ymin+\headheight\relax}%
\setlength\tp@header@ymid{\dimexpr((\tp@header@ymax+\tp@header@ymin)/2)\relax}%
%
%% footer
%
\setlength\tp@footer@xmax{\tp@body@xmax}%
\setlength\tp@footer@xmin{\tp@body@xmin}%
\setlength\tp@footer@xmid{\tp@body@xmid}%
\setlength\tp@footer@ymin{\dimexpr\tp@body@ymin-\footskip\relax}%
\setlength\tp@footer@ymax{\tp@footer@ymin}%
\setlength\tp@footer@ymid{\dimexpr((\tp@footer@ymax+\tp@footer@ymin)/2)\relax}%
%%
%% blocks%
%%
\setlength\tp@top@xmin{\tp@page@xmin}%
\setlength\tp@top@xmax{\tp@page@xmax}%
\setlength\tp@top@xmid{\dimexpr((\tp@top@xmax+\tp@top@xmin)/2)\relax}%
\setlength\tp@top@ymin{\tp@body@ymax}%
\setlength\tp@top@ymax{\tp@page@ymax}%
\setlength\tp@top@ymid{\dimexpr((\tp@top@ymax+\tp@top@ymin)/2)\relax}%
%%
\setlength\tp@bottom@xmin{\tp@page@xmin}%
\setlength\tp@bottom@xmax{\tp@page@xmax}%
\setlength\tp@bottom@xmid{\dimexpr((\tp@bottom@xmax+\tp@bottom@xmin)/2)\relax}%
\setlength\tp@bottom@ymin{\tp@page@ymin}%
\setlength\tp@bottom@ymax{\tp@body@ymin}%
\setlength\tp@bottom@ymid{\dimexpr((\tp@bottom@ymax+\tp@bottom@ymin)/2)\relax}%
%%
\setlength\tp@left@xmin{\tp@page@xmin}%
\setlength\tp@left@xmax{\tp@body@xmin}%
\setlength\tp@left@xmid{\dimexpr((\tp@left@xmax+\tp@left@xmin)/2)\relax}%
\setlength\tp@left@ymin{\tp@body@ymin}%
\setlength\tp@left@ymax{\tp@body@ymax}%
\setlength\tp@left@ymid{\dimexpr((\tp@left@ymax+\tp@left@ymin)/2)\relax}%
%%
\setlength\tp@right@xmin{\tp@body@xmax}%
\setlength\tp@right@xmax{\tp@page@xmax}%
\setlength\tp@right@xmid{\dimexpr((\tp@right@xmax+\tp@right@xmin)/2)\relax}%
\setlength\tp@right@ymin{\tp@body@ymin}%
\setlength\tp@right@ymax{\tp@body@ymax}%
\setlength\tp@right@ymid{\dimexpr((\tp@right@ymax+\tp@right@ymin)/2)\relax}%
}%% \end{macrocode}
\def\@tp@genanchors#1{%
\anchor{#1 north}{\pgf@x=\csname tp@#1@xmid\endcsname \pgf@y=\csname tp@#1@ymax\endcsname}%
\anchor{#1 south}{\pgf@x=\csname tp@#1@xmid\endcsname \pgf@y=\csname tp@#1@ymin\endcsname}%
\anchor{#1 west}{\pgf@x=\csname tp@#1@xmin\endcsname \pgf@y=\csname tp@#1@ymid\endcsname}%
\anchor{#1 northwest}{\pgf@x=\csname tp@#1@xmin\endcsname \pgf@y=\csname tp@#1@ymax\endcsname}%
\anchor{#1 southwest}{\pgf@x=\csname tp@#1@xmin\endcsname \pgf@y=\csname tp@#1@ymin\endcsname}%
\anchor{#1 east}{\pgf@x=\csname tp@#1@xmax\endcsname \pgf@y=\csname tp@#1@ymid\endcsname}%
\anchor{#1 northeast}{\pgf@x=\csname tp@#1@xmax\endcsname \pgf@y=\csname tp@#1@ymax\endcsname}%
\anchor{#1 southeast}{\pgf@x=\csname tp@#1@xmax\endcsname \pgf@y=\csname tp@#1@ymin\endcsname}%
\anchor{#1 center}{\pgf@x=\csname tp@#1@xmid\endcsname \pgf@y=\csname tp@#1@ymid\endcsname}%
}%
\newcommand\tp@pgfdeclareanchoralias[3]{%
\expandafter\def\csname pgf@anchor@#1@#3\expandafter\endcsname
\expandafter{\csname pgf@anchor@#1@#2\endcsname}}
\pgfdeclareshape{page}{
\backgroundpath{
\pgfpathmoveto{\pgfpoint{\tp@page@xmin}{\tp@page@ymin}}
\pgfpathlineto{\pgfpoint{\tp@page@xmin}{\tp@page@ymax}}
\pgfpathlineto{\pgfpoint{\tp@page@xmax}{\tp@page@ymax}}
\pgfpathlineto{\pgfpoint{\tp@page@xmax}{\tp@page@xmin}}
\pgfpathclose
}
%% basic anchors
\anchor{north}{\pgf@x=\tp@page@xmid \pgf@y=\tp@page@ymax}%
\anchor{south}{\pgf@x=\tp@page@xmid \pgf@y=\tp@page@ymin}%
\anchor{west}{\pgf@x=\tp@page@xmin \pgf@y=\tp@page@ymid}%
\anchor{northwest}{\pgf@x=\tp@page@xmin \pgf@y=\tp@page@ymax}%
\anchor{southwest}{\pgf@x=\tp@page@xmin \pgf@y=\tp@page@ymin}%
\anchor{east}{\pgf@x=\tp@page@xmax \pgf@y=\tp@page@ymid}%
\anchor{northeast}{\pgf@x=\tp@page@xmax \pgf@y=\tp@page@ymax}%
\anchor{southeast}{\pgf@x=\tp@page@xmax \pgf@y=\tp@page@ymin}%
%\anchor{center}{\pgfpointorigin}
\anchor{center}{\pgf@x=\tp@page@xmid \pgf@y=\tp@page@ymid}
\anchor{origin}{\pgfpointorigin}%\pgf@x=0pt \pgf@y=0pt}
\@tp@genanchors{page}
%% Body anchors
\@tp@genanchors{body}
\@tp@genanchors{marginpar}
\@tp@genanchors{header}
\@tp@genanchors{footer}
\@tp@genanchors{top}
\@tp@genanchors{bottom}
\@tp@genanchors{left}
\@tp@genanchors{right}
}
\newdimen\tp@linewidth
\newdimen\tp@marksize
\setlength\tp@marksize{3pt}
\pgfdeclareplotmark{tpx}{
\setlength{\tp@linewidth}{\pgflinewidth}
\pgfsetlinewidth{0.1pt}
\pgfpathmoveto{\pgfpoint{-\tp@marksize}{-\tp@marksize}}
\pgfpathlineto{\pgfpoint{\tp@marksize}{\tp@marksize}}
\pgfpathmoveto{\pgfpoint{-\tp@marksize}{\tp@marksize}}
\pgfpathlineto{\pgfpoint{\tp@marksize}{-\tp@marksize}}
\pgfusepathqstroke
\setlength{\pgflinewidth}{\tp@linewidth}
}
\def\tikzpageputanchorsdefaults{
\foreach \anchor/\placement in {%
northwest/below right%
,north/below%
,northeast/below left%
,west/right%
,center/below%
,east/left%
,southwest/above right%
,south/above%
,southeast/above left%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsbody{
\foreach \anchor/\placement in {%
body northwest/below right%
,body north/below%
,body northeast/below left%
,body west/right%
,body center/below%
,body east/left%
,body southwest/above right%
,body south/above%
,body southeast/above left%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsmarginpar{
\foreach \anchor/\placement in {%
marginpar northwest/below left%
,marginpar north/left%
,marginpar northeast/above left%
,marginpar west/below%
,marginpar center/below%
,marginpar east/above%
,marginpar southwest/below right%
,marginpar south/right%
,marginpar southeast/above right%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement, rotate=90] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsheader{
\foreach \anchor/\placement in {%
header northwest/above right%
,header north/above%
,header northeast/above left%
,header west/right%
,header center/right%
,header east/left%
,header southwest/below right%
,header south/below%
,header southeast/below left%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsfooter{
\foreach \anchor/\placement in {%
footer northwest/above right%
,footer north/above%
,footer northeast/above left%
,footer west/right%
,footer center/right%
,footer east/left%
,footer southwest/below right%
,footer south/below%
,footer southeast/below left%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorstop{
\foreach \anchor/\placement in {%
top northwest/below right%
,top north/below%
,top northeast/below left%
,top west/right%
,top center/below%
,top east/left%
,top southwest/above right%
,top south/above%
,top southeast/above left%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsbottom{
\foreach \anchor/\placement in {%
bottom northwest/below right%
,bottom north/below%
,bottom northeast/below left%
,bottom west/right%
,bottom center/below%
,bottom east/left%
,bottom southwest/above right%
,bottom south/above%
,bottom southeast/above left%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsleft{
\foreach \anchor/\placement in {%
left northwest/below left%
,left north/left%
,left northeast/above left%
,left west/below%
,left center/below%
,left east/above%
,left southwest/below right%
,left south/right%
,left southeast/above right%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement, rotate=90] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchorsright{
\foreach \anchor/\placement in {%
right northwest/below left%
,right north/left%
,right northeast/above left%
,right west/below%
,right center/below%
,right east/above%
,right southwest/below right%
,right south/right%
,right southeast/above right%
} \draw[red,shift=(page.\anchor)] plot[mark=tpx%% my plot mark
] coordinates{(0,0)}
node[blue,\placement, rotate=90] {\scriptsize\texttt{(page.\anchor)}};
}
\def\tikzpageputanchors{
\tikzpageputanchorsdefaults
\tikzpageputanchorsbody
\tikzpageputanchorsmarginpar
\tikzpageputanchorsheader
\tikzpageputanchorsfooter
\tikzpageputanchorstop
\tikzpageputanchorsbottom
\tikzpageputanchorsleft
\tikzpageputanchorsright
}
\def\tpshowframes{
\draw[fill=blue!50, opacity=.3, draw] (page.bottom northwest) rectangle (page.bottom southeast);
\draw[fill=yellow!50, opacity=.3, draw] (page.top northwest) rectangle (page.top southeast);
\draw[fill=red!50, opacity=.3, draw] (page.left northwest) rectangle (page.left southeast);
\draw[fill=green!50, opacity=.3, draw] (page.right northwest) rectangle (page.right southeast);
}
\def\tpfancyhdrdefault{
\node [outer sep=0,inner sep=0, anchor=mid] at (page.header center) {};
\node [outer sep=0,inner sep=0, anchor=mid east] at (page.header east) {\tpflip{\sl\leftmark}{\sl\rightmark}};
\node [outer sep=0,inner sep=0, anchor=mid west] at (page.header west) {\tpflip{\sl\rightmark}{\sl\leftmark}};
\node [outer sep=0,inner sep=0, anchor=base east] at (page.footer east) {};
\node [,outer sep=0,inner sep=0,anchor=base] at (page.footer center) {\thepage};
\node [outer sep=0,inner sep=0, anchor=base west] at (page.footer west) {};
}
\newcommand{\tikzpage}{
\if@tp@use@textpos
\begin{textblock*}{\textwidth}[0,0](0pt,0pt)%
\fi
\tp@compute@margins%
\if@tp@use@textpos
\begin{tikzpicture}[]%
\clip (0,0) rectangle (\paperwidth, \paperheight);
\else
\begin{tikzpicture}[remember picture, overlay]%
\fi
\if@tp@use@textpos
\node[anchor=origin,shape=page] (page) {};
\else
\node[anchor=origin,shape=page] (page) at (current page.south west) {};
\fi
\@ifundefined{tikzpagelayout}{}{\tikzpagelayout}
\end{tikzpicture}%
\if@tp@use@textpos
\end{textblock*}%
\fi
}
\fancypagestyle{plain}{
\fancyhf{}
\chead{\tikzpage}
}
\fancypagestyle{empty}{
\fancyhf{}
\chead{\tikzpage}
}
\makeatother
\endinput
%%
%% End of file `tikz-page.sty'.