% \iffalse meta-comment % % Copyright 2006, 2020 % Sergio Callegari % % --------------------------------------------- % This file is part of the flippdf package, % a contribution to the LaTeX2e system. % --------------------------------------------- % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, version 1.3c. % This license is in % https://www.latex-project.org/lppl/lppl-1-3c/ % and is part of all distributions of LaTeX later than % 2008-05-04. % % This work has the LPPL maintenance status "maintained". % % This program consists of the files listed in the README.md file % included in the package. % %<*driver> \documentclass{ltxdoc} \usepackage{mathptmx} \usepackage[scaled=0.92]{helvet} \usepackage{hologo} \usepackage[T1]{fontenc} \usepackage{hypdoc} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{flippdf.dtx} \end{document} % % % \fi % % \DoNotIndex{\NeedsTeXFormat, \documentclass} % \DoNotIndex{\begin, \end} % \DoNotIndex{\def, \gdef, \let, \newcommand} % \DoNotIndex{\ProvidesPackage, \RequirePackage, \usepackage, \PackageError} % \DoNotIndex{\DeclareOption, \ProcessOptions} % \DoNotIndex{\ifx, \fi, \newif, \else} % \DoNotIndex{\paperwidth, \space, \strip@pt} % \DoNotIndex{\maketitle, \title, \lipsum} % \DoNotIndex{\thispagestyle, \relax, \setcounter, \Large, \clearpage, \bigskip} % \DoNotIndex{\@ifundefined, \AtBeginDocument, \endinput, \MessageBreak} % \DoNotIndex{\PackageWarningNoLine} % \CheckSum{86} % % \def\filename{flippdf.dtx} % \def\fileversion{2.0b} % \def\filedate{2020/10/27} % \def\docdate{2020/10/27} % % \newcommand*{\Lpack}[1]{\textsf {#1}} ^^A typeset a package % \newcommand*{\Lopt}[1]{\textsf {#1}} ^^A typeset an option % \newcommand*{\file}[1]{\texttt {#1}} ^^A typeset a file % \newcommand*{\Lcount}[1]{\textsl {\small#1}} ^^A typeset a counter % \newcommand*{\pstyle}[1]{\textsl {#1}} ^^A typeset a pagestyle % \newcommand*{\Lenv}[1]{\texttt {#1}} ^^A typeset an environment % % \title{The \Lpack{flippdf} package\thanks{This file % (\texttt{\filename}) has version number \fileversion, last % revised \filedate.}} % % \author{% % Sergio Callegari\thanks{Sergio Callegari can be reached at % \texttt{sergio.callegar at gmail dot com}}} % % \date{\docdate} % % \maketitle % % \begin{abstract} % The \Lpack{pdfflip} package extends \hologo{pdfLaTeX} and % \hologo{LuaLaTeX} making it possible to typeset a ``mirrored'' version % of the document. This is sometimes required by publishers who use % photographic printing processes that need ``camera-ready'' documents % to be printable on transparent films, so that one reads the pages % correctly by looking \emph{through} the film with the \emph{unprinted} % side of the film towards his eyes. This package requires % \Lpack{everypage} by the same author and works exclusively with % \hologo{pdfLaTeX} and \hologo{LuaLaTeX} in PDF output mode. % \end{abstract} % % \section{Introduction} % % This \LaTeX\ package makes it possible to typeset a document flipping % its pages horizontally. This is sometimes required by publishers who use % photographic printing process that need ``camera-ready'' documents to be % printable on transparent films, so that one reads the pages correctly by % looking \emph{through} the film (i.e., with the \emph{unprinted} side of % the film towards his eyes). % % It is also possible to activate the mirroring capability on a page % by page basis. % % This package requires \Lpack{everypage} by the same author and works % exclusively with \hologo{pdfLaTeX} and \hologo{LuaLaTeX} in PDF output % mode. % % \section{User interface} % By default, once loaded as: % \begin{quote} % |\usepackage{pdfflip}| % \end{quote} % the \Lpack{pdfflip} becomes immediately \emph{active} (i.e., starts % flipping horizontally every page). Conversely, by selecting the % \Lopt{off} option as in % \begin{quote} % |\usepackage[off]{pdfflip}| % \end{quote} % The package is loaded but remains inactive. % % \DescribeMacro{\FlipPDF} The |\FlipPDF| command lets one switch on page % flipping. Conversely, \DescribeMacro{\UnFlipPDF}|\UnFlipPDF| switches % off page flipping. % % % \section{Examples} % \subsection{Plain case} % In this example, every page of the document is flipped, relying on the % automatic operation mode of the package. % \iffalse %<*test-1> % \fi % \begin{macrocode} \documentclass[a4paper]{article} \usepackage{flippdf} \usepackage{lipsum} \title{Test document for the flippdf package} \begin{document} \maketitle \lipsum[1-5] \end{document} % \end{macrocode} % \iffalse % % \fi % % \subsection{Case with activation and deactivation} % In this example, the page flipping is manually activated and deactivated. % \iffalse %<*test-2> % \fi % \begin{macrocode} \documentclass[a4paper]{article} \usepackage[off]{flippdf} \usepackage{lipsum} \title{Test document for the flippdf package} \begin{document} \thispagestyle{empty} {\Large Some non-mirrored initial info} \bigskip \lipsum[1] \maketitle \setcounter{page}{1} \FlipPDF \lipsum[2-6] \clearpage \UnFlipPDF \thispagestyle{empty} {\Large Some non-mirrored final info} \bigskip \lipsum[7] \end{document} % \end{macrocode} % \iffalse % % \fi % % \section{Package redesign} % % Until Fall 2020, \Lpack{flippdf} relied on package \Lpack{everypage} for % its operation. Recently, functionalities similar to those offered by % \Lpack{everypage} have been incorporated into \hologo{LaTeX} and % \Lpack{everypage} has been deprecated, maintaining support for it just % in view of compatibility for legacy packages still relying on it. As a % consequence, \Lpack{flippdf} has been redesigned to take advantage of the % new \hologo{LaTeX} features and to drop the dependence on % \Lpack{everypage}. % % Version 2.0 of \Lpack{flippdf} is the result of the redesign. Version % 1.x remains availabe las \Lpack{flippdf-1x} and modern \Lpack{flippdf} % knows how to fallback on it when used on a \hologo{LaTeX} format missing % the new features. % % \StopEventually {} % % \section{Implementation} % % \subsection{Implementation of \Lpack{flippdf}} % % \iffalse %<*flippdf> % \fi % \changes{R2.0}{2020/10/18}{Use modern \hologo{LaTeX} features.}% % Announce the name and version of the package, that requires % \hologo{LaTeX2e} (actually \hologo{pdfLaTeX} or \hologo{LuaLaTeX}). % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{flippdf}% [2020/10/27 R2.0b Horizontal flipping of pages with pdfLaTeX] % \end{macrocode} % \changes{R2.0b}{2020/10/27}{Assure that options are passed to % \Lpack{flippdf-1x} when the old code is used.} % Depending on the actual functionalities provided by \hologo{LaTeX} % consider loading \Lpack{flippdf-1x}. If so doing, warn about this, % and hand over the operation to that package. % \begin{macrocode} \@ifundefined{AddToHook}{% \PackageWarningNoLine{flippdf}{% You appear to be running a version of LaTeX\MessageBreak unsupported by current flippdf.\MessageBreak Forcing fallback to `flippdf-1x` that\MessageBreak uses an older code base}% \RequirePackageWithOptions{flippdf-1x}% \endinput}{} % \end{macrocode} % State package requirements, including \Lpack{iftex} % \begin{macrocode} \RequirePackage{iftex} % \end{macrocode} % Error out if not working in PDF mode % \begin{macrocode} \AtBeginDocument{% \ifpdf \relax \else \PackageError{flippdf}{% package only works in pdf output mode.}% \fi} % \end{macrocode} % % \begin{macro}{\if@sc@flippdf} % Define a boolean variable to remember if pages are to be flipped or % not. % \begin{macrocode} \newif\if@sc@flippdf % \end{macrocode} % \end{macro} % % \begin{macro}{\FlipPDF}\begin{macro}{\UnFlipPDF} % Define the commands used to switch on and off the horizontal % flipping of the document pages. % \begin{macrocode} \newcommand\FlipPDF{\@sc@flippdftrue} \newcommand\UnFlipPDF{\@sc@flippdffalse} % \end{macrocode} % \end{macro}\end{macro} % % By default activate the flipping: % \begin{macrocode} \FlipPDF % \end{macrocode} % % Set up the processing of options: % \begin{macrocode} \DeclareOption{off}{\UnFlipPDF} \ProcessOptions % \end{macrocode} % % And eventually, tell \hologo{LaTeX} to flip every page, by using the % \Lpack{everypage} hook. First consider the case when running in % \hologo{pdfLaTeX} % \begin{macrocode} \ifpdftex \AddToHook{shipout/background}{% \if@sc@flippdf \pdfliteral direct {-1 0 0 1 \strip@pt\paperwidth\space 0 cm}% \fi}% \fi % \end{macrocode} % Then consider the case when running in \hologo{LuaLaTeX} % \changes{R1.1}{2020/10/17}{Extend package to work also with % \hologo{LuaLaTeX}.} % \begin{macrocode} \ifluatex \AddToHook{shipout/background}{% \if@sc@flippdf \pdfextension literal direct {% -1 0 0 1 \strip@pt\paperwidth\space 0 cm}% \fi}% \fi % \end{macrocode} % \iffalse % % \fi % \subsection{Implementation of \Lpack{flippdf-1x}} % \iffalse %<*flippdf-1x> % \fi % Announce the name and version of the package, that requires % \hologo{LaTeX2e} (actually \hologo{pdfLaTeX} or \hologo{LuaLaTeX}). % \changes{R1.0b}{2020/10/11}{% % Require \Lpack{everypage} package to be at least at its 2007/06/20 (R1.1) % release.} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{flippdf-1x}% [2020/10/17 1.1 Horizontal flipping of pages with pdfLaTeX] % \end{macrocode} % % Assure that the dependence on \Lpack{everypage} is satisfied. % \begin{macrocode} \RequirePackage{everypage}[2007/06/20] % \end{macrocode} % % Depend on \Lpack{iftex} and error out if not working in PDF mode % \changes{R1.1}{2020/10/17}{Error out if output mode is not PDF.}% % \begin{macrocode} \RequirePackage{iftex} \AtBeginDocument{% \ifpdf \relax \else \PackageError{flippdf}{% package only works in pdf output mode}% \fi} % \end{macrocode} % % \begin{macro}{\if@sc@flippdf} % Define a boolean variable to remember if pages are to be flipped or % not. % \begin{macrocode} \newif\if@sc@flippdf % \end{macrocode} % \end{macro} % % \begin{macro}{\FlipPDF}\begin{macro}{\UnFlipPDF} % Define the commands used to switch on and off the horizontal % flipping of the document pages. % \begin{macrocode} \newcommand\FlipPDF{\@sc@flippdftrue} \newcommand\UnFlipPDF{\@sc@flippdffalse} % \end{macrocode} % \end{macro}\end{macro} % % By default activate the flipping: % \begin{macrocode} \FlipPDF % \end{macrocode} % % Set up the processing of options: % \begin{macrocode} \DeclareOption{off}{\UnFlipPDF} \ProcessOptions % \end{macrocode} % % And eventually, tell \LaTeX\ to flip every page, by using the % \Lpack{everypage} hook. First consider the case when running in % \hologo{pdfLaTeX} % \begin{macrocode} \ifpdftex \AddEverypageHook{% \if@sc@flippdf \pdfliteral direct {-1 0 0 1 \strip@pt\paperwidth\space 0 cm}% \fi}% \fi % \end{macrocode} % Then consider the case when running in \hologo{LuaLaTeX} % \changes{R1.1}{2020/10/17}{Extend package to work also with % \hologo{LuaLaTeX}.} % \begin{macrocode} \ifluatex \AddEverypageHook{% \if@sc@flippdf \pdfextension literal direct {% -1 0 0 1 \strip@pt\paperwidth\space 0 cm}% \fi}% \fi % \end{macrocode} % \iffalse % % \fi % % \Finale % \PrintChanges % \PrintIndex % % \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 \~} \endinput % %% Local Variables: % %% mode: doctex % %% TeX-master: t % %% End: