diff options
Diffstat (limited to 'macros/latex/contrib/eso-pic/eso-pic.dtx')
-rw-r--r-- | macros/latex/contrib/eso-pic/eso-pic.dtx | 719 |
1 files changed, 719 insertions, 0 deletions
diff --git a/macros/latex/contrib/eso-pic/eso-pic.dtx b/macros/latex/contrib/eso-pic/eso-pic.dtx new file mode 100644 index 0000000000..5c7ec360c5 --- /dev/null +++ b/macros/latex/contrib/eso-pic/eso-pic.dtx @@ -0,0 +1,719 @@ +% \iffalse meta-comment +% +% Copyright (C) 1998-2015 by Rolf Niepraschk <Rolf.Niepraschk@gmx.de> +% ------------------------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.2 +% 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.2 or later is part of all distributions of LaTeX +% version 1999/12/01 or later. +% 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". +% +% Please send error reports and suggestions for improvements to +% Rolf Niepraschk <Rolf.Niepraschk@gmx.de>. +% +% \fi +% +% \iffalse +%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<package>\ProvidesPackage{eso-pic} +%<package> [2018/04/12 v2.0h eso-pic (RN)] +% +%<*driver> +\documentclass[a4paper]{ltxdoc} +\usepackage{eso-pic,array} +\EnableCrossrefs\CodelineIndex\RecordChanges +\begin{document} + \DocInput{eso-pic.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{778} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \iffalse meta-comment +% =================================================================== +% @LaTeX-package-file{ +% author = {Rolf Niepraschk}, +% version = "v2.0i", +% date = "12 Apr 2018", +% filename = "eso-pic.sty", +% address = "", +% telephone = "", +% email = "Rolf.Niepraschk@gmx.de", +% codetable = "ISO/ASCII", +% keywords = "LaTeX2e, \shipout, picture", +% dependences = "atbegshi", +% supported = "yes", +% docstring = "LaTeX package which makes it easy to add some +% picture commands to every page." +% } +% =================================================================== +% \fi +% +% \providecommand\env[1]{\textsf{#1}} +% \providecommand\clsname[1]{\textsf{#1}} +% \providecommand\pkgname[1]{\textsf{#1}} +% \providecommand\optname[1]{\textsf{#1}} +% \providecommand\progname[1]{\textsf{#1}} +% +% \setlength\emergencystretch{3em} +% +% \changes{v0.4}{1998/06/02}{Initial version} +% \changes{v0.5}{1998/07/11}{Some bug corrections} +% \changes{v0.6}{2000/05/13}{Some corrections for compatibility with +% the \pkgname{html} package suggested by Ross Moore and a licence note} +% \changes{v0.7}{2001/07/20}{New command \cmd{\AddToShipoutPicture*}} +% \changes{v1.0}{2002/07/03}{New commands \cmd{\LenToUnit},% +% \cmd{\AtPageUpperLeft}, \cmd{\AtPageCenter}, \cmd{\AtTextUpperLeft}, +% and \cmd{\AtTextCenter}.} +% \changes{v1.0c}{2002/10/30}{New command \cmd{\AtTextLowerLeft} and +% corrections to \cmd{\AtTextUpperLeft}.} +% \changes{v1.1}{2002/11/07}{New commands and package options for +% background grids.} +% \changes{v1.1b}{2002/11/16}{New package options "texcoord" and "pscoord"} +% \changes{v1.1b}{2002/11/16}{New command \cmd{\AtPageLowerLeft}} +% +% \GetFileInfo{eso-pic.sty} +% +% \DoNotIndex{\newcommand,\newenvironment} +% +% \title{The \pkgname{eso-pic} package\thanks{This document +% corresponds to \pkgname{eso-pic}~\fileversion, dated \filedate.}} +% \author{Rolf Niepraschk \\ \texttt{Rolf.Niepraschk@gmx.de}} +% +% \date{} +% +% \maketitle +% +% \section{Introduction} +% +% This package makes it easy to add some picture commands to every page +% at absolute positions. +% \section{Usage} +% See also the example \LaTeX\ documents (|eso-*.tex|). +% +% \subsection{Basic commands for adding \LaTeX{} stuff to the page background} +% \DescribeMacro{\AddToShipoutPictureBG} All the picture commands which are +% parameters of an \cs{AddToShipoutPictureBG} command will be added to the +% internal macro \cs{ESO@HookIBG}. This macro is part of a +% zero-length \texttt{picture} environment with basepoint at the lower left +% corner of the page (default) or at the upper left corner +% (package option "texcoord"). The \texttt{picture} environment will be +% shipped out at every new page. +% +% \DescribeMacro{\AddToShipoutPictureBG*} \cs{AddToShipoutPictureBG*} works like +% \cs{AddToShipoutPictureBG} but only for the current page. It used the internal +% macro \cs{ESO@HookIIBG} which contents will be removed +% automatically. +% +% For compatibility the macros \cs{AddToShipoutPicture} and +% \cs{AddToShipoutPicture*} are aliases for \cs{AddToShipoutPictureBG} +% and \cs{AddToShipoutPictureBG*}. +% +% \DescribeMacro{\AddToShipoutPictureFG} +% \DescribeMacro{\AddToShipoutPictureFG*} Works like +% \cs{AddToShipoutPictureBG} but the picture commands are on the top +% oft the normal document content. +% +% \DescribeMacro{\ClearShipoutPictureBG} A call of +% \cs{ClearShipoutPictureBG} +% clears the contents of \cs{ESO@HookIBG}. +% +% For compatibility the macro \cs{ClearShipoutPicture} +% is an alias for \cs{ClearShipoutPictureBG}. +% +% \DescribeMacro{\ClearShipoutPictureFG} A call of +% \cs{ClearShipoutPictureFG} +% clears the contents of \cs{ESO@HookIFG}. +% +% \DescribeMacro{\LenToUnit} Allows a length as parameter to a picture +% command. Note that this macro is no more necessary when using +% |\usepackage{picture}|. +% +% \DescribeMacro{\gridSetup} +% \cmd{\gridSetup}\oarg{gridunitname}\marg{gridunit}\marg{labelfactor}^^A +% \marg{griddelta} \marg{gridDelta}\marg{gap}. For details see the +% implementation section.\par\clearpage +% \DescribeMacro{\AtPageUpperLeft} +% \DescribeMacro{\AtPageLowerLeft} +% \DescribeMacro{\AtPageCenter} +% \DescribeMacro{\AtTextUpperLeft} +% \DescribeMacro{\AtTextLowerLeft} +% \DescribeMacro{\AtTextCenter} +% \DescribeMacro{\AtStockUpperLeft} +% \DescribeMacro{\AtStockLowerLeft} +% \DescribeMacro{\AtStockCenter} +% Helper macros for easier positioning on the page. +% +% \subsection{Package options} +% \begin{center} +% \begin{tabular}{@{}>{\ttfamily}llp{.5\textwidth}@{}} +% \textnormal{Option} & Value & Comments \\ \hline +% pscoord & empty or \textit{true}, \textit{false} & The zero point of +% the coordinate system is the lower left corner of the page +% (the default). \\ +% texcoord & empty or \textit{true}, \textit{false} & The zero point of +% the coordinate system is the upper left corner of the page. \\ +% grid & empty or \textit{true}, \textit{false} & A grid is drawing; +% default: false. \\ +% gridBG & empty or \textit{true}, \textit{false} & Put the grid in the +% background; default: false.\\ +% gridunit & \textit{mm}, \textit{in}, \textit{bp}, \textit{pt} & Distance +% between gridlines are multiples of \texttt{gridunit}. default: mm.\\ +% gridcolor & a valid color name & Color of the main gridlines; +% default: black \\ +% subgridcolor & a valid color name & Color of the subgridlines; +% default: black. \\ +% subgridstyle & \textit{solid} or \textit{dotted} & `dotted' is very slow! +% default: solid. \\ +% colorgrid & empty or \textit{true}, \textit{false} & Shortcut for +% `grid=true', `gridcolor=red' and `subgridcolor=green'; +% default: false.\\ +% dvips & empty or \textit{true}, \textit{false} & Is also true +% if the package option \texttt{dvips} is +% used by \pkgname{color} or \pkgname{graphics}. If true package +% \pkgname{eepic} is loaded for better performance of dotted lines. +% +% \end{tabular} +% \end{center} +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \section{Implementation} +% +% \subsection{The main functionality} +% +% \begin{macrocode} +\RequirePackage{atbegshi} +% \end{macrocode} +% \begin{macro}{\LenToUnit} +% \changes{v1.0d}{2006/07/14}{Using \cmd{\providecommand} instead of +% \cmd{\newcommand} for \cmd{\LenToUnit}} +% \changes{v2.0f}{2015/07/14}{Changed definition for better compatibility +% with package \pkgname{curve2e} suggested by Claudio Beccari.} +% \begin{macrocode} +\providecommand*\LenToUnit[1]{\strip@pt\dimexpr#1*\p@/\unitlength} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ESO@isMEMOIR} +% Support for the \clsname{memoir} class. +% \begin{macrocode} +\newcommand\ESO@isMEMOIR[2]{#2} +\@ifclassloaded{memoir}{\renewcommand\ESO@isMEMOIR[2]{#1}}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtPageUpperLeft} +% \begin{macrocode} +\newcommand\AtPageUpperLeft[1]{% + \put(0,\LenToUnit{-\ESO@yoffsetI}){#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtPageLowerLeft} +% \begin{macrocode} +\newcommand\AtPageLowerLeft[1]{\AtPageUpperLeft{% + \put(0,\LenToUnit{-\paperheight}){#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtPageCenter} +% \begin{macrocode} +\newcommand\AtPageCenter[1]{\AtPageUpperLeft{% + \put(\LenToUnit{.5\paperwidth},\LenToUnit{-.5\paperheight}){#1}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtStockLowerLeft} +% \changes{v2.0a}{2009/10/07}{New} +% \begin{macrocode} +\newcommand\AtStockLowerLeft{} +\ESO@isMEMOIR{% + \renewcommand\AtStockLowerLeft[1]{% + \begingroup + \@tempdima=-\stockwidth + \advance\@tempdima\trimedge + \advance\@tempdima\paperwidth + \if@twoside\ifodd\c@page\else + \@tempdima=-\trimedge + \fi\fi + \@tempdimb=-\stockheight + \advance\@tempdimb\paperheight + \advance\@tempdimb\trimtop + \AtPageLowerLeft{% + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}% + }% + \endgroup + } +}{% + \let\AtStockLowerLeft=\AtPageLowerLeft +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtStockUpperLeft} +% \changes{v2.0a}{2009/10/07}{New} +% \begin{macrocode} +\newcommand\AtStockUpperLeft{} +\ESO@isMEMOIR{% + \renewcommand\AtStockUpperLeft[1]{% + \AtStockLowerLeft{% + \put(0,\LenToUnit{\stockheight}){#1}% + }% + }% +}{% + \let\AtStockUpperLeft=\AtPageUpperLeft +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtStockCenter} +% \changes{v2.0a}{2009/10/07}{New} +% \begin{macrocode} +\newcommand\AtStockCenter{} +\ESO@isMEMOIR{% + \renewcommand\AtStockCenter[1]{% + \AtStockLowerLeft{% + \put(\LenToUnit{.5\stockwidth},\LenToUnit{.5\stockheight}){#1}% + }% + }% +}{% + \let\AtStockCenter=\AtPageCenter +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtTextUpperLeft} +% \changes{v2.0a}{2009/10/07}{Works now for class \clsname{memoir}} +% \changes{v2.0e}{2014/04/20}{Wrong horizontal position in one-column mode} +% \begin{macrocode} +\ESO@isMEMOIR{% + \newcommand\AtTextUpperLeft[1]{% + \begingroup + \ifodd\c@page + \@tempdima=\spinemargin + \else + \@tempdima=\paperwidth + \advance\@tempdima-\textwidth + \advance\@tempdima-\spinemargin + \fi + \@tempdimb=-\uppermargin + \AtPageUpperLeft{% + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}% + }% + \endgroup + } +}{% + \newcommand\AtTextUpperLeft[1]{% + \begingroup + \@tempdima=1in\relax + \if@twoside + \ifodd\c@page + \advance\@tempdima\oddsidemargin + \else + \advance\@tempdima\evensidemargin + \fi + \else + \advance\@tempdima\oddsidemargin + \fi + \@tempdimb=-1in\relax + \advance\@tempdimb-\topmargin + \advance\@tempdimb-\headheight + \advance\@tempdimb-\headsep + \AtPageUpperLeft{% + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){#1}% + }% + \endgroup + } +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtTextLowerLeft} +% \begin{macrocode} +\newcommand\AtTextLowerLeft[1]{\AtTextUpperLeft{% + \put(0,\LenToUnit{-\textheight}){#1}}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AtTextCenter} +% \begin{macrocode} +\newcommand\AtTextCenter[1]{\AtTextUpperLeft{% + \put(\LenToUnit{.5\textwidth},\LenToUnit{-.5\textheight}){#1}}} +% \end{macrocode} +% \end{macro} +% \DescribeMacro{\ESO@HookIBG}\DescribeMacro{\ESO@HookIIBG} +% \DescribeMacro{\ESO@HookIIIBG}\DescribeMacro{\ESO@HookIFG} +% \DescribeMacro{\ESO@HookIIFG}\DescribeMacro{\ESO@HookIIIFG} +% \changes{v2.0g}{2015/07/21}{New macro \cmd{\ESO@HookIIIFG} for foreground grid.} +% \begin{macrocode} +\newcommand{\ESO@HookIBG}{} +\newcommand{\ESO@HookIIBG}{} +\newcommand{\ESO@HookIIIBG}{} +\newcommand{\ESO@HookIFG}{} +\newcommand{\ESO@HookIIFG}{} +\newcommand{\ESO@HookIIIFG}{} +\newcommand{\ESO@HookI}{} +\newcommand{\ESO@HookII}{} +\newcommand{\ESO@HookIII}{} +\let\ESO@HookI=\ESO@HookIBG +\let\ESO@HookII=\ESO@HookIIBG +\let\ESO@HookIII=\ESO@HookIIIBG +% \end{macrocode} +% \begin{macro}{\AddToShipoutPictureBG} +% \begin{macro}{\AddToShipoutPictureFG} +% \changes{v2.0b}{2010/06/08}{New command \cmd{\AddToShipoutPictureFG}} +% \begin{macrocode} +\newcommand{\AddToShipoutPictureBG}{% + \@ifstar{\g@addto@macro\ESO@HookIIBG}{\g@addto@macro\ESO@HookIBG}} +\newcommand{\AddToShipoutPicture}{} +\let\AddToShipoutPicture=\AddToShipoutPictureBG +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\AddToShipoutPictureFG} +% \begin{macrocode} +\newcommand{\AddToShipoutPictureFG}{% + \@ifstar{\g@addto@macro\ESO@HookIIFG}{\g@addto@macro\ESO@HookIFG}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ClearShipoutPictureBG} +% \begin{macro}{\ClearShipoutPicture} +% \begin{macro}{\ClearShipoutPictureFG} +% \changes{v1.0a}{2002/10/07}{Changed \cmd{\let} to +% \cmd{\global}\cmd{\let} (suggested by Alberto Lusiani).} +% \begin{macrocode} +\newcommand{\ClearShipoutPictureBG}{\global\let\ESO@HookIBG\@empty} +\newcommand{\ClearShipoutPicture}{} +\let\ClearShipoutPicture=\ClearShipoutPictureBG +\newcommand{\ClearShipoutPictureFG}{\global\let\ESO@HookIFG\@empty} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\AtBeginShipout} +% \begin{macro}{\AtBeginShipoutUpperLeft} +% \begin{macro}{\AtBeginShipoutUpperLeftForeground} +% (see package \pkgname{atbegshi}) +% \changes{v2.0c}{2010/10/06}{bugfix for memoir class +% (reported by YI Hoze)} +% \begin{macrocode} +\ESO@isMEMOIR{% + \AtBeginShipout{% + \@tempdima=-\trimedge + \advance\@tempdima-\paperwidth + \advance\@tempdima\stockwidth + \if@twoside\ifodd\c@page\else + \advance\@tempdima2\trimedge + \advance\@tempdima\paperwidth + \advance\@tempdima-\stockwidth + \fi\fi + \@tempdimb=\ESO@yoffsetI + \advance\@tempdimb-\trimtop + \nointerlineskip + \AtBeginShipoutUpperLeft{% + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){% + \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG + \global\let\ESO@HookIIBG\@empty + }% + }% + \AtBeginShipoutUpperLeftForeground{% + \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){% + \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG + \global\let\ESO@HookIIFG\@empty + }% + }% + } +}{% + \AtBeginShipout{% + \nointerlineskip + \AtBeginShipoutUpperLeft{% + \put(0,\LenToUnit{\ESO@yoffsetI}){% + \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG + \global\let\ESO@HookIIBG\@empty + }% + }% + \AtBeginShipoutUpperLeftForeground{% + \put(0,\LenToUnit{\ESO@yoffsetI}){% + \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG + \global\let\ESO@HookIIFG\@empty + }% + }% + } +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \subsection{The background grid} +% \begin{macrocode} +\RequirePackage{keyval} +% \end{macrocode} +% Initialising some macros +% \changes{v2.0g}{2015/07/21}{New \cmd{\ifESO@gridBG} for foreground/background grid.} +% \begin{macrocode} +\newif\ifESO@dvips\ESO@dvipsfalse \newif\ifESO@grid\ESO@gridfalse +\newif\ifESO@texcoord\ESO@texcoordfalse \newif\ifESO@gridBG\ESO@gridBGfalse +\newcommand*\ESO@gridunitname{} +\newcommand*\ESO@gridunit{} +\newcommand*\ESO@labelfactor{} +\newcommand*\ESO@griddelta{}\newcommand*\ESO@griddeltaY{} +\newcommand*\ESO@gridDelta{}\newcommand*\ESO@gridDeltaY{} +\newcommand*\ESO@gridcolor{} +\newcommand*\ESO@subgridcolor{} +\newcommand*\ESO@subgridstyle{dotted}% ??? +\newcommand*\ESO@gap{} +\newcommand*\ESO@yoffsetI{}\newcommand*\ESO@yoffsetII{} +\newcommand*\ESO@gridlines{\thinlines} +\newcommand*\ESO@subgridlines{\thinlines} +\newcommand*\ESO@hline[1]{\ESO@subgridlines\line(1,0){#1}} +\newcommand*\ESO@vline[1]{\ESO@subgridlines\line(0,1){#1}} +\newcommand*\ESO@Hline[1]{\ESO@gridlines\line(1,0){#1}} +\newcommand*\ESO@Vline[1]{\ESO@gridlines\line(0,1){#1}} +\newcommand\ESO@fcolorbox[3]{\fbox{#3}} +\newcommand\ESO@color[1]{} +\newcommand\ESO@colorbox[2]{% + \begingroup + \fboxrule=\z@\fbox{#2}% + \endgroup +} +% \end{macrocode} +% \begin{macro}{\gridSetup} +% \begin{macrocode} +\newcommand\gridSetup[6][]{% + \edef\ESO@gridunitname{#1}\edef\ESO@gridunit{#2} + \edef\ESO@labelfactor{#3}\edef\ESO@griddelta{#4} + \edef\ESO@gridDelta{#5}\edef\ESO@gap{#6}} +% \end{macrocode} +% \end{macro} +% All the key-value options +% \changes{v2.0g}{2015/07/21}{New option `gridBG'.} +% \begin{macrocode} +\define@key{ESO}{texcoord}[true]{\csname ESO@texcoord#1\endcsname} +\define@key{ESO}{pscoord}[true]{\csname @tempswa#1\endcsname + \if@tempswa\ESO@texcoordfalse\else\ESO@texcoordtrue\fi} +\define@key{ESO}{dvips}[true]{\csname ESO@dvips#1\endcsname} +\define@key{ESO}{grid}[true]{\csname ESO@grid#1\endcsname + \setkeys{ESO}{gridcolor=black,subgridcolor=black}} +\define@key{ESO}{gridBG}[true]{\csname ESO@gridBG#1\endcsname} +\define@key{ESO}{colorgrid}[true]{\csname ESO@grid#1\endcsname + \setkeys{ESO}{gridcolor=red,subgridcolor=green}} +\define@key{ESO}{gridcolor}{\def\ESO@gridcolor{#1}} +\define@key{ESO}{subgridcolor}{\def\ESO@subgridcolor{#1}} +\define@key{ESO}{subgridstyle}{\def\ESO@subgridstyle{#1}}% +\define@key{ESO}{gridunit}{% + \def\@tempa{#1} + \def\@tempb{bp} + \ifx\@tempa\@tempb + \gridSetup[\@tempa]{1bp}{1}{10}{50}{2} + \else + \def\@tempb{pt} + \ifx\@tempa\@tempb + \gridSetup[\@tempa]{\p@}{1}{10}{50}{2} + \else + \def\@tempb{in} + \ifx\@tempa\@tempb + \gridSetup[\@tempa]{.1in}{.1}{2}{10}{.5} + \else + \gridSetup[mm]{1mm}{1}{5}{20}{1} + \fi + \fi + \fi +} +\setkeys{ESO}{subgridstyle=solid,pscoord=true,gridunit=mm} +% \end{macrocode} +% \changes{v2.0h}{2018/04/12}{\cmd\@classoptionslist must not be \cmd\relax} +% \begin{macrocode} +\providecommand*\@classoptionslist{} +% \end{macrocode} +% \begin{macro}{\ProcessOptionsWithKV} +% This macro can process package options using `key=value' syntax. +% \begin{macrocode} +\def\ProcessOptionsWithKV#1{% + \let\@tempc\@empty + \@for\CurrentOption:=\@classoptionslist\do{% + \@ifundefined{KV@#1@\CurrentOption}% + {}{\edef\@tempc{\@tempc,\CurrentOption,}}}% + \edef\@tempc{% + \noexpand\setkeys{#1}{\@tempc\@ptionlist{\@currname.\@currext}}}% + \@tempc + \AtEndOfPackage{\let\@unprocessedoptions\relax}}% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\ProcessOptionsWithKV{ESO}% +% \end{macrocode} +% \begin{macro}{\ESO@div} +% Divides length |#1| by |#2| \(\times\) \cmd{\ESO@gridunit} and adds one. +% Result is in \cmd{\@tempcnta}. +% \begin{macrocode} +\newcommand\ESO@div[2]{% + \@tempdima=#1\relax\@tempdimb=\ESO@gridunit\relax + \@tempdimb=#2\@tempdimb\divide\@tempdima by \@tempdimb + \@tempcnta\@tempdima\advance\@tempcnta\@ne} +% \end{macrocode} +% \end{macro} +% \changes{v1.1c}{2005/12/24}{Remove the disadvantageous check of +% `pdfTeX'. Now using with Xe\LaTeX\ should be possible.} +% \changes{v2.0a}{2009/10/07}{Better test of color/xcolor} +% \changes{v2.0d}{2013/10/06}{Improved color commands} +% \begin{macrocode} +\@ifundefined{colorbox}{% + \IfFileExists{xcolor.sty}{\RequirePackage{xcolor}}% + {\RequirePackage{color}}% +}{}% +\let\ESO@color=\color +\renewcommand\ESO@colorbox[2]{% + \begingroup + \fboxsep=.4ex % + \colorbox{#1}{#2}% + \endgroup +} +\renewcommand\ESO@fcolorbox[3]{% + \begingroup + \fboxsep=.5ex % + \fcolorbox{#1}{#2}{#3}% + \endgroup +} +\AtBeginDocument{% + \ESO@dvipsfalse + \@ifundefined{Gin@driver}{}% + {% + \ifx\Gin@driver\@empty\else% + \filename@parse{\Gin@driver}\def\reserved@a{dvips}% + \ifx\filename@base\reserved@a\ESO@dvipstrue\fi + \fi + }% + \ifESO@dvips\def\@tempb{eepic}\else\def\@tempb{epic}\fi + \def\@tempa{dotted}%\def\ESO@gap{\LenToUnit{6\@wholewidth}}% + \ifx\@tempa\ESO@subgridstyle + \IfFileExists{\@tempb.sty}% + {% + \RequirePackage{\@tempb} + \renewcommand*\ESO@hline[1]{\ESO@subgridlines\dottedline{\ESO@gap}% + (0,0)(##1,0)} + \renewcommand*\ESO@vline[1]{\ESO@subgridlines\dottedline{\ESO@gap}% + (0,0)(0,##1)} + }{} + \else + \ifx\ESO@gridcolor\ESO@subgridcolor + \renewcommand*\ESO@gridlines{\thicklines} + \fi + \fi +} +\ifESO@texcoord + \def\ESO@yoffsetI{\z@}\def\ESO@yoffsetII{-\paperheight} + \edef\ESO@griddeltaY{-\ESO@griddelta}\edef\ESO@gridDeltaY{-\ESO@gridDelta} +\else + \def\ESO@yoffsetI{-\paperheight}\def\ESO@yoffsetII{\z@} + \edef\ESO@griddeltaY{\ESO@griddelta}\edef\ESO@gridDeltaY{\ESO@gridDelta} +\fi +% \end{macrocode} +% \begin{macro}{\ESO@gridpicture} +% \begin{macrocode} +\newcommand\ESO@gridpicture{% + \begingroup + \setlength\unitlength{\ESO@gridunit}% + \ESO@color{\ESO@subgridcolor}% +% \end{macrocode} +% --- horizontal subgrid lines --- +% \begin{macrocode} + \ESO@div{\paperheight}{\ESO@griddelta}% + \multiput(0,0)(0,\ESO@griddeltaY){\@tempcnta}% + {\ESO@hline{\LenToUnit{\paperwidth}}}% +% \end{macrocode} +% --- vertical subgrid lines --- +% \begin{macrocode} + \ESO@div{\paperwidth}{\ESO@griddelta}% + \multiput(0,\LenToUnit{\ESO@yoffsetII})(\ESO@griddelta,0){\@tempcnta}% + {\ESO@vline{\LenToUnit{\paperheight}}}% + \ESO@color{\ESO@gridcolor}% +% \end{macrocode} +% --- horizontal grid lines --- +% \begin{macrocode} + \ESO@div{\paperheight}{\ESO@gridDelta}% + \multiput(0,0)(0,\ESO@gridDeltaY){\@tempcnta}% + {\ESO@Hline{\LenToUnit{\paperwidth}}}% +% \end{macrocode} +% --- vertical grid lines --- +% \begin{macrocode} + \ESO@div{\paperwidth}{\ESO@gridDelta}% + \multiput(0,\LenToUnit{\ESO@yoffsetII})(\ESO@gridDelta,0){\@tempcnta}% + {\ESO@Vline{\LenToUnit{\paperheight}}}% +% \end{macrocode} +% --- horizontal numbers --- +% \changes{v1.1a}{2002/11/09}{Font setting added.} +% \begin{macrocode} + \fontsize{10}{12}\normalfont% + \ESO@div{\paperwidth}{\ESO@gridDelta}% + \multiput(0,\ESO@gridDeltaY)(\ESO@gridDelta,0){\@tempcnta}{% + \@tempcntb=\@tempcnta\advance\@tempcntb-\@multicnt + \ifnum\@tempcntb>1\relax + \multiply\@tempcntb by \ESO@gridDelta\relax + \@tempdima=\@tempcntb sp\@tempdima=\ESO@labelfactor\@tempdima + \@tempcntb=\@tempdima% + \makebox(0,0)[c]{\ESO@colorbox{white}{\the\@tempcntb}}% + \fi}% +% \end{macrocode} +% --- vertical numbers --- +% \begin{macrocode} + \ifx\ESO@gridunitname\@empty\def\@tempa{0}\else\def\@tempa{1}\fi + \ESO@div{\paperheight}{\ESO@gridDelta}% + \multiput(\ESO@gridDelta,0)(0,\ESO@gridDeltaY){\@tempcnta}{% + \@tempcntb=\@tempcnta\advance\@tempcntb-\@multicnt% + \ifnum\@tempcntb>\@tempa\relax + \multiply\@tempcntb by \ESO@gridDelta\relax% + \@tempdima=\@tempcntb sp\@tempdima=\ESO@labelfactor\@tempdima + \@tempcntb=\@tempdima + \makebox(0,0)[c]{\ESO@colorbox{white}{\the\@tempcntb}}% + \fi + }% +% \end{macrocode} +% --- the unit label --- +% \begin{macrocode} + \ifx\ESO@gridunitname\@empty\else + \thicklines\fboxrule=\@wholewidth + \put(\ESO@gridDelta,\ESO@gridDeltaY){\makebox(0,0)[c]{% + \ESO@fcolorbox{\ESO@gridcolor}{white}{% + \textbf{\ESO@gridunitname}}}}% + \fi + \normalcolor% + \endgroup +} +% \end{macrocode} +% \end{macro} +% Add the grid to the shipout picture (\cmd{\ESO@HookIIIFG} or +% \cmd{\ESO@HookIIIBG}) is independed from the user commands +% \cmd{\AddToShipoutPictureBG} and \cmd{\AddToShipoutPictureBG*}). +% \changes{v2.0d}{2013/10/06}{grid should be in foreground} +% \changes{v2.0g}{2015/07/21}{Foreground/background grid.} +% \begin{macrocode} +\ifESO@grid + \ifESO@gridBG + \g@addto@macro\ESO@HookIIIBG{\ESO@gridpicture}% + \else + \g@addto@macro\ESO@HookIIIFG{\ESO@gridpicture}% + \fi +\fi +% \end{macrocode} +% +% \Finale +\endinput |