% \iffalse meta-comment % % Copyright (C) 1998-2015 by Rolf Niepraschk % ------------------------------------------------------------------- % % This file may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of LaTeX % version 2003/12/01 or later. % % This work has the LPPL maintenance status "author-maintained". % % Please send error reports and suggestions for improvements to % Rolf Niepraschk . % % \fi % % \iffalse %\NeedsTeXFormat{LaTeX2e}[2020/10/01] %\ProvidesPackage{eso-pic} % [2023/05/03 v3.0c eso-pic (RN)] % %<*driver> \documentclass[a4paper]{ltxdoc} \usepackage{eso-pic,array} \EnableCrossrefs\CodelineIndex\RecordChanges \begin{document} \DocInput{eso-pic.dtx} \end{document} % % \fi % % \CheckSum{758} % % \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 \~} % % % \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 % of 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 exist only for compatibility to older % versions of this package. A recent \LaTeX\ version allows dimensions % in picture commands. % % \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{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.} % Only for compatibility % \changes{v3.0a}{2020/10/14}{No more used. (RN).} % \begin{macrocode} \providecommand*\LenToUnit[1]{#1} % \end{macrocode} % \end{macro} % \begin{macrocode} \newdimen\ESO@tempdima \newdimen\ESO@tempdimb % \end{macrocode} % \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,-\ESO@yoffsetI){#1}% } % \end{macrocode} % \end{macro} % \begin{macro}{\AtPageLowerLeft} % \begin{macrocode} \newcommand\AtPageLowerLeft[1]{\AtPageUpperLeft{% \put(0,-\paperheight){#1}}} % \end{macrocode} % \end{macro} % \begin{macro}{\AtPageCenter} % \begin{macrocode} \newcommand\AtPageCenter[1]{\AtPageUpperLeft{% \put(.5\paperwidth,-.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 \ESO@tempdima=-\stockwidth \advance\ESO@tempdima\trimedge \advance\ESO@tempdima\paperwidth \if@twoside\ifodd\c@page\else \ESO@tempdima=-\trimedge \fi\fi \ESO@tempdimb=-\stockheight \advance\ESO@tempdimb\paperheight \advance\ESO@tempdimb\trimtop \AtPageLowerLeft{% \put(\ESO@tempdima,\ESO@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,\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(.5\stockwidth,.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} % \changes{v3.0c}{2023/05/03}{Wrong horizontal position in memoir one-side % mode (issue \#5)} % \begin{macrocode} \ESO@isMEMOIR{% \newcommand\AtTextUpperLeft[1]{% \begingroup \if@twoside \ifodd\c@page \ESO@tempdima=\spinemargin \else \ESO@tempdima=\paperwidth \advance\ESO@tempdima-\textwidth \advance\ESO@tempdima-\spinemargin \fi \else \ESO@tempdima=\spinemargin \fi \ESO@tempdimb=-\uppermargin \AtPageUpperLeft{% \put(\ESO@tempdima,\ESO@tempdimb){#1}% }% \endgroup }% }{% \newcommand\AtTextUpperLeft[1]{% \begingroup \ESO@tempdima=1in\relax \if@twoside \ifodd\c@page \advance\ESO@tempdima\oddsidemargin \else \advance\ESO@tempdima\evensidemargin \fi \else \advance\ESO@tempdima\oddsidemargin \fi \ESO@tempdimb=-1in\relax \advance\ESO@tempdimb-\topmargin \advance\ESO@tempdimb-\headheight \advance\ESO@tempdimb-\headsep \AtPageUpperLeft{% \put(\ESO@tempdima,\ESO@tempdimb){#1}% }% \endgroup } } % \end{macrocode} % \end{macro} % \begin{macro}{\AtTextLowerLeft} % \begin{macrocode} \newcommand\AtTextLowerLeft[1]{\AtTextUpperLeft{% \put(0,-\textheight){#1}}} % \end{macrocode} % \end{macro} % \begin{macro}{\AtTextCenter} % \begin{macrocode} \newcommand\AtTextCenter[1]{\AtTextUpperLeft{% \put(.5\textwidth,-.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} % \changes{v3.0a}{2020/10/14}{LaTeX's shipout hooks instead of `atbegshi' (RN).} % \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} % \changes{v2.0c}{2010/10/06}{bugfix for memoir class % (reported by YI Hoze)} % \begin{macrocode} \ESO@isMEMOIR{% \newcommand*\ESO@MEMOIR@corr{% \ESO@tempdima=-\trimedge \advance\ESO@tempdima-\paperwidth \advance\ESO@tempdima\stockwidth \if@twoside\ifodd\c@page\else \advance\ESO@tempdima2\trimedge \advance\ESO@tempdima\paperwidth \advance\ESO@tempdima-\stockwidth \fi\fi \ESO@tempdimb=\ESO@yoffsetI \advance\ESO@tempdimb-\trimtop } \nointerlineskip \AddToHook{shipout/background}{% \ESO@MEMOIR@corr \put(\ESO@tempdima,\ESO@tempdimb){% \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG \global\let\ESO@HookIIBG\@empty }% }% \AddToHook{shipout/foreground}{% \ESO@MEMOIR@corr \put(\ESO@tempdima,\ESO@tempdimb){% \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG \global\let\ESO@HookIIFG\@empty }% }% }{% \nointerlineskip \AddToHook{shipout/background}{% \put(0,\ESO@yoffsetI){% \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG \global\let\ESO@HookIIBG\@empty }% }% \AddToHook{shipout/foreground}{% \put(0,\ESO@yoffsetI){% \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG \global\let\ESO@HookIIFG\@empty }% }% } % \end{macrocode} % \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]{% \ESO@tempdima=#1\relax\ESO@tempdimb=\ESO@gridunit\relax \ESO@tempdimb=#2\ESO@tempdimb\divide\ESO@tempdima by \ESO@tempdimb \@tempcnta\ESO@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} % \changes{v3.0b}{2023/03/23}{More code inside \cmd{\AtBeginDocument}} % \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{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 % \changes{v3.0b}{2023/03/23}{More code inside \cmd{\AtBeginDocument}} \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{\paperwidth}}% % \end{macrocode} % --- vertical subgrid lines --- % \begin{macrocode} \ESO@div{\paperwidth}{\ESO@griddelta}% \multiput(0,\ESO@yoffsetII)(\ESO@griddelta,0){\@tempcnta}% {\ESO@vline{\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{\paperwidth}}% % \end{macrocode} % --- vertical grid lines --- % \begin{macrocode} \ESO@div{\paperwidth}{\ESO@gridDelta}% \multiput(0,\ESO@yoffsetII)(\ESO@gridDelta,0){\@tempcnta}% {\ESO@Vline{\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 \ESO@tempdima=\@tempcntb sp\ESO@tempdima=\ESO@labelfactor\ESO@tempdima \@tempcntb=\ESO@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% \ESO@tempdima=\@tempcntb sp\ESO@tempdima=\ESO@labelfactor\ESO@tempdima \@tempcntb=\ESO@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