%% %% 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 %% %% 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'.