
% Rolf Niepraschk -- Rolf.Niepraschk@gmx.de

% showframe.sty
% 
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% 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.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
% 
% This work has the LPPL maintenance status "author-maintained".

% Draws visible frames for the text and margin area, and lines
% for the head and foot to check layout in detail. Using the package
% option "noframe" you can draw the frames later only for a single 
% page with \AddToShipoutPicture*{\ShowFramePicture}. Another useful 
% options maybe eso-pic's "colorgrid", "grid" and "texcoord".
%
% \ShowFrameColor and \ShowFrameLinethickness can be used to change
% the frames.

\ProvidesPackage{showframe}[2020/10/14 v0.1j showframe (new impl., RN)]

\newif\ifSF@frame\SF@frametrue
 
\DeclareOption{noframe}{\SF@framefalse}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eso-pic}}
\ProcessOptions\relax

\RequirePackage{eso-pic}[2002/10/30]

\newcommand*\ShowFrameColor{\normalcolor}
\newcommand*\ShowFrameLinethickness{.8pt}
\newdimen\SF@tempdima

\newcommand\ShowFramePicture{%
  \begingroup
    \ShowFrameColor\linethickness{\ShowFrameLinethickness}%
    \AtPageLowerLeft{%
      \framebox(\paperwidth,\paperheight){}}%
    \AtTextLowerLeft{%
      \framebox(\textwidth,\textheight){}}%
    \AtTextUpperLeft{%
      \put(0,\headsep){%
        \framebox(\textwidth,\headheight){}}}%
    \AtTextLowerLeft{%
      \put(0,-\footskip){%
        \line(1,0){\textwidth}}}%
    \AtTextLowerLeft{%
      \SF@tempdima=\textwidth\advance\SF@tempdima\marginparsep%
      \if@twoside
        \ifodd\c@page\else
          \if@mparswitch
            \SF@tempdima=-\marginparsep\advance\SF@tempdima-\marginparwidth
          \fi
        \fi
      \fi
      \put(\SF@tempdima,0)%
        {\framebox(\marginparwidth,\textheight){}}%
    }%
  \endgroup
}

\ifSF@frame\AddToShipoutPictureFG{\ShowFramePicture}\fi

\endinput
