From 7f60206420bf17ee49721e3ea3bddc11834c37b1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 29 Oct 2022 19:49:11 +0000 Subject: pdflscape (29oct22) git-svn-id: svn://tug.org/texlive/trunk@64851 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/pdflscape/README.md | 12 +- .../texmf-dist/doc/latex/pdflscape/pdflscape.pdf | Bin 299397 -> 323238 bytes .../source/latex/pdflscape/pdflscape.dtx | 129 +++++++---- .../tex/latex/pdflscape/pdflscape-nometadata.sty | 253 +++++++++++++++++++++ .../texmf-dist/tex/latex/pdflscape/pdflscape.sty | 249 +++----------------- Master/tlpkg/libexec/ctan2tds | 1 + 6 files changed, 380 insertions(+), 264 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty diff --git a/Master/texmf-dist/doc/latex/pdflscape/README.md b/Master/texmf-dist/doc/latex/pdflscape/README.md index 89416f1b8da..bdbec6af7aa 100644 --- a/Master/texmf-dist/doc/latex/pdflscape/README.md +++ b/Master/texmf-dist/doc/latex/pdflscape/README.md @@ -1,10 +1,16 @@ -# pdflscape - -pdflscape package for LaTeX +# pdflscape package for LaTeX +Version: 2022-10-28 v0.13 Package pdflscape adds PDF support to the environment landscape of package lscape by setting the PDF page attribute /Rotate. +% Copyright (C) +% 2001, 2004, 2006-2008 Heiko Oberdiek +% 2016-2022 Oberdiek Package Support Group +% https://github.com/ho-tex/pdflscape/issues + +## License +LATEX Project Public License, version 1.3c or later. diff --git a/Master/texmf-dist/doc/latex/pdflscape/pdflscape.pdf b/Master/texmf-dist/doc/latex/pdflscape/pdflscape.pdf index b94089a91e8..ee0637ae409 100644 Binary files a/Master/texmf-dist/doc/latex/pdflscape/pdflscape.pdf and b/Master/texmf-dist/doc/latex/pdflscape/pdflscape.pdf differ diff --git a/Master/texmf-dist/source/latex/pdflscape/pdflscape.dtx b/Master/texmf-dist/source/latex/pdflscape/pdflscape.dtx index d85ffb9bcdb..c0d45d9f67b 100644 --- a/Master/texmf-dist/source/latex/pdflscape/pdflscape.dtx +++ b/Master/texmf-dist/source/latex/pdflscape/pdflscape.dtx @@ -1,12 +1,12 @@ % \iffalse meta-comment % % File: pdflscape.dtx -% Version: 2019/12/05 v0.12 +% Version: 2022-10-28 v0.13 % Info: Display of landscape pages in PDF % % Copyright (C) % 2001, 2004, 2006-2008 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group +% 2016-2022 Oberdiek Package Support Group % https://github.com/ho-tex/pdflscape/issues % % This work may be distributed and/or modified under the @@ -27,7 +27,8 @@ % % This work consists of the main source file pdflscape.dtx % and the derived files -% pdflscape.sty, pdflscape.pdf, pdflscape.ins, pdflscape.drv, +% pdflscape.sty, pdflscape-nometadata, pdflscape.pdf, +% pdflscape.ins, pdflscape.drv, % % Distribution: % CTAN:macros/latex/contrib/pdflscape/pdflscape.dtx @@ -61,6 +62,7 @@ % % Installation: % TDS:tex/latex/pdflscape/pdflscape.sty +% TDS:tex/latex/pdflscape/pdflscape-nometadata.sty % TDS:doc/latex/pdflscape/pdflscape.pdf % TDS:source/latex/pdflscape/pdflscape.dtx % @@ -79,7 +81,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdflscape 2019/12/05 v0.12 Display of landscape pages in PDF (HO)} +\Msg{* Package: pdflscape 2022-10-28 v0.13 Display of landscape pages in PDF (HO)} \Msg{************************************************************************} \keepsilent @@ -91,11 +93,11 @@ This is a generated file. Project: pdflscape -Version: 2019/12/05 v0.12 +Version: 2022-10-28 v0.13 Copyright (C) 2001, 2004, 2006-2008 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group + 2016-2022 Oberdiek Package Support Group This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either @@ -116,7 +118,8 @@ https://github.com/ho-tex/pdflscape/issues This work consists of the main source file pdflscape.dtx and the derived files - pdflscape.sty, pdflscape.pdf, pdflscape.ins, pdflscape.drv, + pdflscape.sty, pdflscape-nometadata.sty, pdflscape.pdf, + pdflscape.ins, pdflscape.drv, \endpreamble \let\MetaPrefix\DoubleperCent @@ -125,7 +128,8 @@ and the derived files \file{pdflscape.ins}{\from{pdflscape.dtx}{install}}% \file{pdflscape.drv}{\from{pdflscape.dtx}{driver}}% \usedir{tex/latex/pdflscape}% - \file{pdflscape.sty}{\from{pdflscape.dtx}{package}}% + \file{pdflscape-nometadata.sty}{\from{pdflscape.dtx}{package}}% + \file{pdflscape.sty}{\from{pdflscape.dtx}{package-new}}% } \catcode32=13\relax% active space @@ -136,6 +140,7 @@ and the derived files \Msg{* file into a directory searched by TeX:} \Msg{*} \Msg{* pdflscape.sty} +\Msg{* pdflscape-nometadata.sty} \Msg{*} \Msg{* To produce the documentation run the file `pdflscape.drv'} \Msg{* through LaTeX.} @@ -152,7 +157,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdflscape.drv}% - [2019/12/05 v0.12 Display of landscape pages in PDF (HO)]% + [2022-10-28 v0.13 Display of landscape pages in PDF (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] \usepackage{graphics} @@ -167,7 +172,7 @@ and the derived files % \GetFileInfo{pdflscape.drv} % % \title{The \xpackage{pdflscape} package} -% \date{2019/12/05 v0.12} +% \date{2022-10-28 v0.13} % \author{Heiko Oberdiek\thanks % {Please report any issues at \url{https://github.com/ho-tex/pdflscape/issues}}} % @@ -184,13 +189,21 @@ and the derived files % \section{Documentation} % % \subsection{Supported drivers} +% +% If the PDF management is loaded by the use of \verb+\DocumentMetadata{}+ at +% the beginning of the document, the engines and backends supported by \texttt{l3backend} +% can be used. Driver options are passed to graphics and are typically only needed if +% \LaTeX{} is used with \texttt{dvipdfmx}. +% +% Without the PDF management the following driver options can be used (many are +% simply aliases to each other): % % \begin{itemize} % \item \xoption{pdftex},\xoption{luatex} % \item \xoption{dvips}, \xoption{dvipsone}, -% \xoption{pctex32}, \xoption{pctexps} +% \xoption{pctexps} % (and other drivers that provide a non-empty \cs{Gin@PS@raw}) -% \item \xoption{dvipdfm} +% \item \xoption{dvipdfm}, \xoption{dvipdfmx}, \xoption{xetex} % \end{itemize} % % \subsection{Caveat} @@ -224,8 +237,55 @@ and the derived files % } % % \section{Implementation} +% \subsection{New version using the methods of the PDF management} +% Identification +% \begin{macrocode} +%<*package-new> +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{pdflscape}{2022-10-27}{0.13} + {Display of landscape pages in PDF}% +% \end{macrocode} +% Testing if the pdfmanagement is used +% \begin{macrocode} +\@ifl@t@r\fmtversion{2022-06-01} + { + \IfDocumentMetadataTF {}{\RequirePackageWithOptions{pdflscape-nometadata}} + \IfDocumentMetadataTF {}{\endinput} + } + {\RequirePackageWithOptions{pdflscape-nometadata}} +% \end{macrocode} +% Load lscape, but don't pass the \texttt{pdftex} option +% as it would use \cs{pdfpageattr} which is incompatible with the pdf management. +% \begin{macrocode} +\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}} +\ProcessOptions +\RequirePackage{lscape} +% \end{macrocode} +% this always turns in the same direction as the original code +% of pdflscape does. left and right would need +% \verb+\pdfmanagement_add:nnn{ThisPage}{Rotate}{..}+ +% on every page (e.g. in a shipout hook) and some option to control the wanted +% orientation. + +% \begin{macrocode} +\tl_new:N\g__pdflscape_saverotate_tl +\hook_gput_code:nnn {env/landscape/begin}{pdflscape} + { + \pdfmanagement_get:nnN {Page}{Rotate}\l_tmpa_tl + \tl_gset_eq:NN\g__pdflscape_saverotate_tl\l_tmpa_tl + \clearpage + \pdfmanagement_add:nnn{Page}{Rotate}{90} + } +\hook_gput_code:nnn {env/landscape/after}{pdflscape} + { + \quark_if_no_value:NTF\g__pdflscape_saverotate_tl + {\pdfmanagement_remove:nn{Page}{Rotate}} + {\pdfmanagement_add:nnx{Page}{Rotate}{\g__pdflscape_saverotate_tl}} + } +% +% \end{macrocode} % -% \subsection{Package identification} +% \subsection{Old version without the PDF management} % % \begin{macrocode} %<*package> @@ -233,8 +293,8 @@ and the derived files % Package identification. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pdflscape}% - [2019/12/05 v0.12 Display of landscape pages in PDF (HO)] +\ProvidesPackage{pdflscape-nometadata}% + [2022-10-28 v0.13 Display of landscape pages in PDF (HO)] % \end{macrocode} % % \subsection{Driver options} @@ -452,19 +512,18 @@ and the derived files % \begin{macrocode} \def\PLS@temp{dvips} \ifx\PLS@temp\PLS@driver - \RequirePackage{atbegshi}% - \AtBeginShipout{\PLS@AtBeginShipout}% + \AddToHook{shipout/before}{\PLS@AtBeginShipout}% \let\PLS@AtBeginShipout\@empty \def\PLS@AddRotate#1{% \ifnum#1=0 % \else \def\PLS@AtBeginShipout{% - \global\setbox\AtBeginShipoutBox\vbox{% + \global\setbox\ShipoutBox\vbox{% \Gin@PS@raw{% [{ThisPage}\string<\string\string>% /PUT pdfmark% }% - \box\AtBeginShipoutBox + \box\ShipoutBox }% }% \fi @@ -478,16 +537,15 @@ and the derived files % \begin{macrocode} \def\PLS@temp{dvipdfm} \ifx\PLS@temp\PLS@driver - \RequirePackage{atbegshi}% - \AtBeginShipout{\PLS@AtBeginShipout}% + \AddToHook{shipout/before}{\PLS@AtBeginShipout}% \let\PLS@AtBeginShipout\@empty \def\PLS@AddRotate#1{% \ifnum#1=0 % \else \def\PLS@AtBeginShipout{% - \global\setbox\AtBeginShipoutBox\vbox{% + \global\setbox\ShipoutBox\vbox{% \special{pdf: put @thispage <>}% - \box\AtBeginShipoutBox + \box\ShipoutBox }% }% \fi @@ -584,26 +642,6 @@ and the derived files % \end{description} % % -% \paragraph{Bundle.} All the packages of the bundle `pdflscape' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/pdflscape.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{pdflscape.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip pdflscape.tds.zip -d ~/texmf| -% \end{quote} -% % \subsection{Package installation} % % \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting @@ -620,6 +658,7 @@ and the derived files % \def\t{^^A % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdflscape.sty & tex/latex/pdflscape/pdflscape.sty\\ +% pdflscape-nometadata.sty & tex/latex/pdflscape/pdflscape-nometadata.sty\\ % pdflscape.pdf & doc/latex/pdflscape/pdflscape.pdf\\ % pdflscape.dtx & source/latex/pdflscape/pdflscape.dtx\\ % \end{tabular}^^A @@ -798,6 +837,10 @@ and the derived files % Documentation updates. % \item \xpackage{iftex} package. % \end{Version} +% \begin{Version}{2022-10-28 v0.13} +% \item Made the package compatible with the PDF management. +% \item Removed the dependency to atbegshi. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty b/Master/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty new file mode 100644 index 00000000000..30ad20a6e93 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty @@ -0,0 +1,253 @@ +%% +%% This is file `pdflscape-nometadata.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pdflscape.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Project: pdflscape +%% Version: 2022-10-28 v0.13 +%% +%% Copyright (C) +%% 2001, 2004, 2006-2008 Heiko Oberdiek +%% 2016-2022 Oberdiek Package Support Group +%% +%% 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.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainers of this work are +%% Heiko Oberdiek and the Oberdiek Package Support Group +%% https://github.com/ho-tex/pdflscape/issues +%% +%% This work consists of the main source file pdflscape.dtx +%% and the derived files +%% pdflscape.sty, pdflscape-nometadata.sty, pdflscape.pdf, +%% pdflscape.ins, pdflscape.drv, +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pdflscape-nometadata}% + [2022-10-28 v0.13 Display of landscape pages in PDF (HO)] +\let\PLS@option\@empty +\let\PLS@driver\@empty +\def\PLS@temp#1#2{% + \DeclareOption{#1}{% + \let\PLS@option\CurrentOption + \def\PLS@driver{#2}% + }% +} +\PLS@temp{pdftex}{pdftex} +\PLS@temp{luatex}{pdftex} +\PLS@temp{dvips}{dvips} +\PLS@temp{dvipsone}{dvips} +\PLS@temp{pctexps}{dvips} +\PLS@temp{dvipdfm}{dvipdfm} +\PLS@temp{dvipdfmx}{dvipdfm} +\PLS@temp{xetex}{dvipdfm} +\let\PLS@temp\@empty +\DeclareOption*{% + \ifx\PLS@temp\@empty + \let\PLS@temp\CurrentOption + \else + \edef\PLS@temp{\PLS@temp,\CurrentOption}% + \fi +} +\ProcessOptions* +\ifx\PLS@option\@empty +\else + \expandafter\PassOptionsToPackage\expandafter{\PLS@option}{lscape}% +\fi +\ifx\PLS@temp\@empty +\else + \expandafter\PassOptionsToPackage\expandafter{\PLS@temp}{lscape}% +\fi +\RequirePackage{iftex}[2019/11/07]% +\RequirePackage{lscape} +\def\PLS@temp{pdftex} +\ifpdf + \ifx\PLS@driver\@empty + \let\PLS@driver\PLS@temp + \PackageInfo{pdflscape}{Auto-detected driver: \PLS@temp}% + \fi + \ifx\PLS@driver\PLS@temp + \else + \PackageError{pdflscape}{% + The driver option `\PLS@option' is not compatible\MessageBreak + with pdfTeX in PDF mode, using driver `pdftex' instead% + }\@ehc + \let\PLS@driver\PLS@temp + \fi +\fi +\def\PLS@temp{dvipdfm} +\ifxetex + \ifx\PLS@driver\@empty + \let\PLS@driver\PLS@temp + \PackageInfo{pdflscape}{% + Auto-detected driver: \PLS@temp\space(xetex)% + }% + \fi + \ifx\PLS@driver\PLS@temp + \else + \PackageError{pdflscape}{% + The driver option `\PLS@option' is not compatible\MessageBreak + with XeTeX, using driver for XeTeX (dvipdfm) instead% + }\@ehc + \let\PLS@driver\PLS@temp + \fi +\fi +\def\PLS@temp#1#2{% + \ifx\PLS@driver\@empty + \begingroup + \def\PLS@temp{#1.def}% + \expandafter\endgroup + \ifx\PLS@temp\Gin@driver + \def\PLS@driver{#2}% + \PackageInfo{pdflscape}{% + Auto-detected driver: \PLS@driver\space(#1)% + }% + \fi + \fi +} +\PLS@temp{dvipdfm}{dvipdfm} +\PLS@temp{dvipdfmx}{dvipdfm} +\PLS@temp{dvips}{dvips} +\PLS@temp{dvipsone}{dvips} +\PLS@temp{pctexps}{dvips} +\ifx\PLS@driver\@empty + \def\PLS@temp{dvips}% + \ifnum 1=0\ifx\Gin@PS@raw\@undefined + \else + \ifx\Gin@PS@raw\relax + \else + \ifx\Gin@PS@raw\@empty + \else + 1% + \fi + \fi + \fi + \space + \let\PLS@driver\PLS@temp + \PackageInfo{pdflscape}{% + Auto-detected driver: \PLS@temp\space(PostScript)% + }% + \fi +\fi +\ifx\PLS@driver\@empty + \PackageError{pdflscape}{% + Neither pdfTeX, PostScript, nor dvipdfm driver found% + }\@ehc +\fi +\ifx\pdfpageattr\@undefined + \ifx\pdfvariable\@undefined\else + \protected\edef\pdfpageattr{\pdfvariable pageattr} + \fi +\fi +\def\PLS@temp{pdftex} +\ifx\PLS@temp\PLS@driver + \def\PLS@AddRotate#1{% + \ifnum#1=0 % + \else + \global\pdfpageattr\expandafter{% + \the\pdfpageattr + /Rotate #1% + }% + \fi + }% + \def\PLS@RemoveRotate{% + \begingroup + \global\pdfpageattr\expandafter{\expandafter}% + \expandafter\PLS@@RemoveRotate + \the\pdfpageattr /Rotate\@nil + \endgroup + }% + \def\PLS@@RemoveRotate#1/Rotate#2\@nil{% + \global\pdfpageattr\expandafter{\the\pdfpageattr#1}% + \ifx\\#2\\% + \else + \afterassignment\PLS@@RemoveRotate + \count0=#2\@nil + \fi + }% +\fi +\def\PLS@temp{dvips} +\ifx\PLS@temp\PLS@driver + \AddToHook{shipout/before}{\PLS@AtBeginShipout}% + \let\PLS@AtBeginShipout\@empty + \def\PLS@AddRotate#1{% + \ifnum#1=0 % + \else + \def\PLS@AtBeginShipout{% + \global\setbox\ShipoutBox\vbox{% + \Gin@PS@raw{% + [{ThisPage}\string<\string\string>% + /PUT pdfmark% + }% + \box\ShipoutBox + }% + }% + \fi + }% + \def\PLS@RemoveRotate{\let\PLS@AtBeginShipout\@empty}% +\fi +\def\PLS@temp{dvipdfm} +\ifx\PLS@temp\PLS@driver + \AddToHook{shipout/before}{\PLS@AtBeginShipout}% + \let\PLS@AtBeginShipout\@empty + \def\PLS@AddRotate#1{% + \ifnum#1=0 % + \else + \def\PLS@AtBeginShipout{% + \global\setbox\ShipoutBox\vbox{% + \special{pdf: put @thispage <>}% + \box\ShipoutBox + }% + }% + \fi + }% + \def\PLS@RemoveRotate{\let\PLS@AtBeginShipout\@empty}% +\fi +\g@addto@macro{\landscape}{\PLS@Rotate{90}} +\g@addto@macro{\endlandscape}{\PLS@Rotate{0}} +\def\PLS@Rotate#1{% + \begingroup + \PLS@CheckAngle{#1}% + \expandafter\endgroup + \expandafter\PLS@RemoveRotate + \expandafter\PLS@AddRotate\expandafter{\the\count@}% +} +\def\PLS@CheckAngle#1{% + \ifx\\#1\\% + \count@=0 % + \else + \count@=#1\relax + \fi + \@whilenum\count@>359\do{\advance\count@ -360 }% + \@whilenum\count@<-359\do{\advance\count@ 360 }% + \ifnum 1=0\ifnum\count@=0 \else + \ifnum\count@=90 \else + \ifnum\count@=-90 \else + \ifnum\count@=180 \else + \ifnum\count@=-180 \else + \ifnum\count@=270 \else + \ifnum\count@=-270 \else + 1\fi\fi\fi\fi\fi\fi\fi\relax + \PackageError{pdflscape}{% + Invalid value \the\count@\space for /Rotate% + }\@ehc + \count@=0 % + \fi +} +\endinput +%% +%% End of file `pdflscape-nometadata.sty'. diff --git a/Master/texmf-dist/tex/latex/pdflscape/pdflscape.sty b/Master/texmf-dist/tex/latex/pdflscape/pdflscape.sty index 45a9bad5bd8..e1dc90f96f9 100644 --- a/Master/texmf-dist/tex/latex/pdflscape/pdflscape.sty +++ b/Master/texmf-dist/tex/latex/pdflscape/pdflscape.sty @@ -4,16 +4,16 @@ %% %% The original source files were: %% -%% pdflscape.dtx (with options: `package') +%% pdflscape.dtx (with options: `package-new') %% %% This is a generated file. %% %% Project: pdflscape -%% Version: 2019/12/05 v0.12 +%% Version: 2022-10-28 v0.13 %% %% Copyright (C) %% 2001, 2004, 2006-2008 Heiko Oberdiek -%% 2016-2019 Oberdiek Package Support Group +%% 2016-2022 Oberdiek Package Support Group %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -31,225 +31,38 @@ %% Heiko Oberdiek and the Oberdiek Package Support Group %% https://github.com/ho-tex/pdflscape/issues %% -%% %% This work consists of the main source file pdflscape.dtx %% and the derived files -%% pdflscape.sty, pdflscape.pdf, pdflscape.ins, pdflscape.drv, +%% pdflscape.sty, pdflscape-nometadata.sty, pdflscape.pdf, +%% pdflscape.ins, pdflscape.drv, %% -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{pdflscape}% - [2019/12/05 v0.12 Display of landscape pages in PDF (HO)] -\let\PLS@option\@empty -\let\PLS@driver\@empty -\def\PLS@temp#1#2{% - \DeclareOption{#1}{% - \let\PLS@option\CurrentOption - \def\PLS@driver{#2}% - }% -} -\PLS@temp{pdftex}{pdftex} -\PLS@temp{luatex}{pdftex} -\PLS@temp{dvips}{dvips} -\PLS@temp{dvipsone}{dvips} -\PLS@temp{pctexps}{dvips} -\PLS@temp{dvipdfm}{dvipdfm} -\PLS@temp{dvipdfmx}{dvipdfm} -\PLS@temp{xetex}{dvipdfm} -\let\PLS@temp\@empty -\DeclareOption*{% - \ifx\PLS@temp\@empty - \let\PLS@temp\CurrentOption - \else - \edef\PLS@temp{\PLS@temp,\CurrentOption}% - \fi -} -\ProcessOptions* -\ifx\PLS@option\@empty -\else - \expandafter\PassOptionsToPackage\expandafter{\PLS@option}{lscape}% -\fi -\ifx\PLS@temp\@empty -\else - \expandafter\PassOptionsToPackage\expandafter{\PLS@temp}{lscape}% -\fi -\RequirePackage{iftex}[2019/11/07]% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{pdflscape}{2022-10-27}{0.13} + {Display of landscape pages in PDF}% +\@ifl@t@r\fmtversion{2022-06-01} + { + \IfDocumentMetadataTF {}{\RequirePackageWithOptions{pdflscape-nometadata}} + \IfDocumentMetadataTF {}{\endinput} + } + {\RequirePackageWithOptions{pdflscape-nometadata}} +\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}} +\ProcessOptions \RequirePackage{lscape} -\def\PLS@temp{pdftex} -\ifpdf - \ifx\PLS@driver\@empty - \let\PLS@driver\PLS@temp - \PackageInfo{pdflscape}{Auto-detected driver: \PLS@temp}% - \fi - \ifx\PLS@driver\PLS@temp - \else - \PackageError{pdflscape}{% - The driver option `\PLS@option' is not compatible\MessageBreak - with pdfTeX in PDF mode, using driver `pdftex' instead% - }\@ehc - \let\PLS@driver\PLS@temp - \fi -\fi -\def\PLS@temp{dvipdfm} -\ifxetex - \ifx\PLS@driver\@empty - \let\PLS@driver\PLS@temp - \PackageInfo{pdflscape}{% - Auto-detected driver: \PLS@temp\space(xetex)% - }% - \fi - \ifx\PLS@driver\PLS@temp - \else - \PackageError{pdflscape}{% - The driver option `\PLS@option' is not compatible\MessageBreak - with XeTeX, using driver for XeTeX (dvipdfm) instead% - }\@ehc - \let\PLS@driver\PLS@temp - \fi -\fi -\def\PLS@temp#1#2{% - \ifx\PLS@driver\@empty - \begingroup - \def\PLS@temp{#1.def}% - \expandafter\endgroup - \ifx\PLS@temp\Gin@driver - \def\PLS@driver{#2}% - \PackageInfo{pdflscape}{% - Auto-detected driver: \PLS@driver\space(#1)% - }% - \fi - \fi -} -\PLS@temp{dvipdfm}{dvipdfm} -\PLS@temp{dvipdfmx}{dvipdfm} -\PLS@temp{dvips}{dvips} -\PLS@temp{dvipsone}{dvips} -\PLS@temp{pctexps}{dvips} -\ifx\PLS@driver\@empty - \def\PLS@temp{dvips}% - \ifnum 1=0\ifx\Gin@PS@raw\@undefined - \else - \ifx\Gin@PS@raw\relax - \else - \ifx\Gin@PS@raw\@empty - \else - 1% - \fi - \fi - \fi - \space - \let\PLS@driver\PLS@temp - \PackageInfo{pdflscape}{% - Auto-detected driver: \PLS@temp\space(PostScript)% - }% - \fi -\fi -\ifx\PLS@driver\@empty - \PackageError{pdflscape}{% - Neither pdfTeX, PostScript, nor dvipdfm driver found% - }\@ehc -\fi -\ifx\pdfpageattr\@undefined - \ifx\pdfvariable\@undefined\else - \protected\edef\pdfpageattr{\pdfvariable pageattr} - \fi -\fi -\def\PLS@temp{pdftex} -\ifx\PLS@temp\PLS@driver - \def\PLS@AddRotate#1{% - \ifnum#1=0 % - \else - \global\pdfpageattr\expandafter{% - \the\pdfpageattr - /Rotate #1% - }% - \fi - }% - \def\PLS@RemoveRotate{% - \begingroup - \global\pdfpageattr\expandafter{\expandafter}% - \expandafter\PLS@@RemoveRotate - \the\pdfpageattr /Rotate\@nil - \endgroup - }% - \def\PLS@@RemoveRotate#1/Rotate#2\@nil{% - \global\pdfpageattr\expandafter{\the\pdfpageattr#1}% - \ifx\\#2\\% - \else - \afterassignment\PLS@@RemoveRotate - \count0=#2\@nil - \fi - }% -\fi -\def\PLS@temp{dvips} -\ifx\PLS@temp\PLS@driver - \RequirePackage{atbegshi}% - \AtBeginShipout{\PLS@AtBeginShipout}% - \let\PLS@AtBeginShipout\@empty - \def\PLS@AddRotate#1{% - \ifnum#1=0 % - \else - \def\PLS@AtBeginShipout{% - \global\setbox\AtBeginShipoutBox\vbox{% - \Gin@PS@raw{% - [{ThisPage}\string<\string\string>% - /PUT pdfmark% - }% - \box\AtBeginShipoutBox - }% - }% - \fi - }% - \def\PLS@RemoveRotate{\let\PLS@AtBeginShipout\@empty}% -\fi -\def\PLS@temp{dvipdfm} -\ifx\PLS@temp\PLS@driver - \RequirePackage{atbegshi}% - \AtBeginShipout{\PLS@AtBeginShipout}% - \let\PLS@AtBeginShipout\@empty - \def\PLS@AddRotate#1{% - \ifnum#1=0 % - \else - \def\PLS@AtBeginShipout{% - \global\setbox\AtBeginShipoutBox\vbox{% - \special{pdf: put @thispage <>}% - \box\AtBeginShipoutBox - }% - }% - \fi - }% - \def\PLS@RemoveRotate{\let\PLS@AtBeginShipout\@empty}% -\fi -\g@addto@macro{\landscape}{\PLS@Rotate{90}} -\g@addto@macro{\endlandscape}{\PLS@Rotate{0}} -\def\PLS@Rotate#1{% - \begingroup - \PLS@CheckAngle{#1}% - \expandafter\endgroup - \expandafter\PLS@RemoveRotate - \expandafter\PLS@AddRotate\expandafter{\the\count@}% -} -\def\PLS@CheckAngle#1{% - \ifx\\#1\\% - \count@=0 % - \else - \count@=#1\relax - \fi - \@whilenum\count@>359\do{\advance\count@ -360 }% - \@whilenum\count@<-359\do{\advance\count@ 360 }% - \ifnum 1=0\ifnum\count@=0 \else - \ifnum\count@=90 \else - \ifnum\count@=-90 \else - \ifnum\count@=180 \else - \ifnum\count@=-180 \else - \ifnum\count@=270 \else - \ifnum\count@=-270 \else - 1\fi\fi\fi\fi\fi\fi\fi\relax - \PackageError{pdflscape}{% - Invalid value \the\count@\space for /Rotate% - }\@ehc - \count@=0 % - \fi -} + +\tl_new:N\g__pdflscape_saverotate_tl +\hook_gput_code:nnn {env/landscape/begin}{pdflscape} + { + \pdfmanagement_get:nnN {Page}{Rotate}\l_tmpa_tl + \tl_gset_eq:NN\g__pdflscape_saverotate_tl\l_tmpa_tl + \clearpage + \pdfmanagement_add:nnn{Page}{Rotate}{90} + } +\hook_gput_code:nnn {env/landscape/after}{pdflscape} + { + \quark_if_no_value:NTF\g__pdflscape_saverotate_tl + {\pdfmanagement_remove:nn{Page}{Rotate}} + {\pdfmanagement_add:nnx{Page}{Rotate}{\g__pdflscape_saverotate_tl}} + } \endinput %% %% End of file `pdflscape.sty'. diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index b8b2ac35ec4..9df91babb9b 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -3168,6 +3168,7 @@ my $core_latex = "$Master/texmf-dist/tex/latex"; 'nwejm' => 'tex', 'nomentbl' => 'latex -translate-file=empty.tcx', # no 8-bit 'pbsheet' => 'latex', # requires interaction + 'pdflscape' => 'etex', 'penrose' => 'etex', 'powerdot' => 'latex', 'thumb' => 'latex -translate-file=empty.tcx', # no 8-bit -- cgit v1.2.3