summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/fgruler
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/fgruler
Initial commit
Diffstat (limited to 'macros/latex/contrib/fgruler')
-rw-r--r--macros/latex/contrib/fgruler/README21
-rw-r--r--macros/latex/contrib/fgruler/fgruler.dtx1790
-rw-r--r--macros/latex/contrib/fgruler/fgruler.ins40
-rw-r--r--macros/latex/contrib/fgruler/fgruler.pdfbin0 -> 252700 bytes
4 files changed, 1851 insertions, 0 deletions
diff --git a/macros/latex/contrib/fgruler/README b/macros/latex/contrib/fgruler/README
new file mode 100644
index 0000000000..de38814440
--- /dev/null
+++ b/macros/latex/contrib/fgruler/README
@@ -0,0 +1,21 @@
+fgruler.sty package
+
+Copyright 2017- by Tibor Tomacs
+
+Package for drawing rulers on the foreground or in the text
+
+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 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Tibor Tomacs.
+
+Install:
+ - Run 'latex fgruler.ins' for the fgruler.sty file.
+ - Run twice 'pdflatex fgruler.dtx' to get the documentation (fgruler.pdf). \ No newline at end of file
diff --git a/macros/latex/contrib/fgruler/fgruler.dtx b/macros/latex/contrib/fgruler/fgruler.dtx
new file mode 100644
index 0000000000..18d16a6260
--- /dev/null
+++ b/macros/latex/contrib/fgruler/fgruler.dtx
@@ -0,0 +1,1790 @@
+% \iffalse meta-comment
+%
+% Copyright 2017- by Tibor Tomacs
+%
+% 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 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Tibor Tomacs.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{fgruler.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{fgruler}[2017/01/16 v1.0 Package for drawing rulers on the foreground or in the text]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\OnlyDescription
+\usepackage[a4paper,margin=25mm,marginparwidth=19mm,marginparsep=5mm,headsep=5mm,headheight=4mm,footskip=10mm]{geometry}
+\usepackage[pdfstartview=FitH,colorlinks,allcolors=black,bookmarksnumbered,hyperfootnotes=false]{hyperref}
+\usepackage[english]{babel}
+\usepackage{listings,fontawesome,fancyvrb}
+\usepackage[type=none,color=red!80!black]{fgruler}
+
+\flushbottom
+\VerbatimFootnotes
+
+\setlength{\labelsep}{0pt}
+
+\lstnewenvironment{examplelst}{\lstset{
+gobble=2,
+belowskip=\bigskipamount,
+basicstyle=\ttfamily,
+backgroundcolor=\color{black!10},
+columns=fullflexible,
+keepspaces}}{}
+
+\newcommand{\commandinline}{\lstinline[
+literate={<}{{$\langle$}}1{>}{{$\rangle$}}1,
+delim={[is][\color{green!50!black}\normalfont\itshape]{!}{!}},
+basicstyle=\color{blue!80!black}\ttfamily,
+columns=fullflexible,
+keepspaces]}
+
+\begin{document}
+ \DocInput{./fgruler.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{fgruler.sty}
+%
+% \title{The {\bfseries\sffamily fgruler} package\\{\large v1.0 (2017/01/16)}}
+% \author{Tibor T\'{o}m\'{a}cs\\{\normalsize\url{tomacs.tibor@uni-eszterhazy.hu}}}
+% \date{}
+% \maketitle
+%
+% \fgruler{upperleft}{0cm}{0cm}
+% \noindent
+% {\rulerparams{}{\scriptsize\sffamily\color{teal}}{blue}{}{}
+% {\fgrulerdefnum{}\fgrulercaptioncm{}\ruler{rightdown}{\textwidth}}\\[2pt]
+% \ruler{rightup}{\textwidth}}
+%
+% \section{Introduction}
+% The \texttt{fgruler} is an abbreviation for the \emph{foreground ruler}.
+% This package draws a horizontal and a vertical ruler on the foreground of every (or a given) page at absolute position.
+% In this way, you can check the page layout dimensions.
+%
+% \medskip\noindent
+% Besides, you can draw various rulers in the text, too.
+%
+% \medskip\noindent
+% The \texttt{fgruler} package requires the services of the following packages: \texttt{kvoptions}, \texttt{etoolbox}, \texttt{xcolor}, \texttt{graphicx}, \texttt{eso-pic}.
+%
+% \section{Loading package}
+% Load the package with
+% \begin{flushleft}
+% \commandinline|\usepackage[!<options>!]{fgruler}|
+% \end{flushleft}
+% or
+% \begin{flushleft}
+% \commandinline|\usepackage{fgruler}|\\
+% \commandinline|\setfgruler{!<options>!}|
+% \end{flushleft}
+% The \verb|\setfgruler| command is usable in the \texttt{document} environment, too.
+%
+% \section{Options}\label{sec:options}
+% By default, the \texttt{fgruler} package draws a square ruler on the foreground of every page. The following package options set the parameters of these rulers.
+% \begin{description}
+% \item\commandinline|unit=!<unit>!|\\
+% Ruler unit.
+% \begin{description}
+% \item\commandinline|!<unit>!| values:\\
+% \commandinline|cm| Metric ruler (centimeter). Default value.\\
+% \commandinline|in| English ruler (inch).
+% \end{description}
+%
+% \item\commandinline|type=!<type name>!|\\
+% Origin and directions.
+% \begin{description}
+% \item\commandinline|!<type name>!| values:\\
+% \commandinline|upperleft | Origin: upper left corner. Directions: down and right. Default value.\\
+% \commandinline|upperright| Origin: upper right corner. Directions: down and left.\\
+% \commandinline|lowerleft | Origin: lower left corner. Directions: up and right.\\
+% \commandinline|lowerright| Origin: lower right corner. Directions: up and left.\\
+% \commandinline|none | Not drawing ruler.
+% \end{description}
+%
+% \item\commandinline|hshift=!<length>!|\\
+% Horizontal shift.
+% The shift direction is right, if the \commandinline|!<type name>!| is \verb|upperleft| or \verb|lowerleft|, otherwise it is left.
+% Default: \verb|hshift=0cm|
+%
+% \item\commandinline|vshift=!<length>!|\\
+% Vertical shift.
+% The shift direction is down, if the \commandinline|!<type name>!| is \verb|upperleft| or \verb|upperright|, otherwise it is up.
+% Default: \verb|vshift=0cm|
+%
+% \item\commandinline|color=!<color name>!|\\
+% Ruler color (see \texttt{xcolor} package).
+% Default: \verb|color=black|
+%
+% \item\commandinline|numsep=!<length>!|\\
+% Separation between number and ruler.
+% Default: \verb|numsep=3pt|
+%
+% \item\commandinline|markthick=!<length>!|\\
+% Mark thickness.
+% Default: \verb|markthick=0.4pt|
+%
+% \item\commandinline|marklength=!<length>!|\\
+% Mark length at integer units:
+% {\fgrulernoborderline\fgrulercaptioncm{}\fgrulerthickcm{}{}{1pt}\fgrulercolorcm{}{}{red}\ruler{rightup}{3cm}}\quad
+% Default: \verb|marklength=2mm|\\
+% See the length of the other marks in Section \ref{sec:additional}.
+%
+% \item\commandinline|numfont=!<font type>!|\\
+% Number font type.
+% You can use this option only in \verb|\setfgruler| command.\\
+% Default: \verb|numfont=\scriptsize\sffamily|
+%
+% \item\commandinline|showframe| or \commandinline|showframe=true|\\
+% It draws visible frames for the text and margin area, and lines for the head and foot.
+% Their color and thickness are determined by the \texttt{color} and the \texttt{markthick} options.
+%
+% \item\commandinline|showframe=false|\\
+% It deactivates the \texttt{showframe} option.
+%
+% \item\commandinline|nonefgrulers|\\
+% It kills all of the rulers on the foreground, including also those, which are generated by \verb|\fgruler| (see Section \ref{sec:givenpage}).
+% But the rulers, which were drawn by \verb|\ruler| and \verb|\squareruler| (see Section \ref{sec:intext}), do not disappear.
+% Furthermore it deactivates the \texttt{showframe} option, too.
+% In this case the \texttt{fgruler} package does not load the \texttt{eso-pic} package.
+% This option works only in preamble.
+%
+% It is recommended to use in two cases:
+% \begin{itemize}
+% \item To draw rulers only in text, there is no need for the checking function.
+% \item To halt the checking function temporarily.
+% \end{itemize}
+%
+% The \texttt{type=none} is not identical with \texttt{nonefgrulers} option. The differences:
+% \begin{itemize}
+% \item \texttt{type=none} does not kill the \verb|\fgruler| command and the \texttt{showframe} option.
+% \item \texttt{type=none} is alterable in any point of the document.
+% \item \texttt{type=none} works in document environment, too.
+% \item The \texttt{fgruler} package loads the \texttt{eso-pic} package, if you use the \texttt{type=none} option without \texttt{nonefgrulers}.
+% \end{itemize}
+% \end{description}
+%
+% \section{Drawing square rulers on the foreground of a given page}\label{sec:givenpage}
+% \begin{description}
+% \item\commandinline|\fgruler[!<unit!>]{!<type name>!}{!<hshift>!}{!<vshift>!}|\\
+% It draws a square ruler on the foreground of that page, where this command is expanded.
+% You can use more \verb|\fgruler| commands in the same page.
+%
+% The package options (see Section \ref{sec:options}) also work on this command, except for \texttt{unit}, \texttt{type}, \texttt{hshift} and \texttt{vshift}, since these are the parameters of the \verb|\fgruler|.
+%
+% If you use \texttt{nonefgrulers} option in preamble, then this command is effectless.
+% \begin{description}
+% \item\commandinline|!<unit!>| options:\\
+% \commandinline|cm| Metric ruler (centimeter). Default option.\\
+% \commandinline|in| English ruler (inch).
+%
+% \item\commandinline|!<type name!>| parameters:\\
+% \commandinline|upperleft | Origin: upper left corner. Directions: down and right.\\
+% \commandinline|upperright| Origin: upper right corner. Directions: down and left.\\
+% \commandinline|lowerleft | Origin: lower left corner. Directions: up and right.\\
+% \commandinline|lowerright| Origin: lower right corner. Directions: up and left.
+%
+% \item\commandinline|!<hshift>!|
+% Horizontal shift.
+% The shift direction is right, if the \commandinline|!<type name>!| is \verb|upperleft| or \verb|lowerleft|, otherwise it is left.
+%
+% \item\commandinline|!<vshift>!|
+% Vertical shift.
+% The shift direction is down, if the \commandinline|!<type name>!| is \verb|upperleft| or \verb|upperright|, otherwise it is up.
+%
+% \item Example:
+% \verb|\fgruler[in]{upperright}{1in}{2.5in}|
+% \end{description}
+% \end{description}
+%
+% \section{Drawing rulers in the text}\label{sec:intext}
+% \begin{description}
+% \item\commandinline|\ruler[!<unit!>]{!<type name>!}{!<length>!}|\\
+% It draws a horizontal or a vertical ruler.
+% The bottom of the ruler is aligned to the baseline of the surrounding text.
+% The package options (see Section \ref{sec:options}) do not work on this command.
+% \begin{description}
+% \item\commandinline|!<unit!>| options:\\
+% \commandinline|cm| Metric ruler (centimeter). Default option.\\
+% \commandinline|in| English ruler (inch).
+%
+% \item\commandinline|!<type name!>| parameters:\\
+% \commandinline|downright | Direction: down. The numbers are on the right side.\\
+% \commandinline|downleft | Direction: down. The numbers are on the left side.\\
+% \commandinline|upright | Direction: up. The numbers are on the right side.\\
+% \commandinline|upleft | Direction: up. The numbers are on the left side.\\
+% \commandinline|rightdown | Direction: right. The numbers are on the down side.\\
+% \commandinline|rightup | Direction: right. The numbers are on the up side.\\
+% \commandinline|leftdown | Direction: left. The numbers are on the down side.\\
+% \commandinline|leftup | Direction: left. The numbers are on the up side.
+%
+% \item\commandinline|!<length>!|
+% Ruler length.
+%
+% \item Example:
+% \verb|\ruler{rightdown}{5cm}|
+% \ruler{rightdown}{5cm}
+% \end{description}
+%
+% \item\commandinline|\ruler*[!<unit!>]{!<type name>!}{!<length>!}|\\
+% It works like \verb|\ruler|, but the top of the ruler is aligned to the baseline of the surrounding text.
+%
+% Example:
+% \verb|\ruler*{rightdown}{5cm}|
+% \ruler*{rightdown}{5cm}
+%
+% \item\commandinline|\squareruler[!<unit!>]{!<type name>!}{!<width>!}{!<height>!}|\\
+% It draws a square ruler.
+% The bottom of the square ruler is aligned to the baseline of the surrounding text.
+% The package options (see Section \ref{sec:options}) do not work on this command.
+% \begin{description}
+% \item\commandinline|!<unit!>| options:\\
+% \commandinline|cm| Metric ruler (centimeter). Default option.\\
+% \commandinline|in| English ruler (inch).
+%
+% \item\commandinline|!<type name!>| parameters:\\
+% \commandinline|upperleft | Directions: down and right.\\
+% \commandinline|upperright| Directions: down and left.\\
+% \commandinline|lowerleft | Directions: up and right.\\
+% \commandinline|lowerright| Directions: up and left.
+%
+% \item\commandinline|!<width>!|
+% Square ruler width.
+%
+% \item\commandinline|!<height>!|
+% Square ruler height.
+%
+% \item Example:
+% \verb|\squareruler{upperleft}{5cm}{1cm}|
+% \squareruler{upperleft}{5cm}{1cm}
+% \end{description}
+%
+% \item\commandinline|\squareruler*[!<unit!>]{!<type name>!}{!<width>!}{!<height>!}|\\
+% It works like \verb|\squareruler|, but the top of the square ruler is aligned to the baseline of the surrounding text.
+%
+% Example:
+% \verb|\squareruler*{upperleft}{5cm}{1cm}|
+% \squareruler*{upperleft}{5cm}{1cm}
+%
+% \item\commandinline|\rulerparams{!<markthick>!}{!<numfont>!}{!<color>!}{!<marklength>!}{!<numsep>!}|\\
+% It sets the parameters of the rulers, which are drawn by \verb|\ruler| or \verb|\squareruler|.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<markthick>!| Mark thickness. Default: \verb|0.4pt|
+% \item\commandinline|!<numfont>!| Number font type. Default: \verb|\scriptsize\sffamily|
+% \item\commandinline|!<color>!| Ruler line color. Default: \verb|black|
+% \item\commandinline|!<marklength>!| Mark length at integer units. Default: \verb|2mm|
+% \item\commandinline|!<numsep>!| Separation between number and ruler. Default: \verb|3pt|
+% \item For example, \verb|\rulerparams{}{}{red}{}{}| changes the ruler color to red.
+% \end{description}
+%
+% \item\commandinline|\rulernorotatenum|\\
+% By default, the numbers of the vertical rulers (which were generated by \verb|\ruler| or \verb|\squareruler|) are rotated by 90$^\circ$.
+% It kills this action.
+% This command is usable only in \texttt{document} environment.
+%
+% Example: \verb|\ruler{upright}{1cm}| \ruler{upright}{1cm}\\
+% but
+% \verb|{\rulernorotatenum\ruler{upright}{1cm}}|
+% {\rulernorotatenum\ruler{upright}{1cm}}
+%
+% \item\commandinline|\rulerrotatenum|\\
+% After \verb|\rulernorotatenum|, it reactivates the number rotating.
+% This command is usable only in \texttt{document} environment.
+% \end{description}
+%
+% \section{Additional setting commands}\label{sec:additional}
+% The following commands can work on all of the rulers, which are drawn by \texttt{fgruler} package.
+% \begin{description}
+% \item\commandinline|\fgrulerstartnum{!<num>!}|\\
+% The \commandinline|!<num>!| is a nonnegative integer, which will be the starting number on the ruler.
+% Default: \verb|\fgrulerstartnum{0}|
+%
+% Example: \verb|{\fgrulerstartnum{5}\ruler{rightup}{3cm}}| {\fgrulerstartnum{5}\ruler{rightup}{3cm}}
+%
+% \item\commandinline|\fgrulernoborderline|\\
+% By default, there is a borderline on one side of the ruler.
+% It disappears by this command.
+%
+% Example: \verb|\ruler{rightup}{3cm}| \ruler{rightup}{3cm}\\
+% but
+% \verb|{\fgrulernoborderline\ruler{rightup}{3cm}}|
+% {\fgrulernoborderline\ruler{rightup}{3cm}}
+%
+% \item\commandinline|\fgrulerborderline|\\
+% After \verb|\fgrulernoborderline|, it reactivates the previous default effect.
+%
+% \item\commandinline|\fgrulercaptioncm{!<caption>!}|\\
+% Unit caption in metric ruler.
+% Default: \verb|\fgrulercaptioncm{cm}|
+%
+% Example: \verb|\ruler{rightup}{3cm}| \ruler{rightup}{3cm}\\
+% but
+% \verb|{\fgrulercaptioncm{}\ruler{rightup}{3cm}}|
+% {\fgrulercaptioncm{}\ruler{rightup}{3cm}}
+%
+% \item\commandinline|\fgrulercaptionin{!<caption>!}|\\
+% Unit caption in English ruler.
+% Default: \verb|\fgrulercaptionin{inch}|
+%
+% \item\commandinline|\fgrulerdefnum{!<definition>!}|\\
+% The ruler numbers are determined by the \commandinline|fgrulernum| counter.
+% Its current value is printed by the \commandinline|\thefgrulernum|.
+% Its default definition is \verb|\def\thefgrulernum{\arabic{fgrulernum}}|, which is equivalent to \verb|\fgrulerdefnum{\arabic{fgrulernum}}|.
+%
+% Example:\\
+% \verb|{\fgrulerdefnum{}\fgrulercaptioncm{}\ruler{rightdown}{2cm}}|
+% {\fgrulerdefnum{}\fgrulercaptioncm{}\ruler{rightdown}{2cm}}
+%
+% \item\commandinline|\fgrulerratiocm{!<ratio1>!}{!<ratio2>!}|\\
+% Mark length ratios in metric rulers.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<ratio1>!|
+% Mark length ratio at $k/10$\,cm, where $k$ is positive integer and not divisible by 5.\\
+% {\fgrulerthickcm{1pt}{}{}\fgrulercolorcm{red}{}{}\ruler{rightup}{3cm}}\\
+% For example, if this ratio is 0.5 and the mark length at integer unit is 2\,mm, then this mark length will be $0.5\cdot 2\,\mathrm{mm}=1\,\mathrm{mm}$.
+%
+% \item\commandinline|!<ratio2>!|
+% Mark length ratio at $k/2$\,cm, where $k$ is positive odd integer.\\
+% {\fgrulerthickcm{}{1pt}{}\fgrulercolorcm{}{red}{}\ruler{rightup}{3cm}}
+%
+% \item Default: \verb|\fgrulerratiocm{0.5}{0.75}|
+% \end{description}
+%
+% \item\commandinline|\fgrulerratioin{!<ratio1>!}{!<ratio2>!}{!<ratio3>!}{!<ratio4>!}|\\
+% Mark length ratios in English rulers.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<ratio1>!|
+% Mark length ratio at $k/16$\,inch, where $k$ is positive odd integer.\\
+% {\fgrulerthickin{1pt}{}{}{}{}\fgrulercolorin{red}{}{}{}{}\ruler[in]{rightup}{2in}}
+%
+% \item\commandinline|!<ratio2>!|
+% Mark length ratio at $k/8$\,inch, where $k$ is positive odd integer.\\
+% {\fgrulerthickin{}{1pt}{}{}{}\fgrulercolorin{}{red}{}{}{}\ruler[in]{rightup}{2in}}
+%
+% \item\commandinline|!<ratio3>!|
+% Mark length ratio at $k/4$\,inch, where $k$ is positive odd integer.\\
+% {\fgrulerthickin{}{}{1pt}{}{}\fgrulercolorin{}{}{red}{}{}\ruler[in]{rightup}{2in}}
+%
+% \item\commandinline|!<ratio4>!|
+% Mark length ratio at $k/2$\,inch, where $k$ is positive odd integer.\\
+% {\fgrulerthickin{}{}{}{1pt}{}\fgrulercolorin{}{}{}{red}{}\ruler[in]{rightup}{2in}}
+%
+% \item Default: \verb|\fgrulerratioin{0.25}{0.375}{0.625}{0.75}|
+% \end{description}
+%
+% \item\commandinline|\fgrulerthickcm{!<thick1>!}{!<thick2>!}{!<thick3>!}|\\
+% Mark thicknesses in metric rulers.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<thick1>!|
+% Mark thickness at $k/10$\,cm, where $k$ is positive integer and not divisible by 5.
+%
+% \item\commandinline|!<thick2>!|
+% Mark thickness at $k/2$\,cm, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<thick3>!|
+% Mark thickness at integer units.
+%
+% \item The default values are given by \commandinline|!<markthick>!| of \verb|\rulerparams|, respectively by \texttt{markthick} option.
+%
+% \item Example:\\
+% \verb|{\fgrulerthickcm{}{}{2pt}|\\
+% \verb|\rulerparams{}{}{}{5mm}{}|\\
+% \verb|\fgrulernoborderline|\\
+% \verb|\ruler{rightdown}{3cm}}|\\[2mm]
+% {\fgrulerthickcm{}{}{2pt}
+% \rulerparams{}{}{}{5mm}{}
+% \fgrulernoborderline
+% \ruler{rightdown}{3cm}}
+% \end{description}
+%
+% \item\commandinline|\fgrulerthickin{!<thick1>!}{!<thick2>!}{!<thick3>!}{!<thick4>!}{!<thick5>!}|\\
+% Mark thicknesses in English rulers.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<thick1>!|
+% Mark thickness at $k/16$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<thick2>!|
+% Mark thickness at $k/8$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<thick3>!|
+% Mark thickness at $k/4$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<thick4>!|
+% Mark thickness at $k/2$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<thick5>!|
+% Mark thickness at integer units.
+%
+% \item The default values are given by \commandinline|!<markthick>!| of \verb|\rulerparams|, respectively by \texttt{markthick} option.
+%
+% \item Example:\\
+% \verb|{\fgrulerthickin{}{}{}{}{2pt}|\\
+% \verb|\rulerparams{}{}{}{5mm}{}|\\
+% \verb|\fgrulernoborderline|\\
+% \verb|\ruler[in]{rightdown}{3in}}|\\[2mm]
+% {\fgrulerthickin{}{}{}{}{2pt}
+% \rulerparams{}{}{}{5mm}{}
+% \fgrulernoborderline
+% \ruler[in]{rightdown}{3in}}
+% \end{description}
+%
+% \item\commandinline|\fgrulercolorcm{!<color1>!}{!<color2>!}{!<color3>!}|\\
+% Mark colors in metric rulers.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<color1>!|
+% Mark color at $k/10$\,cm, where $k$ is positive integer and not divisible by 5.
+%
+% \item\commandinline|!<color2>!|
+% Mark color at $k/2$\,cm, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<color3>!|
+% Mark color at integer units.
+%
+% \item The default values are given by \commandinline|!<color>!| of \verb|\rulerparams|, respectively by \texttt{color} option.
+%
+% \item Example:\\
+% \verb|{\fgrulercolorcm{green}{blue}{red}|\\
+% \verb|\rulerparams{1pt}{}{}{5mm}{}|\\
+% \verb|\fgrulernoborderline|\\
+% \verb|\ruler{rightdown}{3cm}}|\\[2mm]
+% {\fgrulernoborderline
+% \fgrulercolorcm{green}{blue}{red}
+% \rulerparams{1pt}{}{}{5mm}{}
+% \ruler{rightdown}{3cm}}
+% \end{description}
+%
+% \item\commandinline|\fgrulercolorin{!<color1>!}{!<color2>!}{!<color3>!}{!<color4>!}{!<color5>!}|\\
+% Mark color in English rulers.
+% If an argument is empty, then that parameter will not be changed.
+% \begin{description}
+% \item\commandinline|!<color1>!|
+% Mark color at $k/16$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<color2>!|
+% Mark color at $k/8$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<color3>!|
+% Mark color at $k/4$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<color4>!|
+% Mark color at $k/2$\,inch, where $k$ is positive odd integer.
+%
+% \item\commandinline|!<color5>!|
+% Mark color at integer units.
+%
+% \item The default values are given by \commandinline|!<color>!| of \verb|\rulerparams|, respectively by \texttt{color} option.
+%
+% \item Example:\\
+% \verb|{\fgrulercolorin{yellow}{orange}{green}{blue}{red}|\\
+% \verb|\rulerparams{1pt}{}{}{5mm}{}|\\
+% \verb|\fgrulernoborderline|\\
+% \verb|\ruler[in]{rightdown}{3in}}|\\[2mm]
+% {\fgrulernoborderline
+% \fgrulercolorin{yellow}{orange}{green}{blue}{red}
+% \rulerparams{1pt}{}{}{5mm}{}
+% \ruler[in]{rightdown}{3in}}
+% \end{description}
+%
+% \item\commandinline|\fgrulerreset|\\
+% It sets all options and parameters to default values.
+% This command is usable only in \texttt{document} environment.
+% \end{description}
+%
+% \medskip\noindent\textcolor{red}{\faWarning}
+% All setting commands\footnote{Namely \verb|\setfgruler|, \verb|\rulerparams|, \verb|\rulernorotatenum|, \verb|\rulerrotatenum|, furthermore all commands in this section.} obey the normal scoping rules, i.e.\ if you use them inside a group, then the changing of the parameters is not valid outside the group.
+%
+% \newpage\fgrulerreset
+% \section{Examples}
+% \subsection{Deafult case}
+% The output of the following code is the ruler in this page. It is the default case.
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage{fgruler}
+% \begin{document}
+% % ...
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{The showframe option}
+% \setfgruler{color=red,showframe}
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[color=red,showframe]{fgruler}
+% \begin{document}
+% % ...
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Shifting}
+% \setfgruler{hshift=1cm,vshift=2cm}
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[hshift=1cm,vshift=2cm]{fgruler}
+% \begin{document}
+% % ...
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Shifting in case type=upperright}
+% \setfgruler{type=upperright,hshift=1cm,vshift=2cm}
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[type=upperright,hshift=1cm,vshift=2cm]{fgruler}
+% \begin{document}
+% % ...
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Shifting in case type=lowerleft}
+% \setfgruler{type=lowerleft,hshift=1cm,vshift=2cm}
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[type=lowerleft,hshift=1cm,vshift=2cm]{fgruler}
+% \begin{document}
+% % ...
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Shifting in case type=lowerright}
+% \setfgruler{type=lowerright,hshift=1cm,vshift=2cm}
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[type=lowerright,hshift=1cm,vshift=2cm]{fgruler}
+% \begin{document}
+% % ...
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Rulers on the foreground of a given page, and in text}
+% \setfgruler{color=blue}
+% \fgruler{upperleft}{1cm}{1.5cm}
+% \noindent
+% text
+% \rulerparams{}{\color{red}\tiny\ttfamily}{green}{}{}
+% {\fgrulernoborderline\ruler{rightdown}{3cm}}
+% text
+% \ruler*{rightdown}{3cm}
+% text
+% \rotatebox[origin=tl]{30}{\ruler*{rightdown}{3cm}}
+%
+% \bigskip
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[color=blue]{fgruler}
+% \begin{document}
+% \fgruler{upperleft}{1cm}{1.5cm}
+% \noindent
+% text
+% \rulerparams{}{\color{red}\tiny\ttfamily}{green}{}{}
+% {\fgrulernoborderline\ruler{rightdown}{3cm}}
+% text
+% \ruler*{rightdown}{3cm}
+% text
+% \rotatebox[origin=tl]{30}{\ruler*{rightdown}{3cm}}
+% \end{document}
+% \end{examplelst}
+% \emph{Remark.} The \verb|\rotatebox| command is defined in the \texttt{graphicx} package!
+%
+% \newpage\fgrulerreset
+% \subsection{Ruler types in text}
+% \setfgruler{type=none}
+% \noindent
+% \rulerparams{}{}{red}{}{1pt}
+% \ruler{rightdown}{3cm}
+% \hfill
+% \ruler{rightup}{3cm}
+% \hfill
+% \ruler{leftup}{3cm}
+% \hfill
+% \ruler{leftdown}{3cm}
+%
+% \bigskip\noindent
+% \rulerparams{}{}{green}{}{}
+% {\rulernorotatenum\ruler{upright}{3cm}}
+% \hfill
+% \ruler{downright}{3cm}
+% \hfill
+% \ruler{upleft}{3cm}
+% \hfill
+% \ruler{downleft}{3cm}
+%
+% \bigskip\noindent
+% \rulerparams{}{}{blue!50!black}{}{}
+% {\rulernorotatenum\fgrulercaptioncm{}\squareruler{upperleft}{2cm}{3cm}}
+% \hfill
+% \squareruler{lowerright}{2cm}{3cm}
+% \hfill
+% \squareruler{lowerleft}{2cm}{3cm}
+% \hfill
+% \squareruler{upperright}{2cm}{3cm}
+% \hfill
+% {\rulerparams{}{\footnotesize\bfseries\color{red}}{}{5mm}{-8pt}\squareruler[in]{lowerleft}{2in}{3cm}}
+%
+% \bigskip
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[nonefgrulers]{fgruler}
+% \begin{document}
+% \noindent
+% \rulerparams{}{}{red}{}{1pt}
+% \ruler{rightdown}{3cm}
+% \hfill
+% \ruler{rightup}{3cm}
+% \hfill
+% \ruler{leftup}{3cm}
+% \hfill
+% \ruler{leftdown}{3cm}
+%
+% \bigskip\noindent
+% \rulerparams{}{}{green}{}{}
+% {\rulernorotatenum\ruler{upright}{3cm}}
+% \hfill
+% \ruler{downright}{3cm}
+% \hfill
+% \ruler{upleft}{3cm}
+% \hfill
+% \ruler{downleft}{3cm}
+%
+% \bigskip\noindent
+% \rulerparams{}{}{blue!50!black}{}{}
+% {\rulernorotatenum\fgrulercaptioncm{}\squareruler{upperleft}{2cm}{3cm}}
+% \hfill
+% \squareruler{lowerright}{2cm}{3cm}
+% \hfill
+% \squareruler{lowerleft}{2cm}{3cm}
+% \hfill
+% \squareruler{upperright}{2cm}{3cm}
+% \hfill
+% {\rulerparams{}{\footnotesize\bfseries\color{red}}{}{5mm}{-8pt}
+% \squareruler[in]{lowerleft}{2in}{3cm}}
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Mark length and rotating}
+% \setfgruler{type=none}
+% \noindent
+% {\fgrulerdefnum{\rotatebox{45}{\arabic{fgrulernum}\,cm}}
+% \fgrulercaptioncm{}
+% \rulerparams{}{\tiny\color{red}}{blue}{8mm}{}
+% \fgrulercolorcm{}{}{black}
+% \rotatebox{-45}{\ruler{rightup}{10cm}}\\
+% \ruler{rightup}{5cm}}
+%
+% \bigskip
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[nonefgrulers]{fgruler}
+% \begin{document}
+% \noindent
+% {\fgrulerdefnum{\rotatebox{45}{\arabic{fgrulernum}\,cm}}
+% \fgrulercaptioncm{}
+% \rulerparams{}{\tiny\color{red}}{blue}{8mm}{}
+% \fgrulercolorcm{}{}{black}
+% \rotatebox{-45}{\ruler{rightup}{10cm}}\\
+% \ruler{rightup}{5cm}}
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Coordinate system}
+% \setfgruler{type=none}
+% \noindent
+% \rulernorotatenum
+% \fgrulercaptioncm{}
+% \fgrulercolorcm{}{}{red}
+% \rulerparams{}{\scriptsize\color{red}}{}{}{}
+% {\fgrulerdefnum{$-\arabic{fgrulernum}$}\squareruler*{upperright}{3cm}{3cm}}\ignorespaces
+% \squareruler{lowerleft}{13cm}{6cm}
+%
+% \bigskip
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[nonefgrulers]{fgruler}
+% \begin{document}
+% \noindent
+% \rulernorotatenum
+% \fgrulercaptioncm{}
+% \fgrulercolorcm{}{}{red}
+% \rulerparams{}{\scriptsize\color{red}}{}{}{}
+% {\fgrulerdefnum{$-\arabic{fgrulernum}$}\squareruler*{upperright}{3cm}{3cm}}%
+% \squareruler{lowerleft}{13cm}{6cm}
+% \end{document}
+% \end{examplelst}
+%
+% \newpage\fgrulerreset
+% \subsection{Tape measure}
+% \setfgruler{type=none}
+%
+% \newcommand{\tapemeasure}[1]{%
+% \parbox{#1}{%
+% {\fgrulerdefnum{}\fgrulercaptioncm{}\ruler{rightdown}{#1}}\\[2pt]
+% \ruler{rightup}{#1}}}
+% \noindent\ignorespaces
+% \tapemeasure{\textwidth}\\[2pt]
+% \rotatebox[origin=br]{-90}{\tapemeasure{3cm}}
+% \tapemeasure{10cm}
+%
+% \bigskip
+% \begin{examplelst}
+% \documentclass{article}
+% \usepackage[a4paper,margin=25mm]{geometry}
+% \usepackage[nonefgrulers]{fgruler}
+% \newcommand{\tapemeasure}[1]{%
+% \parbox{#1}{%
+% {\fgrulerdefnum{}\fgrulercaptioncm{}\ruler{rightdown}{#1}}\\[2pt]
+% \ruler{rightup}{#1}}}
+% \begin{document}
+% \noindent
+% \tapemeasure{\textwidth}\\[2pt]
+% \rotatebox[origin=br]{-90}{\tapemeasure{3cm}}
+% \tapemeasure{10cm}
+% \end{document}
+% \end{examplelst}
+%
+% \StopEventually
+%
+% \begin{macrocode}
+%%
+\@ifpackageloaded{kvoptions}{}{\RequirePackage{kvoptions}}
+\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}}
+
+\SetupKeyvalOptions{family=fgruler,prefix=fgruler@}
+\DeclareStringOption[.4pt]{markthick}
+\DeclareStringOption[\scriptsize\sffamily]{numfont}
+\DeclareStringOption[black]{color}
+\DeclareStringOption[2mm]{marklength}
+\DeclareStringOption[3pt]{numsep}
+\DeclareStringOption[0pt]{hshift}
+\DeclareStringOption[0pt]{vshift}
+\DeclareStringOption[upperleft]{type}
+\DeclareStringOption[cm]{unit}
+\DeclareBoolOption{nonefgrulers}
+\DeclareBoolOption{showframe}
+\ProcessKeyvalOptions{fgruler}
+
+\newlength{\fgruler@marklth}
+\newlength{\fgruler@sep}
+\newlength{\fgruler@width}
+\newlength{\fgruler@fg@width}
+\newlength{\fgruler@fg@height}
+
+\def\fgruler@set#1#2#3#4#5{%
+\def\fgruler@markthickness{\linethickness{#1}}%
+\def\fgruler@font{#2}%
+\def\fgruler@rulercolor{\color{#3}}%
+\setlength{\fgruler@marklth}{#4}%
+\setlength{\fgruler@sep}{#5}%
+\def\fgruler@font@{\normalfont\normalsize\fgruler@font}%
+\addtolength{\fgruler@sep}{\fgruler@marklth}%
+\ifx\thefgrulernum\@empty\setlength{\fgruler@width}{\fgruler@marklth}\else%
+\settoheight{\fgruler@width}{\fgruler@font@\thefgrulernum}%
+\addtolength{\fgruler@width}{\fgruler@sep}\fi}
+
+\def\rulerparams#1#2#3#4#5{%
+\ifx#1\@empty\else\def\fgruler@markthick@{#1}\fi%
+\ifx#2\@empty\else\def\fgruler@numfont@{#2}\fi%
+\ifx#3\@empty\else\def\fgruler@color@{#3}\fi%
+\ifx#4\@empty\else\def\fgruler@marklength@{#4}\fi%
+\ifx#5\@empty\else\def\fgruler@numsep@{#5}\fi%
+\ignorespaces}
+
+\rulerparams{.4pt}{\scriptsize\sffamily}{black}{2mm}{3pt}
+
+\def\fgruler@fgsetting{%
+\fgruler@set{\fgruler@markthick}{\fgruler@numfont}{\fgruler@color}{\fgruler@marklength}{\fgruler@numsep}%
+\rulernorotatenum}
+
+\def\fgruler@intextsetting{%
+\fgruler@set{\fgruler@markthick@}{\fgruler@numfont@}{\fgruler@color@}{\fgruler@marklength@}{\fgruler@numsep@}}
+
+\def\fgruler@activate@type{%
+\def\fgruler@check{cm}\ifx\fgruler@unit\fgruler@check\else%
+\def\fgruler@check{in}\ifx\fgruler@unit\fgruler@check\else%
+\@latexerr{Undefined unit: \fgruler@unit\space(Defined units: cm, in)}{}\fi\fi%
+\def\fgruler@check{upperleft}\ifx\fgruler@type\fgruler@check\else%
+\def\fgruler@check{upperright}\ifx\fgruler@type\fgruler@check\else%
+\def\fgruler@check{lowerleft}\ifx\fgruler@type\fgruler@check\else%
+\def\fgruler@check{lowerright}\ifx\fgruler@type\fgruler@check\else%
+\def\fgruler@check{none}\ifx\fgruler@type\fgruler@check\else%
+\@latexerr{Undefined type: \fgruler@type\space(Defined types: upperleft, upperright, lowerleft, lowerright, none)}{}\fi\fi\fi\fi\fi%
+\def\fgruler@output{\csname fgruler@\fgruler@unit @\fgruler@type @fg\endcsname}}
+
+\def\fgrulerratiocm#1#2{%
+\ifx#1\@empty\else\def\fgruler@cm@ratio@i{#1}\fi%
+\ifx#2\@empty\else\def\fgruler@cm@ratio@ii{#2}\fi%
+\ignorespaces}
+
+\fgrulerratiocm{.5}{.75}
+
+\def\fgrulerratioin#1#2#3#4{%
+\ifx#1\@empty\else\def\fgruler@in@ratio@i{#1}\fi%
+\ifx#2\@empty\else\def\fgruler@in@ratio@ii{#2}\fi%
+\ifx#3\@empty\else\def\fgruler@in@ratio@iii{#3}\fi%
+\ifx#4\@empty\else\def\fgruler@in@ratio@iv{#4}\fi%
+\ignorespaces}
+
+\fgrulerratioin{.25}{.375}{.625}{.75}
+
+\def\fgrulerthickcm#1#2#3{%
+\ifx#1\@empty\else\def\fgruler@cm@thick@i{\linethickness{#1}}\fi%
+\ifx#2\@empty\else\def\fgruler@cm@thick@ii{\linethickness{#2}}\fi%
+\ifx#3\@empty\else\def\fgruler@cm@thick@iii{\linethickness{#3}}\fi%
+\ignorespaces}
+
+\def\fgruler@cm@thick@i{}
+\def\fgruler@cm@thick@ii{}
+\def\fgruler@cm@thick@iii{}
+
+\def\fgrulerthickin#1#2#3#4#5{%
+\ifx#1\@empty\else\def\fgruler@in@thick@i{\linethickness{#1}}\fi%
+\ifx#2\@empty\else\def\fgruler@in@thick@ii{\linethickness{#2}}\fi%
+\ifx#3\@empty\else\def\fgruler@in@thick@iii{\linethickness{#3}}\fi%
+\ifx#4\@empty\else\def\fgruler@in@thick@iv{\linethickness{#4}}\fi%
+\ifx#5\@empty\else\def\fgruler@in@thick@v{\linethickness{#5}}\fi%
+\ignorespaces}
+
+\def\fgruler@in@thick@i{}
+\def\fgruler@in@thick@ii{}
+\def\fgruler@in@thick@iii{}
+\def\fgruler@in@thick@iv{}
+\def\fgruler@in@thick@v{}
+
+\def\fgrulercolorcm#1#2#3{%
+\ifx#1\@empty\else\def\fgruler@cm@color@i{\color{#1}}\fi%
+\ifx#2\@empty\else\def\fgruler@cm@color@ii{\color{#2}}\fi%
+\ifx#3\@empty\else\def\fgruler@cm@color@iii{\color{#3}}\fi%
+\ignorespaces}
+
+\def\fgruler@cm@color@i{}
+\def\fgruler@cm@color@ii{}
+\def\fgruler@cm@color@iii{}
+
+\def\fgrulercolorin#1#2#3#4#5{%
+\ifx#1\@empty\else\def\fgruler@in@color@i{\color{#1}}\fi%
+\ifx#2\@empty\else\def\fgruler@in@color@ii{\color{#2}}\fi%
+\ifx#3\@empty\else\def\fgruler@in@color@iii{\color{#3}}\fi%
+\ifx#4\@empty\else\def\fgruler@in@color@iv{\color{#4}}\fi%
+\ifx#5\@empty\else\def\fgruler@in@color@v{\color{#5}}\fi%
+\ignorespaces}
+
+\def\fgruler@in@color@i{}
+\def\fgruler@in@color@ii{}
+\def\fgruler@in@color@iii{}
+\def\fgruler@in@color@iv{}
+\def\fgruler@in@color@v{}
+
+\def\setfgruler#1{\setkeys{fgruler}{#1}\fgruler@activate@type\ignorespaces}
+
+\newcommand\fgruler@div[2]{%
+\@tempdima=#1\relax\@tempdimb=\unitlength\relax
+\@tempdimb=#2\@tempdimb\divide\@tempdima by \@tempdimb
+\@tempcnta\@tempdima\advance\@tempcnta\@ne}
+
+\def\fgruler@check@param#1#2{%
+\def\fgruler@param{#1}%
+\def\fgruler@check{cm}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{in}\ifx\fgruler@param\fgruler@check\else%
+\@latexerr{Invalid parameter: \fgruler@param\space(Defined parameters: cm, in)}{}%
+\fi\fi%
+\def\fgruler@param{#2}%
+\def\fgruler@check{rightdown}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{rightup}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{leftdown}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{leftup}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{downright}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{downleft}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{upright}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{upleft}\ifx\fgruler@param\fgruler@check\else%
+\@latexerr{Invalid parameter: \fgruler@param\space(Defined parameters: rightdown, rightup, leftdown, leftup, downright, downleft, upright, upleft)}{}%
+\fi\fi\fi\fi\fi\fi\fi\fi}
+
+\def\fgruler@check@param@#1#2{%
+\def\fgruler@param{#1}%
+\def\fgruler@check{cm}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{in}\ifx\fgruler@param\fgruler@check\else%
+\@latexerr{Invalid parameter: \fgruler@param\space(Defined parameters: cm, in)}{}%
+\fi\fi%
+\def\fgruler@param{#2}%
+\def\fgruler@check{upperleft}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{upperright}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{lowerleft}\ifx\fgruler@param\fgruler@check\else%
+\def\fgruler@check{lowerright}\ifx\fgruler@param\fgruler@check\else%
+\@latexerr{Invalid parameter: \fgruler@param\space(Defined parameters: upperleft, upperright, lowerleft, lowerright)}{}%
+\fi\fi\fi\fi}
+
+\newcommand{\fgruler@ruler}[3][cm]{\fgruler@check@param{#1}{#2}\fgruler@intextsetting\csname fgruler@#1@#2@\endcsname{#3}}
+\newcommand{\fgruler@ruler@}[3][cm]{\fgruler@check@param{#1}{#2}\fgruler@intextsetting\csname fgruler@#1@#2@@\endcsname{#3}}
+\def\ruler{\@ifstar{\fgruler@ruler@}{\fgruler@ruler}}
+
+\newcommand{\fgruler@squareruler}[4][cm]{\fgruler@check@param@{#1}{#2}\fgruler@intextsetting\csname fgruler@#1@#2@\endcsname{#3}{#4}}
+\newcommand{\fgruler@squareruler@}[4][cm]{\fgruler@check@param@{#1}{#2}\fgruler@intextsetting\csname fgruler@#1@#2@@\endcsname{#3}{#4}}
+\def\squareruler{\@ifstar{\fgruler@squareruler@}{\fgruler@squareruler}}
+
+\newcommand{\fgruler}[4][cm]{\fgruler@check@param@{#1}{#2}\g@addto@macro\fgruler@output@{\csname fgruler@#1@#2@fg@\endcsname{#3}{#4}}}
+
+\def\fgrulercaptioncm#1{\def\fgruler@caption@cm{#1}\ignorespaces}
+\def\fgruler@caption@cm{cm}
+\def\fgrulercaptionin#1{\def\fgruler@caption@in{#1}\ignorespaces}
+\def\fgruler@caption@in{inch}
+
+\newif\iffgruler@borderline
+\def\fgrulernoborderline{\fgruler@borderlinefalse\ignorespaces}
+\def\fgrulerborderline{\fgruler@borderlinetrue\ignorespaces}
+\fgruler@borderlinetrue
+
+\newcounter{fgrulernum}
+\newcounter{fgruler@check}
+
+\def\fgruler@ifnot@divisible@five#1{%
+\setcounter{fgruler@check}{\value{fgrulernum}}%
+\divide\value{fgruler@check}by5\relax%
+\multiply\value{fgruler@check}by5\relax%
+\ifnum\value{fgruler@check}=\value{fgrulernum}\else#1\fi\stepcounter{fgrulernum}}
+
+\def\fgruler@ifodd#1{\ifodd\value{fgrulernum}#1\fi\stepcounter{fgrulernum}}
+
+\def\fgruler@lentounit#1{\strip@pt\dimexpr#1*\p@/\unitlength}
+
+\def\fgrulerstartnum#1{\def\fgruler@startnum{#1}\ignorespaces}
+\def\fgruler@startnum{0}
+
+\def\fgrulerdefnum#1{\def\thefgrulernum{#1}\ignorespaces}
+
+\def\fgruler@rotatebox#1#2{#2}%
+
+\def\rulernorotatenum{%
+\ifx\@onlypreamble\@notprerr%
+\def\fgruler@rotatebox##1##2{##2}%
+\else\@latexerr{Don't use \protect\rulernorotatenum\space in preamble!}{}\fi%
+\ignorespaces}
+
+\def\rulerrotatenum{%
+\ifx\@onlypreamble\@notprerr%
+\def\fgruler@rotatebox##1##2{\rotatebox{##1}{##2}}%
+\else\@latexerr{Don't use \protect\rulerrotatenum\space in preamble!}{}\fi%
+\ignorespaces}
+
+\def\fgrulerreset{%
+\ifx\@onlypreamble\@notprerr%
+\def\fgruler@cm@ratio@i{.5}%
+\def\fgruler@cm@ratio@ii{.75}%
+\def\fgruler@in@ratio@i{.25}%
+\def\fgruler@in@ratio@ii{.375}%
+\def\fgruler@in@ratio@iii{.625}%
+\def\fgruler@in@ratio@iv{.75}%
+\def\fgruler@cm@thick@i{}%
+\def\fgruler@cm@thick@ii{}%
+\def\fgruler@cm@thick@iii{}%
+\def\fgruler@in@thick@i{}%
+\def\fgruler@in@thick@ii{}%
+\def\fgruler@in@thick@iii{}%
+\def\fgruler@in@thick@iv{}%
+\def\fgruler@in@thick@v{}%
+\def\fgruler@cm@color@i{}%
+\def\fgruler@cm@color@ii{}%
+\def\fgruler@cm@color@iii{}%
+\def\fgruler@in@color@i{}%
+\def\fgruler@in@color@ii{}%
+\def\fgruler@in@color@iii{}%
+\def\fgruler@in@color@iv{}%
+\def\fgruler@in@color@v{}%
+\def\fgruler@rotatebox##1##2{\rotatebox{##1}{##2}}%
+\def\fgruler@markthick@{.4pt}%
+\def\fgruler@numfont@{\scriptsize\sffamily}%
+\def\fgruler@color@{black}%
+\def\fgruler@marklength@{2mm}%
+\def\fgruler@numsep@{3pt}%
+\def\fgruler@type{upperleft}%
+\def\fgruler@unit{cm}%
+\def\fgruler@markthick{.4pt}%
+\def\fgruler@numfont{\scriptsize\sffamily}%
+\def\fgruler@color{black}%
+\def\fgruler@marklength{2mm}%
+\def\fgruler@hshift{0pt}%
+\def\fgruler@vshift{0pt}%
+\def\fgruler@numsep{3pt}%
+\def\thefgrulernum{\arabic{fgrulernum}}%
+\def\fgruler@caption@cm{cm}%
+\def\fgruler@caption@in{inch}%
+\def\fgruler@startnum{0}%
+\fgruler@borderlinetrue%
+\fgruler@showframefalse%
+\else\@latexerr{Don't use \protect\fgrulerreset\space in preamble!}{}\fi%
+\ignorespaces}
+
+\AtEndPreamble{
+
+\@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}}
+\@ifpackageloaded{graphicx}{}{\RequirePackage{graphicx}}
+
+\def\fgruler@rotatebox#1#2{\rotatebox{#1}{#2}}
+
+\iffgruler@nonefgrulers
+
+\renewcommand{\fgruler}[4][cm]{}
+\providecommand{\AtPageLowerLeft}[1]{#1}
+
+\else
+
+\@ifpackageloaded{eso-pic}{}{\RequirePackage{eso-pic}}
+
+\def\fgruler@frame{%
+ \begingroup
+ \fgruler@fgsetting
+ \fgruler@rulercolor%
+ \fgruler@markthickness%
+ \AtPageLowerLeft{%
+ \framebox(\fgruler@lentounit{\paperwidth},\fgruler@lentounit{\paperheight}){}}%
+ \AtTextLowerLeft{%
+ \framebox(\fgruler@lentounit{\textwidth},\fgruler@lentounit{\textheight}){}}%
+ \AtTextUpperLeft{%
+ \put(0,\fgruler@lentounit{\headsep}){%
+ \framebox(\fgruler@lentounit{\textwidth},\fgruler@lentounit{\headheight}){}}}%
+ \AtTextLowerLeft{%
+ \put(0,\fgruler@lentounit{-\footskip}){%
+ \line(1,0){\fgruler@lentounit{\textwidth}}}}%
+ \AtTextLowerLeft{%
+ \@tempdima=\textwidth\advance\@tempdima\marginparsep%
+ \if@twoside
+ \ifodd\c@page\else
+ \if@mparswitch
+ \@tempdima=-\marginparsep\advance\@tempdima-\marginparwidth
+ \fi
+ \fi
+ \fi
+ \put(\fgruler@lentounit{\@tempdima},0)%
+ {\framebox(\fgruler@lentounit{\marginparwidth},\fgruler@lentounit{\textheight}){}}%
+ }%
+ \endgroup
+}
+
+\let\fgruler@shipout\AtBeginShipoutUpperLeftForeground
+\def\fgruler@output@{}
+\ESO@isMEMOIR{%
+\def\AtBeginShipoutUpperLeftForeground#1{%
+ \fgruler@shipout{#1%
+ \put(\fgruler@lentounit{\@tempdima},\fgruler@lentounit{\@tempdimb}){%
+ \iffgruler@showframe\fgruler@frame\fi%
+ \fgruler@output%
+ \fgruler@output@%
+ \global\let\fgruler@output@\@empty%
+ }%
+ }%
+ }%
+}{%
+\def\AtBeginShipoutUpperLeftForeground#1{%
+ \fgruler@shipout{#1%
+ \put(0,\fgruler@lentounit{\ESO@yoffsetI}){%
+ \iffgruler@showframe\fgruler@frame\fi%
+ \fgruler@output%
+ \fgruler@output@%
+ \global\let\fgruler@output@\@empty%
+ }%
+ }%
+ }%
+}
+
+\fgruler@activate@type
+
+\fi
+}
+
+%% RIGHTDOWN CM
+\def\fgruler@cm@rightdown#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(1,0){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(0,-1){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(5,0){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(0,-1){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(10,0){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(0,-1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(10,-\fgruler@lentounit{\fgruler@sep})(10,0){\@tempdima}{\makebox(0,0)[t]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@cm@rightdown@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})(0,-\fgruler@lentounit{\fgruler@width})%
+\fgruler@cm@rightdown{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5cm\put(5,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@rightdown@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@cm@rightdown@{#1}}}
+
+%% RIGHTDOWN IN
+\def\fgruler@in@rightdown#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(1,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(2,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(4,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(8,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(16,0){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(0,-1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(16,-\fgruler@lentounit{\fgruler@sep})(16,0){\@tempdima}{\makebox(0,0)[t]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@in@rightdown@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})(0,-\fgruler@lentounit{\fgruler@width})%
+\fgruler@in@rightdown{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5in\put(8,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@rightdown@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@in@rightdown@{#1}}}
+
+%% RIGHTUP CM
+\def\fgruler@cm@rightup#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(1,0){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(0,1){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(5,0){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(0,1){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(10,0){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(0,1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(10,\fgruler@lentounit{\fgruler@sep})(10,0){\@tempdima}{\makebox(0,0)[b]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@cm@rightup@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})%
+\fgruler@cm@rightup{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5cm\put(5,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@rightup@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@cm@rightup@{#1}}}
+
+%% RIGHTUP IN
+\def\fgruler@in@rightup#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(1,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(2,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(4,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(8,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(16,0){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(0,1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(16,\fgruler@lentounit{\fgruler@sep})(16,0){\@tempdima}{\makebox(0,0)[b]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@in@rightup@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})%
+\fgruler@in@rightup{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5in\put(8,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@rightup@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@in@rightup@{#1}}}
+
+%% LEFTDOWN CM
+\def\fgruler@cm@leftdown#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-1,0){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(0,-1){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-5,0){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(0,-1){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(-10,0){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(0,-1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(-1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-10,-\fgruler@lentounit{\fgruler@sep})(-10,0){\@tempdima}{\makebox(0,0)[t]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@cm@leftdown@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})(-\fgruler@lentounit{#1},-\fgruler@lentounit{\fgruler@width})%
+\fgruler@cm@leftdown{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5cm\put(-5,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@leftdown@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@cm@leftdown@{#1}}}
+
+%% LEFTDOWN IN
+\def\fgruler@in@leftdown#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-1,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-2,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-4,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-8,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(0,-1){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(-16,0){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(0,-1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(-1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-16,-\fgruler@lentounit{\fgruler@sep})(-16,0){\@tempdima}{\makebox(0,0)[t]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@in@leftdown@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})(-\fgruler@lentounit{#1},-\fgruler@lentounit{\fgruler@width})%
+\fgruler@in@leftdown{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5in\put(-8,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@leftdown@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@in@leftdown@{#1}}}
+
+%% LEFTUP CM
+\def\fgruler@cm@leftup#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-1,0){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(0,1){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-5,0){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(0,1){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(-10,0){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(0,1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(-1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-10,\fgruler@lentounit{\fgruler@sep})(-10,0){\@tempdima}{\makebox(0,0)[b]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@cm@leftup@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})(-\fgruler@lentounit{#1},0)%
+\fgruler@cm@leftup{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5cm\put(-5,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@leftup@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@cm@leftup@{#1}}}
+
+%% LEFTUP IN
+\def\fgruler@in@leftup#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-1,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-2,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-4,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(-8,0){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(0,1){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(-16,0){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(0,1){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(-1,0){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-16,\fgruler@lentounit{\fgruler@sep})(-16,0){\@tempdima}{\makebox(0,0)[b]{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}
+
+\def\fgruler@in@leftup@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{\fgruler@width})(-\fgruler@lentounit{#1},0)%
+\fgruler@in@leftup{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(0,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\thefgrulernum}}%
+\ifdim#1>.5in\put(-8,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@leftup@@#1{\leavevmode\hbox{}\lower\fgruler@width\hbox{\fgruler@in@leftup@{#1}}}
+
+%% DOWNRIGHT CM
+\def\fgruler@cm@downright#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-1){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(1,0){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-5){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(1,0){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(0,-10){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,-1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(\fgruler@lentounit{\fgruler@sep},-10)(0,-10){\@tempdima}{\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@cm@downright@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})(0,-\fgruler@lentounit{#1})%
+\fgruler@cm@downright{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5cm\put(\fgruler@lentounit{\fgruler@sep},-5){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\fgruler@caption@cm}}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@downright@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@cm@downright@{#1}}}
+
+%% DOWNRIGHT IN
+\def\fgruler@in@downright#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-1){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-2){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-4){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-8){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(0,-16){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,-1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(\fgruler@lentounit{\fgruler@sep},-16)(0,-16){\@tempdima}{\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@in@downright@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})(0,-\fgruler@lentounit{#1})%
+\fgruler@in@downright{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5in\put(\fgruler@lentounit{\fgruler@sep},-8){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\fgruler@caption@in}}}\fi%
+\end{picture}}
+
+\def\fgruler@in@downright@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@in@downright@{#1}}}
+
+%% DOWNLEFT CM
+\def\fgruler@cm@downleft#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-1){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(-1,0){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-5){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(-1,0){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(0,-10){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(-1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,-1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-\fgruler@lentounit{\fgruler@sep},-10)(0,-10){\@tempdima}{\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@cm@downleft@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})(-\fgruler@lentounit{\fgruler@width},-\fgruler@lentounit{#1})%
+\fgruler@cm@downleft{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(-\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5cm\put(-\fgruler@lentounit{\fgruler@sep},-5){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\fgruler@caption@cm}}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@downleft@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@cm@downleft@{#1}}}
+
+%% DOWNLEFT IN
+\def\fgruler@in@downleft#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-1){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-2){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-4){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,-8){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(0,-16){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(-1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,-1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-\fgruler@lentounit{\fgruler@sep},-16)(0,-16){\@tempdima}{\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@in@downleft@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})(-\fgruler@lentounit{\fgruler@width},-\fgruler@lentounit{#1})%
+\fgruler@in@downleft{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(-\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5in\put(-\fgruler@lentounit{\fgruler@sep},-8){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\fgruler@caption@in}}}\fi%
+\end{picture}}
+
+\def\fgruler@in@downleft@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@in@downleft@{#1}}}
+
+%% UPRIGHT CM
+\def\fgruler@cm@upright#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,1){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(1,0){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,5){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(1,0){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(0,10){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(\fgruler@lentounit{\fgruler@sep},10)(0,10){\@tempdima}{\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@cm@upright@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})%
+\fgruler@cm@upright{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5cm\put(\fgruler@lentounit{\fgruler@sep},5){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\fgruler@caption@cm}}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@upright@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@cm@upright@{#1}}}
+
+%% UPRIGHT IN
+\def\fgruler@in@upright#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,1){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,2){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,4){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,8){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(1,0){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(0,16){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(\fgruler@lentounit{\fgruler@sep},16)(0,16){\@tempdima}{\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@in@upright@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})%
+\fgruler@in@upright{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5in\put(\fgruler@lentounit{\fgruler@sep},8){\makebox(0,0)[l]{\fgruler@rotatebox{90}{\fgruler@font@\fgruler@caption@in}}}\fi%
+\end{picture}}
+
+\def\fgruler@in@upright@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@in@upright@{#1}}}
+
+%% UPLEFT CM
+\def\fgruler@cm@upleft#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,1){\@tempcnta}{\fgruler@ifnot@divisible@five{\fgruler@cm@thick@i\fgruler@cm@color@i\line(-1,0){\fgruler@lentounit{\fgruler@cm@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{5}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,5){\@tempcnta}{\fgruler@ifodd{\fgruler@cm@thick@ii\fgruler@cm@color@ii\line(-1,0){\fgruler@lentounit{\fgruler@cm@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{10}%
+\multiput(0,0)(0,10){\@tempcnta}{\fgruler@cm@thick@iii\fgruler@cm@color@iii\line(-1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-\fgruler@lentounit{\fgruler@sep},10)(0,10){\@tempdima}{\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@cm@upleft@#1{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})(-\fgruler@lentounit{\fgruler@width},0)%
+\fgruler@cm@upleft{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(-\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5cm\put(-\fgruler@lentounit{\fgruler@sep},5){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\fgruler@caption@cm}}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@upleft@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@cm@upleft@{#1}}}
+
+%% UPLEFT IN
+\def\fgruler@in@upleft#1{%
+\fgruler@rulercolor%
+\fgruler@markthickness%
+\fgruler@div{#1}{1}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,1){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@i\fgruler@in@color@i\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@i\fgruler@marklth}}}}%
+\fgruler@div{#1}{2}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,2){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@ii\fgruler@in@color@ii\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@ii\fgruler@marklth}}}}%
+\fgruler@div{#1}{4}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,4){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iii\fgruler@in@color@iii\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@iii\fgruler@marklth}}}}%
+\fgruler@div{#1}{8}%
+\setcounter{fgrulernum}{0}%
+\multiput(0,0)(0,8){\@tempcnta}{\fgruler@ifodd{\fgruler@in@thick@iv\fgruler@in@color@iv\line(-1,0){\fgruler@lentounit{\fgruler@in@ratio@iv\fgruler@marklth}}}}%
+\fgruler@div{#1}{16}%
+\multiput(0,0)(0,16){\@tempcnta}{\fgruler@in@thick@v\fgruler@in@color@v\line(-1,0){\fgruler@lentounit{\fgruler@marklth}}}%
+\iffgruler@borderline\put(0,0){\line(0,1){\fgruler@lentounit{#1}}}\fi%
+\setcounter{fgrulernum}{\fgruler@startnum}\stepcounter{fgrulernum}%
+\multiput(-\fgruler@lentounit{\fgruler@sep},16)(0,16){\@tempdima}{\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum\stepcounter{fgrulernum}}}}}
+
+\def\fgruler@in@upleft@#1{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{\fgruler@width},\fgruler@lentounit{#1})(-\fgruler@lentounit{\fgruler@width},0)%
+\fgruler@in@upleft{#1}%
+\setcounter{fgrulernum}{\fgruler@startnum}%
+\put(-\fgruler@lentounit{\fgruler@sep},0){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\thefgrulernum}}}%
+\ifdim#1>.5in\put(-\fgruler@lentounit{\fgruler@sep},8){\makebox(0,0)[r]{\fgruler@rotatebox{-90}{\fgruler@font@\fgruler@caption@in}}}\fi%
+\end{picture}}
+
+\def\fgruler@in@upleft@@#1{\leavevmode\hbox{}\lower#1\hbox{\fgruler@in@upleft@{#1}}}
+
+%% UPPERLEFT CM
+\def\fgruler@cm@upperleft@#1#2{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})(0,-\fgruler@lentounit{#2})%
+\fgruler@cm@rightdown{#1}%
+\fgruler@cm@downright{#2}%
+\ifdim#1>.5cm\put(5,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@upperleft@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@cm@upperleft@{#1}{#2}}}
+
+\def\fgruler@cm@upperleft@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\put(\fgruler@lentounit{#1},0){%
+\fgruler@cm@upperleft@{\fgruler@fg@width}{\fgruler@fg@height}}}%
+\endgroup}
+
+\def\fgruler@cm@upperleft@fg{\fgruler@cm@upperleft@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% UPPERLEFT IN
+\def\fgruler@in@upperleft@#1#2{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})(0,-\fgruler@lentounit{#2})%
+\fgruler@in@rightdown{#1}%
+\fgruler@in@downright{#2}%
+\ifdim#1>.5in\put(8,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@upperleft@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@in@upperleft@{#1}{#2}}}
+
+\def\fgruler@in@upperleft@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\put(\fgruler@lentounit{#1},0){%
+\fgruler@in@upperleft@{\fgruler@fg@width}{\fgruler@fg@height}}}%
+\endgroup}
+
+\def\fgruler@in@upperleft@fg{\fgruler@in@upperleft@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% UPPERRIGHT CM
+\def\fgruler@cm@upperright@#1#2{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})(-\fgruler@lentounit{#1},-\fgruler@lentounit{#2})%
+\fgruler@cm@leftdown{#1}%
+\fgruler@cm@downleft{#2}%
+\ifdim#1>.5cm\put(-5,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@upperright@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@cm@upperright@{#1}{#2}}}
+
+\def\fgruler@cm@upperright@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\fgruler@cm@upperright@{\fgruler@fg@width}{\fgruler@fg@height}}%
+\endgroup}
+
+\def\fgruler@cm@upperright@fg{\fgruler@cm@upperright@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% UPPERRIGHT IN
+\def\fgruler@in@upperright@#1#2{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})(-\fgruler@lentounit{#1},-\fgruler@lentounit{#2})%
+\fgruler@in@leftdown{#1}%
+\fgruler@in@downleft{#2}%
+\ifdim#1>.5in\put(-8,-\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[t]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@upperright@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@in@upperright@{#1}{#2}}}
+
+\def\fgruler@in@upperright@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\fgruler@in@upperright@{\fgruler@fg@width}{\fgruler@fg@height}}%
+\endgroup}
+
+\def\fgruler@in@upperright@fg{\fgruler@in@upperright@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% LOWERLEFT CM
+\def\fgruler@cm@lowerleft@#1#2{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})%
+\fgruler@cm@rightup{#1}%
+\fgruler@cm@upright{#2}%
+\ifdim#1>.5cm\put(5,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@lowerleft@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@cm@lowerleft@{#1}{#2}}}
+
+\def\fgruler@cm@lowerleft@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\put(\fgruler@lentounit{#1},\fgruler@lentounit{#2}){%
+\fgruler@cm@lowerleft@{\fgruler@fg@width}{\fgruler@fg@height}}}%
+\endgroup}
+
+\def\fgruler@cm@lowerleft@fg{\fgruler@cm@lowerleft@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% LOWERLEFT IN
+\def\fgruler@in@lowerleft@#1#2{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})%
+\fgruler@in@rightup{#1}%
+\fgruler@in@upright{#2}%
+\ifdim#1>.5in\put(8,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@lowerleft@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@in@lowerleft@{#1}{#2}}}
+
+\def\fgruler@in@lowerleft@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\put(\fgruler@lentounit{#1},\fgruler@lentounit{#2}){%
+\fgruler@in@lowerleft@{\fgruler@fg@width}{\fgruler@fg@height}}}%
+\endgroup}
+
+\def\fgruler@in@lowerleft@fg{\fgruler@in@lowerleft@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% LOWERRIGHT CM
+\def\fgruler@cm@lowerright@#1#2{%
+\setlength{\unitlength}{1mm}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})(-\fgruler@lentounit{#1},0)%
+\fgruler@cm@leftup{#1}%
+\fgruler@cm@upleft{#2}%
+\ifdim#1>.5cm\put(-5,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@cm}}\fi%
+\end{picture}}
+
+\def\fgruler@cm@lowerright@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@cm@lowerright@{#1}{#2}}}
+
+\def\fgruler@cm@lowerright@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\put(0,\fgruler@lentounit{#2}){%
+\fgruler@cm@lowerright@{\fgruler@fg@width}{\fgruler@fg@height}}}%
+\endgroup}
+
+\def\fgruler@cm@lowerright@fg{\fgruler@cm@lowerright@fg@{\fgruler@hshift}{\fgruler@vshift}}
+
+%% LOWERRIGHT IN
+\def\fgruler@in@lowerright@#1#2{%
+\setlength{\unitlength}{.0625in}%
+\begin{picture}(\fgruler@lentounit{#1},\fgruler@lentounit{#2})(-\fgruler@lentounit{#1},0)%
+\fgruler@in@leftup{#1}%
+\fgruler@in@upleft{#2}%
+\ifdim#1>.5in\put(-8,\fgruler@lentounit{\fgruler@sep}){\makebox(0,0)[b]{\fgruler@font@\fgruler@caption@in}}\fi%
+\end{picture}}
+
+\def\fgruler@in@lowerright@@#1#2{\leavevmode\hbox{}\lower#2\hbox{\fgruler@in@lowerright@{#1}{#2}}}
+
+\def\fgruler@in@lowerright@fg@#1#2{%
+\begingroup%
+\setlength{\fgruler@fg@width}{\paperwidth}%
+\addtolength{\fgruler@fg@width}{-#1}%
+\setlength{\fgruler@fg@height}{\paperheight}%
+\addtolength{\fgruler@fg@height}{-#2}%
+\fgruler@fgsetting%
+\AtPageLowerLeft{\put(0,\fgruler@lentounit{#2}){%
+\fgruler@in@lowerright@{\fgruler@fg@width}{\fgruler@fg@height}}}%
+\endgroup}
+
+\def\fgruler@in@lowerright@fg{\fgruler@in@lowerright@fg@{\fgruler@hshift}{\fgruler@vshift}}
+% \end{macrocode}
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/fgruler/fgruler.ins b/macros/latex/contrib/fgruler/fgruler.ins
new file mode 100644
index 0000000000..13ea6a1a4b
--- /dev/null
+++ b/macros/latex/contrib/fgruler/fgruler.ins
@@ -0,0 +1,40 @@
+
+% Copyright 2017- by Tibor Tomacs
+%
+% 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 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Tibor Tomacs.
+%
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/fgruler}
+\preamble
+This is a generated file.
+
+Copyright 2017- by Tibor Tomacs
+
+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 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Tibor Tomacs.
+
+\endpreamble
+
+\generate{\file{fgruler.sty}{\from{./fgruler.dtx}{package}}}
+
+\endbatchfile
diff --git a/macros/latex/contrib/fgruler/fgruler.pdf b/macros/latex/contrib/fgruler/fgruler.pdf
new file mode 100644
index 0000000000..04352acad0
--- /dev/null
+++ b/macros/latex/contrib/fgruler/fgruler.pdf
Binary files differ