% \iffalse meta-comment % % File: pagecolor.dtx % Version: 2023-04-18 v1.2c % Info: Provides thepagecolor % % Copyright © 2011 - 2023 by % H.-Martin Münch % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3c of this license or (at your option) any later % version. This version of this license is in % https://www.latex-project.org/lppl/lppl-1-3c.txt % and the latest version of this license is in % https://www.latex-project.org/lppl.txt % and version 1.3c 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 H.-Martin Münch. % % This work consists of the main source file pagecolor.dtx, % the README, and the derived files % pagecolor.sty, pagecolor.pdf, % pagecolor.ins, pagecolor.drv, % pagecolor-example.tex, pagecolor-example.pdf. % % "pagecolor" is available on CTAN: % https://ctan.org/pkg/pagecolor % % Also a TDS.ZIP file is provided that contains all the files % already sorted in a TDS tree: % https://mirror.ctan.org/install/macros/latex/contrib/pagecolor.tds.zip % %<*ignore> \begingroup \catcode123=1 % \catcode125=2 % \def\x{LaTeX2e}% \expandafter\endgroup \ifcase 0\ifx\install y1\fi\expandafter \ifx\csname processbatchFile\endcsname\relax\else1\fi \ifx\fmtname\x\else 1\fi\relax \else\csname fi\endcsname % %<*install> \input docstrip.tex \Msg{******************************************************************} \Msg{* Installation *} \Msg{* Package: pagecolor 2023-04-18 v1.2c Provides thepagecolor (HMM)*} \Msg{******************************************************************} \keepsilent \askforoverwritefalse \let\MetaPrefix\relax \preamble This is a generated file. Project: pagecolor Version: 2023-04-18 v1.2c Info: Provides thepagecolor Copyright (C) 2011 - 2023 by H.-Martin Muench This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. This version of this license is in https://www.latex-project.org/lppl/lppl-1-3c.txt and the latest version of this license is in https://www.latex-project.org/lppl.txt and version 1.3c 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 H.-Martin Muench. This work consists of the main source file pagecolor.dtx, the README, and the derived files pagecolor.sty, pagecolor.pdf, pagecolor.ins, pagecolor.drv, pagecolor-example.tex, pagecolor-example.pdf. In memoriam Claudia Simone Barth + 1996-01-30 Tommy Muench + 2014-01-02 Hans-Klaus Muench + 2014-08-24 \endpreamble \let\MetaPrefix\DoubleperCent \generate{% \file{pagecolor.ins}{\from{pagecolor.dtx}{install}}% \file{pagecolor.drv}{\from{pagecolor.dtx}{driver}}% \usedir{tex/latex/pagecolor}% \file{pagecolor.sty}{\from{pagecolor.dtx}{package}}% \usedir{doc/latex/pagecolor}% \file{pagecolor-example.tex}{\from{pagecolor.dtx}{example}}% } \catcode32=13\relax% active space \let =\space% \Msg{************************************************************************} \Msg{*} \Msg{* To finish the installation you have to move the following} \Msg{* file into a directory searched by TeX:} \Msg{*} \Msg{* pagecolor.sty} \Msg{*} \Msg{* To produce the documentation run the file `pagecolor.drv'} \Msg{* through (pdf)LaTeX, e.g.} \Msg{* pdflatex pagecolor.drv} \Msg{* makeindex -s gind.ist pagecolor.idx} \Msg{* pdflatex pagecolor.drv} \Msg{* makeindex -s gind.ist pagecolor.idx} \Msg{* pdflatex pagecolor.drv} \Msg{*} \Msg{* At least three runs are necessary e.g. to get the} \Msg{* references right!} \Msg{*} \Msg{* Happy TeXing!} \Msg{*} \Msg{************************************************************************} \endbatchfile % %<*ignore> \fi % % % \section{The documentation driver file} % % The next bit of code contains the documentation driver file for % \TeX, i.\,e., the file that will produce the documentation you % are currently reading. It will be extracted from this file by the % \texttt{docstrip} programme. That is, run \LaTeX{} on \texttt{docstrip} % and specify the \texttt{driver} option when \texttt{docstrip} % asks for options. % % \begin{macrocode} %<*driver> \NeedsTeXFormat{LaTeX2e}[2022-11-01] \ProvidesFile{pagecolor.drv}% [2023-04-18 v1.2c Provides thepagecolor (HMM)] \documentclass{ltxdoc}[2022/06/22]% v2.1i Standard LaTeX documentation class \usepackage{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK) \usepackage{holtxdoc}[2019/12/09]% v0.30 Private additional ltxdoc support (HO) \hypersetup{% pdfsubject={Providing the thepagecolor command (HMM)},% pdfkeywords={LaTeX, pagecolor, thepagecolor},% pdfencoding=auto,% pdflang={en},% breaklinks=true,% linktoc=all,% pdfstartview=FitH,% pdfpagelayout=OneColumn,% bookmarksnumbered=true,% bookmarksopen=true,% bookmarksopenlevel=3,% pdfmenubar=true,% pdftoolbar=true,% pdfwindowui=true,% pdfnewwindow=true% } \CodelineIndex \hyphenation{docu-ment} \begin{document} \DocInput{pagecolor.dtx}% \end{document} % % \end{macrocode} % \fi % % \GetFileInfo{pagecolor.drv} % % \begingroup % \def\x{\#,\$,\^,\_,\~,\ ,\&,\{,\},\%}% % \makeatletter % \@onelevel@sanitize\x % \expandafter\endgroup % \expandafter\DoNotIndex\expandafter{\x} % \expandafter\DoNotIndex\expandafter{\string\ } % \begingroup % \makeatletter % \lccode`9=32\relax % \lowercase{%^^A % \edef\x{\noexpand\DoNotIndex{\@backslashchar9}}%^^A % }%^^A % \expandafter\endgroup\x % % \DoNotIndex{\,,\@bsphack,\@esphack,\\} % \DoNotIndex{\documentclass,\usepackage,\begin,\end,\pagenumbering,\bigskip,\smallskip} % \DoNotIndex{\space,\newline,\noindent,\linebreak,\pagebreak,\section,\textbf,\textsf,\textit} % \DoNotIndex{\GenerateLogMacros,\holtxdoc,\Oberdiek,\hyperref,\kvoptions,\options,\OCG} % \DoNotIndex{\color,\gdef,\lipsum,\ifdefined,\IfPackageAtLeastTF,\IfFormatAtLeastTF} % \DoNotIndex{\IfPackageLoadedTF,\ifx,\MessageBreak} % \DoNotIndex{\Alternatives,\transparent,\newcommand,\verb,\listfiles,\newpage} % \DoNotIndex{\AddToHook,\afterpage,\Alternatives,\DeclareStringOption,\holtxdoc,\hyperref} % \DoNotIndex{\kvoptions,\NeedsTeXFormat,\Oberdiek,\OCG,\options} % \DoNotIndex{\PackageInfo,\PackageNoteNoLine,\PackageWarning,\PackageWarningNoLine} % \DoNotIndex{\pagecolortmpa,\pagecolortmpb,\pagecolortmpc,\pagecolortmpd,\pagecolortmpe,\pagecolortmpf} % \DoNotIndex{\ProcessKeyvalOptions,\ProvidesPackage,\renewcommand,\RequirePackage} % \DoNotIndex{\setkeys,\SetupKeyvalOptions,\transparent,\@ifl@t@r,\fmtversion,\PackageError} % % \title{The \xpackage{pagecolor} package} % \date{2023-04-18 v1.2c} % \author{H.-Martin Münch\\\xemail{Martin.Muench at Uni-Bonn.de}} % % \maketitle % % \begin{abstract} % \noindent This \LaTeX{} package provides the command |\thepagecolor|, % which gives the current page (background) color, % \hbox{i.\,e. the} argument used with the most recent call of |\pagecolor{...}|. % The command |\thepagecolornone| gives the same color as |\thepagecolor|, % except when the page background color is % \textquotedblleft|none|\textquotedblright. In that case |\thepagecolor| is % |white| and |\thepagecolornone| is |none|.\\ % When |\nopagecolor| is unknown or in case of the \xpackage{crop} package % broken, this package provides a replacement.\\ % Similar to |\newgeometry| and |\restoregeometry| of the \xpackage{geometry} % package |\newpagecolor{<|\textit{some color}|>}| and |\restorepagecolor| % are provided.\\ % For use with the \xpackage{crop} package |\backgroundpagecolor{<|\textit{some color}|>}| % as well as |\newbackgroundpagecolor{<|\textit{some color}|>}| and \newline % |\restorebackgroundpagecolor| are provided. % \end{abstract} % % \bigskip % % \noindent Disclaimer for web links: The author is not responsible for any contents % referred to in this work unless having full knowledge of illegal contents. % If any damage occurs by the use of information presented there, % only the author of the respective pages might be liable, % not the one who has referred to those pages. % % \tableofcontents % % \bigskip % % \section{Introduction} % \indent This \LaTeX{} package provides the command |\thepagecolor|, % which gives the current page (background) color, % \hbox{i.\,e. the} argument used with the most recent call of |\pagecolor{...}|. % (\verb|\pagecolor| needs to be defined before by the \xpackage{xcolor} or % \xpackage{color} package.) The \xpackage{pagecolor} package should be loaded % before any package sets a page (background) color, but obviously after % the \xpackage{xcolor} or \xpackage{color} package. % Its option |pagecolor={...}| is used to set the initial |\pagecolor{...}|. % \newline % The command |\thepagecolornone| gives the same color as |\thepagecolor|, % except when the page background color is % \textquotedblleft|none|\textquotedblright (e.\,g. result of using the % |\nopagecolor| command). In that case |\thepagecolor| is |white| and % |\thepagecolornone| is |none|. % When |\nopagecolor| is unknown or in case of the \xpackage{crop} package % broken, this package provides a replacement depending on option |nopagecolor|. % Commands to change the background/outer/physical page color when using % \xpackage{crop} are provided. Similar to |\newgeometry| and |\restoregeometry| % of the \xpackage{geometry} package |\newpagecolor{<|\textit{some color}|>}| % and |\restorepagecolor| are provided.\\ % For use with the \xpackage{crop} package |\backgroundpagecolor{<|\textit{some color}|>}| % as well as |\newbackgroundpagecolor{<|\textit{some color}|>}| and % |\restorebackgroundpagecolor| are provided. % % \section{Usage} % \indent Just load the package placing % \begin{quote} % |\usepackage[<|\textit{options}|>]{pagecolor}| % \end{quote} % \noindent in the preamble of your \LaTeXe{} source file. % This should be done before another package uses |\pagecolor|. % Afterwards |\pagecolor{...}| can be used to change the page (background) % color as usual. Then |\thepagecolor| gives the current page (background) % color (in the same format as given with |\pagecolor{...}|).\\ % Similar to |\newgeometry| and |\restoregeometry| of the \xpackage{geometry} % package\\ % |\newpagecolor{<|\textit{some color}|>}| and |\restorepagecolor| % are provided:\\ % |\newpagecolor{<|\textit{some color}|>}| will execute % |\pagecolor{<|\textit{some color}|>}| and remember the page color used before. % |\restorecolor| (without argument) restores the page color to the one used before % use of the |\newpagecolor{...}| command. When you want to change the color for % just one page and do not want to (or cannot) manually determine where that page ends,\\ % |\newpagecolor{<|\textit{some color}|>}\afterpage{\restorepagecolor}|\\ % does the trick (and requires a |\usepackage{afterpage}| in the document's % preamble), or for short % % \newpage % % \noindent|\newcommand{\onepagecolor}[1]{%|\\ % | \newpagecolor{#1}\afterpage{\restorepagecolor}}|\\ % in the preamble and |\onepagecolor{<|\textit{some color}|>}| in the document.\\ % When the \xpackage{crop} package is used, |\backgroundpagecolor{<|\textit{some color}|>}| % can be used to change the background/outer/physical page color and\\ % |\newbackgroundpagecolor{<|\textit{some color}|>}%|\\ % |\afterpage{\restorebackgroundpagecolor}%|\\ % for changing just one background/outer/physical page color. % There is \textbf{no} special command |\nobackgroundpagecolor|, % but |\backgroundpagecolor{none}| and |\backgroundpagecolor{white}| can be used. % % \subsection{Options} % \DescribeMacro{options} % \indent The \xpackage{pagecolor} package takes the following options: % % \subsubsection{pagecolor} % \DescribeMacro{pagecolor} % \indent The option |pagecolor={...}| takes as value a color. This % could be as simple as |black| or |white|, but when \hbox{e.\,g. the} % \xpackage{xcolor} package is used (loaded before \xpackage{pagecolor}!), % also colors like |red!50!green!20!blue| are possible. % The default is |pagecolor={none}|. A |\pagecolor{...}| command with % the given color is used to initialise the pagecolor. % % % \subsubsection{nopagecolor} % \DescribeMacro{nopagecolor} % \indent The option |nopagecolor={...}| takes as value a color. This % could be as simple as |white| or |black|, but when \hbox{e.\,g. the} % \xpackage{xcolor} package is used (loaded before \xpackage{pagecolor}!), % also colors like |red!50!green!20!blue| are possible. % The default is |nopagecolor={none}|. When |\nopagecolor| is unknown % or broken \hbox{(e.\,g.} \xpackage{crop} package) % |\nopagecolor| is replaced by a |\pagecolor| command % using the color defined with the |nopagecolor| option. % If |\nopagecolor| is not available and |nopagecolor| is |none|, % it is used |white| instead of |none|. % % \section{Alternatives\label{s:Alternatives}} % % As I neither know what exactly you want to accomplish % when using this package (e.\,g.~hiding text), nor what resources you have % (e.\,g.~\pdfTeX{} version), here is a list of possible alternatives:\\ % % \begin{description} % \item[-] \xpackage{transparent} package: With it some object can be made % (fully or partially) transparent, % \url{https://ctan.org/pkg/transparent}. % % \item[-] OCG (Optional Content Groups): It allows for example % to \textquotedblleft hide\textquotedblright{} something when % printing the document while keeping the layout, % \url{https://ctan.org/search?phrase=ocg}. % \end{description} % % \bigskip % % \noindent You programmed or found another alternative, % which is available at \url{https://www.CTAN.org/}? % OK, send an e-mail to me with the name, location at CTAN, % and a short notice, and I will probably include it in the list above. % % \newpage % % \section{Example} % \begin{macrocode} %<*example> \NeedsTeXFormat{LaTeX2e}[2022-11-01] \documentclass[british]{article}[2022/07/02]% v1.4n Standard LaTeX document class \usepackage[extension=pdf,% plainpages=false,% pdfpagelabels=true,% hyperindex=false,% pdflang={en},% pdftitle={pagecolor package example},% pdfauthor={H.-Martin Muench},% pdfsubject={Example for the pagecolor package},% pdfkeywords={LaTeX, pagecolor, thepagecolor, page color, page colour},% pdfview=Fit,pdfstartview=Fit,% pdfpagelayout=SinglePage% ]{hyperref}[2023-02-07]% v7.00v Hypertext links for LaTeX \usepackage[x11names]{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK) % The xcolor package would not be needed for just using the base colors. % The color package would be sufficient for that. % \usepackage[cam,center,a3]{crop}[2017/11/19]% 1.10 \usepackage[pagecolor={LightGoldenrod1},% nopagecolor={none}]{pagecolor}[2023-04-18]% v1.2c Provides thepagecolor (HMM) \usepackage{afterpage}[2014/10/28]% v1.08 After-Page Package (DPC) % The afterpage package is generally not needed, % but the |\newpagecolor{somecolor}\afterpage{\restorepagecolor}| % construct shall be demonstrated. \usepackage{lipsum}[2021-09-20]% v2.7 150 paragraphs of Lorem Ipsum dummy text % The lipsum package is generally not needed, % but some blind text is needed for the example. \listfiles \begin{document} \pagenumbering{arabic} \section*{Example for pagecolor} This example demonstrates the use of package\newline \textsf{pagecolor}, v1.2c as of 2023-04-18 (HMM).\newline The used options were\newline \verb|pagecolor={LightGoldenrod1}|\newline (\verb|pagecolor={none}| would be the default), and\newline \verb|nopagecolor={none}| (which is the default). \noindent For more details please see the documentation! \noindent The current page (background) color is\newline \verb|\thepagecolor|\ =\ \thepagecolor \newline (and \verb|\thepagecolornone|\ =\ \thepagecolornone , which would only be different from \verb|\thepagecolor|, when the page color would be \verb|none|). \newpage \pagecolor{rgb:-green!40!yellow,3;green!40!yellow,2;red,1} {\color{white} The current page (background) color is\newline \verb|\thepagecolor|\ =\ \thepagecolor .} {\color{\thepagecolor} And that makes this text practically invisible.} {\color{white} Which made the preceding line of text practically invisible, but it can be copied and pasted.} \newpage \newpagecolor{red} This page uses \verb|\newpagecolor{red}|. \newpage \restorepagecolor {\color{white}And this page uses \verb|\restorepagecolor| to restore the page color to the value it had before the red page.} \newpage \pagecolor{none} This page uses \verb|\pagecolor{none}|. If the \verb|\nopagecolor| command is known, the page color is now \verb|none| (because option \verb|nopagecolor={none}|), otherwise \verb|white| (or the color given with option \verb|nopagecolor={...}|): \newline \verb|\thepagecolor|\ =\ \thepagecolor\ and \verb|\thepagecolornone|\ =\ \thepagecolornone . \newpage \restorepagecolor {\color{white}\verb|\restorepagecolor| restored the page color again.} \newpage \pagecolor{green} This page is green due to \verb|\pagecolor{green}|. \newpage \newpagecolor{blue}\afterpage{\restorepagecolor} {\color{white}\verb|\newpagecolor{blue}\afterpage{\restorepagecolor}|% \newline was used here, i.\,e.~this page is blue, and the next one will automatically have the same page color before it was changed to blue here (i.\,e. green).} \smallskip {\color{red}\textbf{\lipsum[1-11]}} \bigskip The page color was changed back at the end of the page -- in mid-sentence! \newpage \backgroundpagecolor{pink} When activating the loading of the crop package in the preamble of this document, \verb|\backgroundpagecolor{<|\textit{some color}\verb|>}| changes the color of the background/outer/physical page. \newpage \newbackgroundpagecolor{blue} Analogous to \verb|\newpagecolor{...}| and \verb|\restorepagecolor|, for the background/outer/physical page \verb|\newbackgroundpagecolor{<|\textit{some color}\verb|>}| and\linebreak \verb|\restorebackgroundpagecolor| are provided. Here \verb|\newbackgroundpagecolor{blue}| colored that background/outer/physical page in blue (if crop is used). \newpage \restorebackgroundpagecolor And here the pink color of the background/outer/physical page was restored by \verb|\restorebackgroundpagecolor| (if crop is used). \end{document} % % \end{macrocode} % % \StopEventually{} % % \section{The implementation} % We start off by checking that we are loading into \LaTeXe{} and % announcing the name and version of this package. % % \begin{macrocode} %<*package> % \end{macrocode} % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[2022-11-01] \ProvidesPackage{pagecolor}[2023-04-18 v1.2c Provides thepagecolor (HMM)] % \end{macrocode} % % A short description of the \xpackage{pagecolor} package: % % \begin{macrocode} %% Provides the \thepagecolor, \thepagecolornone, \newpagecolor{...}, %% \restorepagecolor, \backgroundpagecolor, \newbackgroundpagecolor{...}, %% and \restorebackgroundpagecolor commands and a replacement for the %% \nopagecolor command, if this is not available. \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2022/11/01}{\relax}{% \PackageError{pagecolor}{Newer LaTeX format needed or older pagecolor package% }{Needed LaTeX format version: 2022-11-01 or newer.\MessageBreak% Found\space\space LaTeX format version: \fmtversion.\MessageBreak% Either update your TeX distribution\MessageBreak% or use an archived version of pagecolor\MessageBreak% (see section History in the documentation).\MessageBreak% } } % \end{macrocode} % % We need the \xpackage{kvoptions} package: % % \begin{macrocode} \RequirePackage{kvoptions}[2022-06-15]% v3.15 Key value format for package options (HO) % \end{macrocode} % % and either the \xpackage{color} or the \xpackage{xcolor} package: % % \begin{macrocode} %% \RequirePackage{ either color or xcolor }: \IfPackageLoadedTF{xcolor}{% xcolor loaded \RequirePackage{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK) }{% xcolor not loaded \IfPackageLoadedTF{color}{% \RequirePackage{color}[2022-01-06]% v1.3d Standard LaTeX Color (DPC) }{\PackageWarningNoLine{pagecolor}{% The pagecolor package must be loaded after either\MessageBreak% package color or after package xcolor (at your\MessageBreak% option). Neither package was loaded before package\MessageBreak% pagecolor. Loading of package xcolor will now be\MessageBreak% tried automatically.\MessageBreak% When the pagecolor package is used with option\MessageBreak% pagecolor using a color requiring e.g. x11names\MessageBreak% option for xcolor package, this will not work% } } \RequirePackage{xcolor}[2022/06/12]% v2.14 LaTeX color extensions (UK) } % \end{macrocode} % % We process the options: % % \begin{macrocode} \SetupKeyvalOptions{family=pagecolor,prefix=pagecolor@} \DeclareStringOption[none]{pagecolor}% \pagecolor@pagecolor \DeclareStringOption[none]{nopagecolor}% \pagecolor@nopagecolor \ProcessKeyvalOptions* % \end{macrocode} % \begin{macro}{\nopagecolor}\label{nopagecolor} % % \verb|\nopagecolor| is nowadays readily available. Let us test nevertheless: % % \begin{macrocode} \ifdefined\nopagecolor\relax \else \PackageNoteNoLine{pagecolor}{\string\nopagecolor\ is undefined} \def\pagecolortmpb{none} \edef\pagecolortmpa{\pagecolor@nopagecolor} \ifx\pagecolortmpa\pagecolortmpb \PackageWarningNoLine{pagecolor}{% Option nopagecolor=none requested but \string\nopagecolor\space unknown:\MessageBreak% By option nopagecolor the "color" to be used with \string\nopagecolor\MessageBreak% is set. The current value is "none" (maybe by default),\MessageBreak% but command \string\nopagecolor\ is undefined.\MessageBreak% Therefore the color cannot be "none".\MessageBreak% Please change the option accordingly! -\MessageBreak% As first aid nopagecolor is now set to white% } \setkeys{pagecolor}{nopagecolor=white} \fi \edef\pagecolortmpa{\pagecolor@pagecolor} \ifx\pagecolortmpa\pagecolortmpb\relax \PackageWarningNoLine{pagecolor}{% Option pagecolor=none (maybe by default) used,\MessageBreak% but \string\nopagecolor\ is unknown.\MessageBreak% Please use another option value;\MessageBreak% \pagecolor@nopagecolor\ will be used now% } \setkeys{pagecolor}{pagecolor={\pagecolor@nopagecolor}} \fi \newcommand{\nopagecolor}{\pagecolor{\pagecolor@nopagecolor}} \fi % \end{macrocode} % \end{macro} % \pagebreak % \begin{macro}{\pagecolor} % We save the original |\pagecolor| command, % \begin{macrocode} \let\origpagecolor\pagecolor % \end{macrocode} % before we redefine it to include a definition of |\thepagecolor| % and \linebreak |\thepagecolornone|: % \begin{macrocode} \renewcommand{\pagecolor}[1]{\@bsphack% \edef\pagecolortmpa{#1}% \def\pagecolortmpb{none}% \ifx\pagecolortmpa\pagecolortmpb\relax% \ifdefined\nopagecolor\relax% \nopagecolor% \else% \PackageWarning{pagecolor}{% pagecolor=none requested but \string\nopagecolor\space unknown:\MessageBreak% \string\pagecolor{none} was used, but the command\MessageBreak% \string\nopagecolor\space is undefined.\MessageBreak% Please use another color.\MessageBreak% pagecolor=\pagecolor@nopagecolor\MessageBreak% will be used now.\MessageBreak% }% \xdef\thepagecolor{\pagecolor@nopagecolor}% \xdef\thepagecolornone{\pagecolor@nopagecolor}% % although it should be "none" \origpagecolor{\pagecolor@nopagecolor}% \fi% \else% \xdef\thepagecolor{#1}% \xdef\thepagecolornone{#1}% \origpagecolor{\thepagecolornone}% \fi% \@esphack% } % \end{macrocode} % \end{macro} % % |\nopagecolor| regularly is defined. If it was not, we already defined a replacement, % see page~\pageref{nopagecolor}. But additionally |\nopagecolor| does not work % if the \xpackage{crop} package is used. A workaround needs to be defined: % \begin{macrocode} \let\orignopagecolor\nopagecolor\relax \gdef\pagecolor@cl{0} \IfPackageLoadedTF{crop}{% crop loaded \gdef\pagecolor@cl{1} \PackageNoteNoLine{pagecolor}{% \string\nopagecolor\space did not work with the crop package\MessageBreak% 2017/11/19 v1.10. Using\MessageBreak% \pagecolor@nopagecolor\MessageBreak% as nopagecolor now% } \def\pagecolortmpb{none} \edef\pagecolortmpa{\pagecolor@nopagecolor} \ifx\pagecolortmpa\pagecolortmpb\relax \PackageWarningNoLine{pagecolor}{% Option nopagecolor=none requested but this does not work with the\MessageBreak% crop package. By option nopagecolor the "color" to be used with\MessageBreak% \string\nopagecolor\ is set. The current value is "none" (maybe by\MessageBreak% default), but the crop package broke \string\nopagecolor .\MessageBreak% Therefore the color cannot be "none".\MessageBreak% Please change the option accordingly!\MessageBreak% As first aid nopagecolor is now set to white% } \setkeys{pagecolor}{nopagecolor=white} \fi \renewcommand{\nopagecolor}{\pagecolor{\pagecolor@nopagecolor}} }{% crop not loaded \ifdefined\nopagecolor\relax \gdef\pagecolortmpa{none} \else \gdef\pagecolortmpa{\pagecolor@nopagecolor} \fi \renewcommand{\nopagecolor}{% \xdef\thepagecolor{white}% \xdef\thepagecolornone{\pagecolortmpa}% \orignopagecolor% } } % \end{macrocode} % The (new) |\pagecolor| is now just carried out. % \begin{macrocode} \pagecolor{\pagecolor@pagecolor} % \end{macrocode} % % Now the page (background) color as well as |\thepagecolor| are\\ % |\pagecolor@pagecolor|. |\thepagecolornone| is |none|, if that color is known, % otherwise it is |\pagecolor@nopagecolor|, and if that was |none| (but that unknown), % it is |white|. If |\pagecolor@pagecolor| was |none|, % the page (background) color is |none|, when known, otherwise % |\pagecolor@nopagecolor|, and if that was |none| (but that unknown), % it is |white|, and |\thepagecolor| is |\pagecolor@nopagecolor|, % and if that was also |none| but |none| unknown, then it is |white|. % When the page (background) color is changed, |\thepagecolor| and % |\thepagecolornone| are changed accordingly. % % \begin{macro}{\newpagecolor} % There have been requests (via e-mail and at % \url{https://tex.stackexchange.com/q/25137/6865}) to change the color of just one % (or two) page(s) only, similar to |\newgeometry| and |\restoregeometry| of the % \xpackage{geometry} package (\url{https://ctan.org/pkg/geometry}). % Therefore |\newpagecolor| and |\restorepagecolor| are introduced (as suggested by % \textsc{haoyun\_tex}): % \begin{macrocode} \newcommand{\newpagecolor}[1]{% \xdef\pagecolortmpc{\thepagecolornone}% \pagecolor{#1}% } % \end{macrocode} % \end{macro} % |\newpagecolor{<|\textit{some color}|>}| will execute |\pagecolor{some color}| % and remember the page color used before. % % \begin{macro}{\restorepagecolor} % \begin{macrocode} \newcommand{\restorepagecolor}{\pagecolor{\pagecolortmpc}} % \end{macrocode} % \end{macro} % |\restorecolor| (without argument) restores the page color to the one used before % use of the |\newpagecolor{...}| command. % % \begin{macrocode} \gdef\pagecolortmpc{\thepagecolor} % \end{macrocode} % is just a precaution for |\restorecolor| being used when no |\newpagecolor{...}| % was used before it. % % When you want to change the color for just one page and do not want to % (or cannot) manually determine where the page ends,\\ % |\newpagecolor{<|\textit{some color}|>}\afterpage{\restorepagecolor}|\\ % does the trick (and requires an additional |\usepackage{afterpage}| in the % document's preamble). % % \begin{macro}{\backgroundpagecolor} % When the \xpackage{crop} package has been loaded, the background/outer/physical page color % is determined by the last |\pagecolor{...}| in the preamble after \newline % |\usepackage[...]{crop}| and cannot be changed in the document. When the |\pagecolor{...}| % is given before |\usepackage[...]{crop}|, a |\nopagecolor| works at the % background/outer/physical page and not at the inner/foreground/logic page. % |\nopagecolor| is fixed above. To change the background/outer/physical page color % during the document, |\backgroundpagecolor{<|\textit{some color}|>}| is provided: % \begin{macrocode} \newcommand{\backgroundpagecolor}[1]{% \IfPackageLoadedTF{crop}{% % \end{macrocode} % Remember current inner/foreground/logic page color: % \begin{macrocode} \xdef\pagecolortmpd{\thepagecolor}% % \end{macrocode} % Set inner/foreground page color to color whished for background/\allowbreak outer/\allowbreak % physical page color: % \begin{macrocode} \pagecolor{#1}% % \end{macrocode} % Get that color, for example, |\pagecolor{blue}| might result in |\CROP@pagecolor| % to be |0 0 1 rg 0 0 1 RG|: % \begin{macrocode} \xdef\pagecolortmpe{\CROP@pagecolor}% % \end{macrocode} % Set the inner/foreground/logic page color back to the color before changing it: % \begin{macrocode} \pagecolor{\pagecolortmpd}% % \end{macrocode} % Set the background/outer/physical page color: % \begin{macrocode} \xdef\CROP@stockcolor{\pagecolortmpe}% }{\PackageInfo{pagecolor}{\string\backgroundpagecolor\space does not do\MessageBreak% anything when the crop package has not been loaded;\MessageBreak}% % \end{macrocode} % - except giving this information. % \begin{macrocode} }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\newbackgroundpagecolor} % Analogous to |\newpagecolor| and |\restorepagecolor|, % for the background/\allowbreak outer/\allowbreak physical page we define: % \begin{macrocode} \newcommand{\newbackgroundpagecolor}[1]{% \IfPackageLoadedTF{crop}{% \xdef\pagecolortmpf{\CROP@stockcolor}% \backgroundpagecolor{#1}% }{\PackageInfo{pagecolor}{\string\newbackgroundpagecolor\space does not do\MessageBreak% anything when the crop package has not been loaded;\MessageBreak}% }% } % \end{macrocode} % \end{macro} % \begin{macro}{\restorebackgroundpagecolor} % \begin{macrocode} \newcommand{\restorebackgroundpagecolor}{% \IfPackageLoadedTF{crop}{\xdef\CROP@stockcolor{\pagecolortmpf}}{% \PackageInfo{pagecolor}{\string\newbackgroundpagecolor\space does not do\MessageBreak% anything when the crop package has not been loaded;\MessageBreak}}% } % \end{macrocode} % \end{macro} % % We checked whether the \xpackage{crop} package had been loaded before % the \xpackage{pagecolor} package, but maybe it has been loaded afterwards. % This is checked at the end of |\begin{document}|: % \begin{macrocode} \AddToHook{begindocument/end}{% \def\pagecolortmpb{0}% \ifx\pagecolor@cl\pagecolortmpb\relax% % crop not loaded before pagecolor, but maybe afterwards: \IfPackageLoadedTF{crop}{% crop indeed loaded afterwards. \gdef\pagecolor@cl{1}% \PackageInfo{pagecolor}{\string\nopagecolor\space did not work with the crop package\MessageBreak% 2017/11/19 v1.10. Using\MessageBreak% \pagecolor@nopagecolor\MessageBreak% as nopagecolor now.\MessageBreak% }% \def\pagecolortmpb{none}% \edef\pagecolortmpa{\pagecolor@nopagecolor}% \ifx\pagecolortmpa\pagecolortmpb\relax% \PackageWarningNoLine{pagecolor}{% Option nopagecolor=none requested but this does not work with\MessageBreak% the crop package. By option nopagecolor the "color" to be used\MessageBreak% with \string\nopagecolor\space is set. The current value is "none"\MessageBreak% (maybe by default), but the crop package broke\MessageBreak% \string\nopagecolor . Therefore the color cannot be "none".\MessageBreak% Please change the option accordingly!\MessageBreak% As first aid nopagecolor is now set to white% }% \setkeys{pagecolor}{nopagecolor=white}% \fi% \renewcommand{\nopagecolor}{\pagecolor{\pagecolor@nopagecolor}}% }{% crop neither loaded afterwards. }% \fi% } % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \section{Installation} % \subsection{Downloads} % Everything is available at \url{https://ctan.org}, % but may need additional packages themselves.\\ % % \DescribeMacro{pagecolor.dtx} % For unpacking the |pagecolor.dtx| file and constructing the documentation % it is required: % \begin{description} % \item[-] \TeX-format \LaTeXe{} 2022-11-01 or newer: \url{https://www.CTAN.org/} % % \item[-] document class \xclass{ltxdoc}, 2022/06/22, v2.1i, % \url{https://ctan.org/pkg/ltxdoc} % % \item[-] package \xpackage{holtxdoc}, 2019/12/09, v0.30, % \url{https://ctan.org/pkg/holtxdoc} % \end{description} % % \DescribeMacro{pagecolor.sty} % The |pagecolor.sty| for \LaTeXe{} (i.\,e.~each document using % the \xpackage{pagecolor} package) requires: % \begin{description} % \item[-] \TeX{}-format \LaTeXe{} 2022-11-01 or newer, \url{https://www.CTAN.org/} % % \item[-] package \xpackage{kvoptions}, 2022-06-15, v3.15, % \url{https://ctan.org/pkg/kvoptions} % % \item[-] package \xpackage{pagecolor}, 2023-04-18, v1.2c, % \url{https://ctan.org/pkg/pagecolor}\\ % (Because you are reading the documentation for the % \xpackage{pagecolor} package, it can be assumed that you already % have some version of it~-- is it the current one?) % \end{description} % and either % \begin{description} % \item[-] package \xpackage{xcolor}, 2022/06/12, v2.14, % \url{https://ctan.org/pkg/xcolor} % \end{description} % or % \begin{description} % \item[-] package \xpackage{color}, 2022-01-06, v1.3d, % \url{https://ctan.org/pkg/color} (from the\\ % \xpackage{graphics} package bundle). % \end{description} % % \DescribeMacro{pagecolor-example.tex} % The |pagecolor-example.tex| requires the same files as all % documents using the \xpackage{pagecolor} package % (see preceding paragraph |pagecolor.sty|) and additionally: % \begin{description} % \item[-] class \xpackage{article}, 2022/07/02, v1.4n, from \xpackage{classes}:\\ % \url{https://ctan.org/pkg/classes} % % \item[-] package \xpackage{xcolor}, 2022/06/12, v2.14, % \url{https://ctan.org/pkg/xcolor}\\ % This package would not be needed for the use of just base colors only, % the \xpackage{color} package would be sufficient for that. % % \item[-] package \xpackage{afterpage}, 2014/10/28, v1.08, % \url{https://ctan.org/pkg/afterpage}\\ % This package is only needed for demonstrating the\\ % |\newpagecolor{somecolor}\afterpage{\restorepagecolor}| construct. % % \item[-] package \xpackage{lipsum}, 2021-09-20, v2.7, % \url{https://ctan.org/pkg/lipsum}\\ % This package is only needed for some blind text. % \end{description} % % \DescribeMacro{Alternatives} % \DescribeMacro{transparent} % \DescribeMacro{OCG} % As possible alternatives in section~\ref{s:Alternatives}, Alternatives, % there are listed (newer versions might be available): % \begin{description} % \item[-] package \xpackage{transparent}, 2022-10-27, v1.5,\\ % \url{https://ctan.org/pkg/transparent} % % \item[-] OCG (Optional Content Groups),\\ % \url{https://ctan.org/search?phrase=ocg} % \end{description} % % \DescribeMacro{Oberdiek} % \DescribeMacro{holtxdoc} % \DescribeMacro{kvoptions} % All packages of the `oberdiek' bundle % (especially \xpackage{holtxdoc} and \xpackage{kvoptions}) % are also available in a TDS compliant ZIP archive:\\ % \url{https://mirror.ctan.org/install/macros/latex/contrib/oberdiek.tds.zip}.\\ % It is probably best to download and use this, because the packages in there % are quite probably both recent and compatible among themselves.\\ % % \DescribeMacro{hyperref} % \noindent \xpackage{hyperref} is not included in that bundle and needs to be % downloaded separately,\\ % \url{https://mirror.ctan.org/install/macros/latex/contrib/hyperref.tds.zip}.\\ % % \DescribeMacro{Münch} % A hyperlinked list of my (other) packages can be found at % \url{https://ctan.org/author/muench-hm}.\\ % % \subsection{Package, unpacking TDS} % \paragraph{Package.} This package is available on \url{https://www.CTAN.org}. % \begin{description} % \item[\url{https://mirror.ctan.org/macros/latex/contrib/pagecolor/pagecolor.dtx}]\hspace*{0.1cm} % The source file. % \item[\url{https://mirror.ctan.org/macros/latex/contrib/pagecolor/pagecolor.pdf}]\hspace*{0.1cm} % The documentation. % \item[\url{https://mirror.ctan.org/macros/latex/contrib/pagecolor/pagecolor-example.pdf}]\hspace*{0.1cm} % The compiled example file, as it should look like. % \item[\url{https://mirror.ctan.org/macros/latex/contrib/pagecolor/README}]\hspace*{0.1cm}\\ % \hspace*{1em}The README file. % \end{description} % % There is also a |pagecolor.tds.zip| available: % \begin{description} % \item[\url{https://mirror.ctan.org/install/macros/latex/contrib/pagecolor.tds.zip}]\hspace*{0.1cm} % Everything in TDS compliant, compiled format. % \end{description} % which additionally contains\\ % \begin{tabular}{ll} % pagecolor.ins & The installation file.\\ % pagecolor.drv & The driver to generate the documentation.\\ % pagecolor.sty & The \xext{sty}le file.\\ % pagecolor-example.tex & The example file. % \end{tabular} % % \bigskip % % \noindent For required other packages please see the preceding subsection. % % \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting % \docstrip{} archive. The files are extracted by running the % \xext{.dtx} through \plainTeX{}: % \begin{quote} % \verb|tex pagecolor.dtx| % \end{quote} % % About generating the documentation see paragraph~\ref{GenDoc} below.\\ % % \paragraph{TDS.} Now the different files must be moved into % the different directories in your installation TDS tree % (also known as \xfile{texmf} tree): % \begin{quote} % \def\t{^^A % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pagecolor.sty & tex/latex/pagecolor/pagecolor.sty\\ % pagecolor.pdf & doc/latex/pagecolor/pagecolor.pdf\\ % pagecolor-example.tex & doc/latex/pagecolor/pagecolor-example.tex\\ % pagecolor-example.pdf & doc/latex/pagecolor/pagecolor-example.pdf\\ % pagecolor.dtx & source/latex/pagecolor/pagecolor.dtx\\ % \end{tabular}^^A % }^^A % \sbox0{\t}^^A % \ifdim\wd0>\linewidth % \begingroup % \advance\linewidth by\leftmargin % \advance\linewidth by\rightmargin % \edef\x{\endgroup % \def\noexpand\lw{\the\linewidth}^^A % }\x % \def\lwbox{^^A % \leavevmode % \hbox to \linewidth{^^A % \kern-\leftmargin\relax % \hss % \usebox0 % \hss % \kern-\rightmargin\relax % }^^A % }^^A % \ifdim\wd0>\lw % \sbox0{\small\t}^^A % \ifdim\wd0>\linewidth % \ifdim\wd0>\lw % \sbox0{\footnotesize\t}^^A % \ifdim\wd0>\linewidth % \ifdim\wd0>\lw % \sbox0{\scriptsize\t}^^A % \ifdim\wd0>\linewidth % \ifdim\wd0>\lw % \sbox0{\tiny\t}^^A % \ifdim\wd0>\linewidth % \lwbox % \else % \usebox0 % \fi % \else % \lwbox % \fi % \else % \usebox0 % \fi % \else % \lwbox % \fi % \else % \usebox0 % \fi % \else % \lwbox % \fi % \else % \usebox0 % \fi % \else % \lwbox % \fi % \else % \usebox0 % \fi % \end{quote} % If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's % TDS installing feature, then some files can already be in the right % place, see the documentation of \docstrip{}. % % \subsection{Refresh file name databases} % % If your \TeX~distribution (\TeX\,Live, \mikTeX, \dots) relies on % file name databases, you must refresh these. For example, \TeX\,Live\ users % run \verb|texhash| or \verb|mktexlsr|. % % \subsection{Some details for the interested} % % \paragraph{Unpacking with \LaTeX{}.} % The \xfile{.dtx} chooses its action depending on the format: % \begin{description} % \item[\plainTeX:] Run \docstrip{} and extract the files. % \item[\LaTeX:] Generate the documentation. % \end{description} % If you insist on using \LaTeX{} for \docstrip{} (really, % \docstrip{} does not need \LaTeX ), then inform the autodetect routine % about your intention: % \begin{quote} % \verb|latex \let\install=y\input{pagecolor.dtx}| % \end{quote} % Do not forget to quote the argument according to the demands % of your shell. % % \paragraph{Generating the documentation.\label{GenDoc}} % You can use both the \xfile{.dtx} or the \xfile{.drv} to generate % the documentation. The process can be configured by a % configuration file \xfile{ltxdoc.cfg}. For instance, put the following % line into this file, if you want to have A4 as paper format: % \begin{quote} % \verb|\PassOptionsToClass{a4paper}{article}| % \end{quote} % % \noindent An example follows how to generate the % documentation with \pdfLaTeX : % % \begin{quote} %\begin{verbatim} %pdflatex pagecolor.dtx %makeindex -s gind.ist pagecolor.idx %pdflatex pagecolor.dtx %makeindex -s gind.ist pagecolor.idx %pdflatex pagecolor.dtx %\end{verbatim} % \end{quote} % % \subsection{Compiling the example} % % The example file, \textsf{pagecolor-example.tex}, can be compiled via\\ % |(pdf)latex pagecolor-example.tex|\\ % and needs at least two compilation runs. % % \section{Acknowledgements} % % I would like to thank \textsc{Heiko Oberdiek} for providing a lot of % useful packages (from which I also got everything I know about creating % a file in \xext{dtx} format, ok, say it: copying), and the % \Newsgroup{comp.text.tex} and \Newsgroup{de.comp.text.tex} newsgroups % for their help in all things \TeX{}, especially all contributors to the % discussion at % \url{https://groups.google.com/g/comp.text.tex/c/UzV26-RNYPY}% % \ (\textsc{H.~Oberdiek} \& \textsc{Gouailles}).\\ % I thank \textsc{haoyun\_tex} for suggesting the |\newpagecolor|/|\restorepagecolor| % pair of commands and everyone at \url{https://tex.stackexchange.com/q/25137/6865} % for their contributions there. Thanks go to \textsc{Heiner Richter} % for finding a bug, to \textsc{Johannes Böttcher} for reporting it, % and to \textsc{Reuben Thomas} for suggestions for improvements % of this documentation. % % \phantomsection % \begin{History}\label{History} % \begin{Version}{2011/07/16 v1.0a} % \item First version discussed at \Newsgroup{comp.text.tex}. % \end{Version} % \begin{Version}{2011/08/06 v1.0b} % \item Changed version uploaded to the CTAN. % \end{Version} % \begin{Version}{2011/08/08 v1.0c} % \item Fixed a |\setkeys|. % \end{Version} % \begin{Version}{2012/02/01 v1.0d} % \item Bugfix: Obsolete installation path given in the documentation, updated. % \item New commands: |\newpagecolor{...}|, |\restorepagecolor|. % \item Update of documentation, README, and \xfile{dtx} internals. % \end{Version} % \begin{Version}{2012/02/23 v1.0e} % \item Fixed an error in the documentation. % \item Check for loading of \xpackage{color} or \xpackage{xcolor} package % and their versions has been changed, because \xpackage{xcolor} sets\\ % |\@namedef{ver@color.sty}{1999/02/16}|\\ % which gave a warning about old \xpackage{color} package even if a new % version was used. % \end{Version} % \begin{Version}{2015/06/21 v1.0f} % \item Fixed the urls in the documentation. % \item Handle |\nopagecolor| when it is not defined or broken by \xpackage{crop}, % new option |nopagecolor| introduced. % \item Update of documentation, README, and \xfile{dtx} internals. % \end{Version} % \begin{Version}{2015/06/22 v1.0g} % \item Replaced all error messages by warnings. % \end{Version} % \begin{Version}{2015/08/30 v1.0h} % \item Bugfix: Checking for \xpackage{crop} package done |\AtBeginDocument|, % but some of the related code must already be performed earlier. % Bug found by \textsc{Heiner Richter} and reported by % \textsc{Johannes Böttcher}, thanks! % \end{Version} % \begin{Version}{2017/05/29 v1.0i} % \item Documentation update following suggestions for improvements by % \textsc{Reuben Thomas}, thanks! % \item This version has been archived at\\ % \url{https://web.archive.org/web/20220120221237/https://mirror.ctan.org/install/macros/latex/contrib/pagecolor.tds.zip} % \end{Version} % \begin{Version}{2022-11-20 v1.1a} % \item Replaced all |colour| (with |u|) by |color| (without |u|). % \item Converted to UTF-8. % \item Updated to \LaTeX{} format 2021-11-15. % \item Corrected an error in the example. % \item \XeLaTeX{} and others now do know |\nopagecolor|. % \item Package \xpackage{crop} has been updated, but |\nopagecolor| % still applies to the physical background sheet instead of the logical foreground area. % \item Now using the \xpackage{hardwrap} package. [Removed in v1.2c again.] % \end{Version} % \begin{Version}{2022-11-27 v1.2a} % \item Now also handling the background/outer/physical page color, % when the \xpackage{crop} package is used. % \end{Version} % \begin{Version}{2023-02-14 v1.2b} % \item Example now also handling |\newbackgroundpagecolor| and |\restorebackgroundpagecolor| % when the \xpackage{crop} package is used. % \item Fixed a missing |v| in the version number. % \end{Version} % \begin{Version}{2023-04-18 v1.2c} % \item No longer using the \xpackage{hardwrap} package. % \item Bug fix: There was an |undolabl| where a |pagecolor| belongs. % \item Documentation and README updates. % \end{Version} % \end{History} % % \bigskip % % When you find a mistake or have a suggestion for an improvement of this package, % please send an e-mail to the maintainer, thanks! (Please see BUG REPORTS in the README.) % % \newpage % % \PrintIndex % % \Finale \endinput