From 2f4b3573893f56d03b6be8228d36e9dd6f7cd089 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 May 2015 20:54:59 +0000 Subject: pdfpages (11may15) git-svn-id: svn://tug.org/texlive/trunk@37333 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex/pdfpages/pdfpages.dtx | 274 +++++++++++++-------- .../texmf-dist/source/latex/pdfpages/pdfpages.ins | 4 - 2 files changed, 170 insertions(+), 108 deletions(-) (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/pdfpages/pdfpages.dtx b/Master/texmf-dist/source/latex/pdfpages/pdfpages.dtx index 77d6a592f96..2592aef2920 100644 --- a/Master/texmf-dist/source/latex/pdfpages/pdfpages.dtx +++ b/Master/texmf-dist/source/latex/pdfpages/pdfpages.dtx @@ -27,10 +27,10 @@ %<*dtx> \makeatletter % -\def\AM@fileversion{v0.4w} +\def\AM@fileversion{v0.4x} \def\AM@SVN@Date@i#1-#2-#3\END{\def\AM@filedate{#1/#2/#3}} \def\AM@SVN@Date$Date: #1 #2${\AM@SVN@Date@i#1\END} -\AM@SVN@Date$Date: 2015-04-15 23:44:35 +0200 (Wed, 15 Apr 2015) $ +\AM@SVN@Date$Date: 2015-05-11 18:08:19 +0200 (Mon, 11 May 2015) $ % % % @@ -82,7 +82,7 @@ % % \GetFileInfo{pdfpages.dtx} % -% \CheckSum{4669} +% \CheckSum{4677} % % \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 @@ -155,7 +155,7 @@ % \begin{abstract} % \noindent % This package simplifies the insertion of external multi-page \PDF\ -% or \PS\ documents. It supports \pdfTeX, \VTeX, and \XeTeX. +% or \PS\ documents. It supports \pdfTeX, \VTeX, \XeTeX, and \luaTeX % \end{abstract} % % \tableofcontents @@ -1041,7 +1041,7 @@ % \bibitem{pax} % Heiko Oberdiek, % \textit{pax: Extract and reinsert PDF annotations with pdfTeX} -% \url{http://www.ctan.org/tex-archive/macros/latex/contrib/pax/} +% \url{http://www.ctan.org/pkg/pax} % % \end{thebibliography} % } @@ -1114,6 +1114,8 @@ \RequirePackage{ifthen, calc, eso-pic} \RequirePackage{graphicx} \newif\ifAM@DVIoutput\AM@DVIoutputfalse +\newdimen\AM@pagewidth +\newdimen\AM@pageheight \input{pp\AM@driver.def} \ifx\AM@endinput\relax\expandafter\endinput\fi \ifAM@pkg@survey @@ -1367,10 +1369,42 @@ % \begin{macrocode} \newcommand{\AM@output}[1]{% % \end{macrocode} -% Tune some \LaTeX\ parameters. +% For the following calculations we need to know the page size. +% But since we are still before |\newpage| we must not set |\paper{width,height}| +% and must not call |\AM@setpagedimen| now. This shall be done after |\newpage|. +% However, to get the calculation right we set and use |\AM@page{width,height}|, +% which will eventually (after the next |\newpage|) become the real page size. % \begin{macrocode} - \c@totalnumber=0 - \if@twocolumn\let\AM@twocolumn\relax \onecolumn \fi + \AM@getpagedimen + \ifdim\AM@pagewidth=\z@ + \AM@pagewidth=210mm + \PackageWarningNoLine{pdfpages}{% + Erroneous page width of 0.0pt is corrected}% + \fi + \ifdim\AM@pageheight=\z@ + \AM@pageheight=297mm + \PackageWarningNoLine{pdfpages}{% + Erroneous page height of 0.0pt is corrected}% + \fi +% \end{macrocode} +% Floats are unwanted here. Thus defer all floats until after |\includepdf|. +% \par +% 1) Floats which are already in \LaTeX's output routine shall be removed from +% there and pushed onto |\@deferlist| or |\@dbldeferlist|. +% \begin{macrocode} + \xdef\@deferlist{\@toplist\@botlist\@deferlist}% + \gdef\@toplist{}% + \gdef\@botlist{}% + \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}% + \gdef\@dbltoplist{}% +% \end{macrocode} +% 2) Clear |\@deferlist| and |\@dbldeferlist|. But save them first +% so they can be restored later. +% \begin{macrocode} + \global\let\AM@deferlist\@deferlist + \gdef\@deferlist{}% + \global\let\AM@dbldeferlist\@dbldeferlist + \gdef\@dbldeferlist{}% % \end{macrocode} % Some drivers, like |ppnull|, need a hook to disable % |\includegraphics|. @@ -1465,7 +1499,6 @@ {\edef\AM@page{\AM@pagetemplate}}% \AM@readfirst{\AM@doclist}% \edef\AM@docname{\the\toks@}% - \newpage \AM@isphantom \ifAM@noautoscale \def\AM@globalscale{1}% @@ -1485,48 +1518,17 @@ \fi \fi % \end{macrocode} -% Adjust the paper size. -% \begin{macrocode} - \ifthenelse{\boolean{AM@fitpaper}} - {\setlength{\AM@pagewidth}{\wd\@tempboxa}% - \setlength{\AM@pageheight}{\ht\@tempboxa + \dp\@tempboxa}% - \setlength{\paperwidth}{\wd\@tempboxa}% - \setlength{\paperheight}{\ht\@tempboxa + \dp\@tempboxa}% - \AM@fitpaper@special - \AM@setpagedimen - \@ifundefined{stockwidth}{}{% - \setlength{\stockwidth}{\AM@pagewidth}% - \setlength{\stockheight}{\AM@pageheight}% - \setlength{\trimtop}{0pt}% - \setlength{\trimedge}{0pt}}% - }{}% -% \end{macrocode} -% \begin{macrocode} - \ifdim\AM@pagewidth=\z@ - \AM@pagewidth=210mm - \PackageWarningNoLine{pdfpages}{% - Erroneous page width of 0.0pt is corrected}% - \fi - \ifdim\AM@pageheight=\z@ - \AM@pageheight=297mm - \PackageWarningNoLine{pdfpages}{% - Erroneous page height of 0.0pt is corrected}% - \fi -% \end{macrocode} -% |eso-pic| needs |\paperwidth| and |\paperheight|, which may -% not be defined, e.g. with |minimal.cls|. +% Fit papersize. % \begin{macrocode} - \ifdim\paperwidth=\z@ - \let\paperwidth\AM@pagewidth - \fi - \ifdim\paperheight=\z@ - \let\paperheight\AM@pageheight - \fi + \ifthenelse{\boolean{AM@fitpaper}}{ + \setlength{\AM@pagewidth}{\wd\@tempboxa}% + \setlength{\AM@pageheight}{\ht\@tempboxa + \dp\@tempboxa}% + }{}% % \end{macrocode} % Calculate required scaling in horizontal direction. % \begin{macrocode} \def\AM@xscale{% - (\paperwidth - \tw@\fboxrule*\AM@xnup + (\AM@pagewidth - \tw@\fboxrule*\AM@xnup - \AM@deltax * \AM@xnupminusi) / (\AM@xnup * \real{\strip@pt\wd\@tempboxa}) }% @@ -1537,7 +1539,7 @@ % \begin{macrocode} \setlength{\@tempdimb}{\ht\@tempboxa + \dp\@tempboxa}% \def\AM@yscale{ - (\paperheight - \tw@\fboxrule*\AM@ynup + (\AM@pageheight - \tw@\fboxrule*\AM@ynup - \AM@deltay *\AM@ynupminusi) / (\AM@ynup * \real{\strip@pt\@tempdimb}) }% @@ -1581,11 +1583,11 @@ \edef\AM@templateheight{\the\@tempdima}% \setlength{\@tempdimb}{\ht\@tempboxa + \dp\@tempboxa}% \def\AM@xmargin{% - (\paperwidth - (\wd\@tempboxa+\tw@\fboxrule)*\AM@xnup + (\AM@pagewidth - (\wd\@tempboxa+\tw@\fboxrule)*\AM@xnup - \AM@deltax * \AM@xnupminusi) * \real{.5}% }% \def\AM@ymargin{% - (\paperheight - (\@tempdimb+\tw@\fboxrule)*\AM@ynup + (\AM@pageheight - (\@tempdimb+\tw@\fboxrule)*\AM@ynup - \AM@deltay * \AM@ynupminusi) * \real{.5}% }% \setlength{\@tempdima}{\AM@xmargin}% @@ -1794,6 +1796,12 @@ % \end{macrocode} % Ship out page. % \begin{macrocode} + \newpage + \ifnum\AM@xnupi=1 + \ifnum\AM@ynupi=1 + \ifAM@reflectall \setbox\AM@pagebox\null \fi + \fi + \fi \ifAM@phantompage \def\AM@shippage{}% \else @@ -1831,6 +1839,38 @@ \AM@AddToShipoutPicture{\setlength{\unitlength}{\p@}% \global\let\AM@filelist@save\@filelist}% % \end{macrocode} +% Adjust paper size: +% After |\newpage| we may finally set |\paper{width,height}| and call +% |\AM@setpagedimen|. +% \begin{macrocode} + \ifthenelse{\boolean{AM@fitpaper}}{ + \setlength{\paperwidth}{\AM@pagewidth}% + \setlength{\paperheight}{\AM@pageheight}% + \AM@fitpaper@special + \AM@setpagedimen + \@ifundefined{stockwidth}{}{% + \setlength{\stockwidth}{\AM@pagewidth}% + \setlength{\stockheight}{\AM@pageheight}% + \setlength{\trimtop}{0pt}% + \setlength{\trimedge}{0pt}}% + }{} +% \end{macrocode} +% |eso-pic| needs |\paperwidth| and |\paperheight|, which may +% not be defined, e.g. with |minimal.cls|. +% \begin{macrocode} + \ifdim\paperwidth=\z@ + \let\paperwidth\AM@pagewidth + \fi + \ifdim\paperheight=\z@ + \let\paperheight\AM@pageheight + \fi +% \end{macrocode} +% \begin{macrocode} + \if@twocolumn + \@twocolumnfalse + \let\AM@twocolumn\relax + \fi +% \end{macrocode} % |\AM@pagebox| is only used for option |reflect|, which was added % lately. Probabley it would be better to use |\AM@pagebox| in % all cases? @@ -1871,10 +1911,10 @@ }% \AM@ClearShipoutPicture \fi - \newpage - \ifAM@reflectall \setbox\AM@pagebox\null \fi - \ifAM@pdflscape\PLS@Rotate{0}\fi - \AM@ClearShipoutPicture +% \ifAM@reflectall \setbox\AM@pagebox\null \fi +% \ifAM@pdflscape\PLS@Rotate{0}\fi +% \AM@ClearShipoutPicture + % \end{macrocode} % When creating signatures, every second page must be rotated % by $180^{\circ}$ and therefore the xoffset must be multiplied @@ -1884,14 +1924,20 @@ \ifAM@sigrotate\AM@sigrotatefalse\else\AM@sigrotatetrue\fi \@tempdima=\AM@xoffset\relax \multiply\@tempdima\m@ne - \edef\AM@xoffset{\the\@tempdima} + \edef\AM@xoffset{\the\@tempdima}% \fi \fi \fi % \end{macrocode} % \begin{macrocode} }% whiledo - \ifx\AM@twocolumn\relax\twocolumn\fi + \global\let\@deferlist\AM@deferlist + \global\let\@dbldeferlist\AM@dbldeferlist + \ifx\AM@twocolumn\relax + \@twocolumntrue + \@firstcolumnfalse + \fi + \newpage }% AM@output % \end{macrocode} % \macro{\AM@readlist} @@ -2584,15 +2630,15 @@ % \end{macrocode} % Calculate value of |\AM@signature| for option |booklet|. % \begin{macrocode} -\ifAM@booklet - \AM@countpagelist - \@tempcntb=\@tempcnta - \divide\@tempcnta by 4 - \multiply\@tempcnta by 4 - \advance\@tempcntb-\@tempcnta - \ifnum\@tempcntb=0\else \advance\@tempcnta by 4\fi - \edef\AM@signature{\the\@tempcnta}% -\fi + \ifAM@booklet + \AM@countpagelist + \@tempcntb=\@tempcnta + \divide\@tempcnta by 4 + \multiply\@tempcnta by 4 + \advance\@tempcntb-\@tempcnta + \ifnum\@tempcntb=0\else \advance\@tempcnta by 4\fi + \edef\AM@signature{\the\@tempcnta}% + \fi % \end{macrocode} % Make |\AM@signature| a multiply of 4. % \begin{macrocode} @@ -3062,7 +3108,7 @@ % \begin{macrocode} \newcommand{\AM@parse@templatesize}{} \def\AM@parse@templatesize#1#2\END{% - \setbox\AM@templatesizebox=\hbox{\rule{#1}{#2}} + \setbox\AM@templatesizebox=\hbox{\rule{#1}{#2}}% \AM@templatesizetrue } \newbox\AM@templatesizebox @@ -3199,12 +3245,12 @@ % is used repeatedly on the same file. Heiko is aware of this and will provide % a solution in pdftex.def. Until then we will use the original graphicx's filename % from |\Gread@@pdftex|. -% \begin{macrocode} -%% \def\AM@getpagecount{% -%% \setbox\@tempboxa=\hbox{\includegraphics{\AM@currentdocname}}% -%% \edef\AM@pagecount{\the\pdflastximagepages}% -%% } -% \end{macrocode} +% +% \def\AM@getpagecount{% +% \setbox\@tempboxa=\hbox{\includegraphics{\AM@currentdocname}}% +% \edef\AM@pagecount{\the\pdflastximagepages}% +% } +% % \begin{macrocode} %<*(pppdftexdef,ppluatexdef)> \let\AM@Gread@@pdftex\Gread@@pdftex @@ -3220,11 +3266,13 @@ % \end{macrocode} % Page dimensions. % \begin{macrocode} -\let\AM@pagewidth\pdfpagewidth -\let\AM@pageheight\pdfpageheight +\def\AM@getpagedimen{% + \AM@pagewidth=\paperwidth + \AM@pageheight=\paperheight +} \def\AM@setpagedimen{% - \setlength{\pdfpagewidth}{\wd\@tempboxa}% - \setlength{\pdfpageheight}{\ht\@tempboxa + \dp\@tempboxa}% + \pdfpagewidth\AM@pagewidth + \pdfpageheight\AM@pageheight } \let\AM@pagesize@boogie\relax % \end{macrocode} @@ -3349,8 +3397,8 @@ \endgroup } \def\AM@region@calc{% - \setlength{\@tempdima}{\ht\@tempboxa + \dp\@tempboxa} - \edef\AM@region@depth{\the\@tempdima} + \setlength{\@tempdima}{\ht\@tempboxa + \dp\@tempboxa}% + \edef\AM@region@depth{\the\@tempdima}% } % \end{macrocode} % Do not disable |\includegraphics|. @@ -3374,7 +3422,7 @@ \PackageError{pdfpages} {The graphics package was loaded with driver\MessageBreak `\Gin@driver', which cannot be used with VTeX} - {Check the driver option of the graphics package.} + {Check the driver option of the graphics package.}% \global\let\AM@endinput\relax \aftergroup\endinput}{} \endgroup @@ -3408,11 +3456,13 @@ % \end{macrocode} % Page dimensions. % \begin{macrocode} -\let\AM@pagewidth\mediawidth -\let\AM@pageheight\mediaheight +\def\AM@getpagedimen{% + \AM@pagewidth=\mediawidth + \AM@pageheight=\mediaheight +} \def\AM@setpagedimen{% - \setlength{\mediawidth}{\wd\@tempboxa}% - \setlength{\mediaheight}{\ht\@tempboxa+\dp\@tempboxa}% + \mediawidth\AM@pagewidth + \mediaheight\AM@pageheight } \let\AM@pagesize@boogie\relax % \end{macrocode} @@ -3522,7 +3572,10 @@ % \begin{macrocode} \def\AM@getpagecount{% \expandafter\filename@parse\expandafter{\AM@currentdocname}% - \lowercase{\edef\type@ext{.\filename@ext}}% + \edef\type@ext{% + \noexpand\lowercase{% + \noexpand\def\noexpand\type@ext{.\filename@ext}}}% + \type@ext \ifx\type@ext\G@pdf@ext \ifdefined\import@path \let\AM@import@path\import@path @@ -3557,11 +3610,13 @@ % \end{macrocode} % Page dimensions. % \begin{macrocode} -\let\AM@pagewidth\pdfpagewidth -\let\AM@pageheight\pdfpageheight +\def\AM@getpagedimen{% + \AM@pagewidth=\paperwidth + \AM@pageheight=\paperheight +} \def\AM@setpagedimen{% - \setlength{\pdfpagewidth}{\wd\@tempboxa}% - \setlength{\pdfpageheight}{\ht\@tempboxa+\dp\@tempboxa}% + \pdfpagewidth\AM@pagewidth + \pdfpageheight\AM@pageheight } \def\AM@pagesize@boogie{% \ifdim\AM@pagewidth=\z@ @@ -3740,13 +3795,15 @@ % \end{macrocode} % Page dimensions. % \begin{macrocode} -\let\AM@pagewidth\paperwidth -\let\AM@pageheight\paperheight +\def\AM@getpagedimen{% + \AM@pagewidth=\paperwidth + \AM@pageheight=\paperheight +} \def\AM@setpagedimen{% - \setlength{\paperwidth}{\wd\@tempboxa}% - \setlength{\paperheight}{\ht\@tempboxa + \dp\@tempboxa}% + \paperwidth\AM@pagewidth + \paperheight\AM@pageheight } -\let\AM@pagesize@boogie\relax +\let\AM@pagesize@boogie\relax % \end{macrocode} % Rotate page. % \begin{macrocode} @@ -3818,7 +3875,7 @@ % \subsubsection{Dvipdfm driver} % % Package |graphicx| should be loaded with the |dvipdfm| driver. -% However, |\RequirePackage[dvipdfm]{graphicx}| is not recommended +% However, \break |\RequirePackage[dvipdfm]{graphicx}| is not recommended % because it will cause an `option clash' if a user loaded |graphicx| % with additional options before. Thus, we expect the user to load % |graphicx| with |dvipdfm| driver before loading pdfpages. @@ -3832,8 +3889,8 @@ \@spaces \string\usepackage[dvipdfm]{graphicx}\MessageBreak \@spaces \string\usepackage[dvipdfm]{pdfpages}\MessageBreak This time I will try to load `dvipdfm.def' which \MessageBreak - will overwrite `Gin@driver'. Let's hope for the best} - \input{dvipdfm.def} + will overwrite `Gin@driver'. Let's hope for the best}% + \input{dvipdfm.def}% \fi % \end{macrocode} % \begin{macrocode} @@ -3854,13 +3911,15 @@ % \end{macrocode} % Page dimensions. % \begin{macrocode} -\let\AM@pagewidth\paperwidth -\let\AM@pageheight\paperheight +\def\AM@getpagedimen{% + \AM@pagewidth=\paperwidth + \AM@pageheight=\paperheight +} \def\AM@setpagedimen{% - \setlength{\paperwidth}{\wd\@tempboxa}% - \setlength{\paperheight}{\ht\@tempboxa + \dp\@tempboxa}% + \paperwidth\AM@pagewidth + \paperheight\AM@pageheight } -\let\AM@pagesize@boogie\relax +\let\AM@pagesize@boogie\relax % \end{macrocode} % Rotate page. % \begin{macrocode} @@ -4030,11 +4089,13 @@ % \end{macrocode} % Page dimensions. % \begin{macrocode} -\let\AM@pagewidth\paperwidth -\let\AM@pageheight\paperheight +\def\AM@getpagedimen{% + \AM@pagewidth=\paperwidth + \AM@pageheight=\paperheight +} \def\AM@setpagedimen{% - \setlength{\paperwidth}{\wd\@tempboxa}% - \setlength{\paperheight}{\ht\@tempboxa + \dp\@tempboxa}% + \paperwidth\AM@pagewidth + \paperheight\AM@pageheight } \let\AM@pagesize@boogie\relax % \end{macrocode} @@ -4297,6 +4358,11 @@ % of \pdfTeX. Therefore \luaTeX\ gets its on driver file |ppluatex.def|. % \end{itemize} % +% \subsection*{2015/05/04 v0.4x} +% \begin{itemize} +% \item Issue with uppercase filename extentions in ppxetex.def fixed. +% \item Issue with suspending of floats, and bang floats, during output fixed. +% \end{itemize} % \Finale % % \iffalse diff --git a/Master/texmf-dist/source/latex/pdfpages/pdfpages.ins b/Master/texmf-dist/source/latex/pdfpages/pdfpages.ins index fe0c146ea06..aff6ac2f9c3 100644 --- a/Master/texmf-dist/source/latex/pdfpages/pdfpages.ins +++ b/Master/texmf-dist/source/latex/pdfpages/pdfpages.ins @@ -21,10 +21,6 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% -%% \def\AM@getpagecount{% -%% \setbox\@tempboxa=\hbox{\includegraphics{\AM@currentdocname}}% -%% \edef\AM@pagecount{\the\pdflastximagepages}% -%% } \input docstrip \askforoverwritefalse \keepsilent -- cgit v1.2.3