使用 LuaLaTeX 編譯 pdfpages 程式碼

使用 LuaLaTeX 編譯 pdfpages 程式碼

考慮以下 MWE:

\documentclass[
  a4paper
]{article}

\usepackage{pdfpages}

\newcount\firstmaxpages
\newcount\secondmaxpages
\newcount\curpage
\newcount\untilpage
\makeatletter
\newif\if@pdfdingsSecondFin
\newcount\@pdfdingsPages

\newcommand*\@incpdfdings[5][]{%
    \includepdf[
        nup = #5,
        pages = {#2-#3},
        #1
    ]{#4}}
\newcommand*\@@incpdfdings{}%
\def\@@incpdfdings#1x#2;{%
    \@pdfdingsPages=#1%
    \multiply\@pdfdingsPages by #2%
    \advance\@pdfdingsPages by -1%
}
\newcommand*\incpdfdings[4][]{%
    \ifx\relax#1\relax%
        \pdfximage{#3}%
        \firstmaxpages=\pdflastximagepages%
        \pdfximage{#4}%
        \secondmaxpages=\pdflastximagepages%
        \ifnum\firstmaxpages<\secondmaxpages%
            \@latex@error{incpdfdings: Fail!}{}%
        \fi%
    \else%
        \firstmaxpages=#1%
    \fi%
    \curpage=0%
    \@@incpdfdings#2;%
    \loop\ifnum\firstmaxpages>\curpage%
        \advance\curpage by 1%
        \untilpage=\numexpr\curpage+\@pdfdingsPages\relax%
        \ifnum\untilpage>\firstmaxpages%
            \untilpage=\firstmaxpages%
        \fi%
        \@incpdfdings[frame=true]{\the\curpage}{\the\untilpage}{#3}{#2}%
        \ifnum\secondmaxpages>\untilpage\else%
            \untilpage=\secondmaxpages%
        \fi%
        \if@pdfdingsSecondFin\else%
            \@incpdfdings{\the\curpage}{\the\untilpage}{#4}{#2}%
        \fi%
        \ifnum\secondmaxpages=\untilpage%
            \@pdfdingsSecondFintrue%
        \fi%
        \advance\curpage by \@pdfdingsPages%
    \repeat%
}
\makeatother

\begin{document}

\incpdfdings{3x6}%
  {A.pdf}%
  {B.pdf}

\end{document}

假設我們有兩個名為 和 的 PDF 文件A.pdf,與包含上述程式碼的文件B.pdf位於同一目錄中。如果我使用一切正常.tex編譯程式碼,但如果我使用 編譯,則會收到以下錯誤訊息:pdflatexlualatex

\incpdfdings ...>\ifx \relax #1\relax \pdfximage 
                                                  {#3}\firstmaxpages =\pdfla...

l.68   {B.pdf}

問題

如何更改上面的程式碼以便可以使用引擎編譯它lualatex

更新

我嘗試%根據大衛的建議刪除所有 s 。我做對了嗎?

\newcommand*\@incpdfdings[5][]{%
    \includepdf[
        nup = #5,
        pages = {#2-#3},
        #1
    ]{#4}}
\newcommand*\@@incpdfdings{}%
\def\@@incpdfdings#1x#2;{%
    \@pdfdingsPages=#1
    \multiply\@pdfdingsPages by #2
    \advance\@pdfdingsPages by -1
}
\newcommand*\incpdfdings[4][]{%
    \ifx\relax#1\relax
        \saveimageresource{#3}%
        \firstmaxpages=\lastsavedimageresourcepages
        \saveimageresource{#4}%
        \secondmaxpages=\lastsavedimageresourcepages
        \ifnum\firstmaxpages<\secondmaxpages
            \@latex@error{incpdfdings: Der er ikke nok forsider.}{}%
        \fi
    \else
        \firstmaxpages=#1
    \fi
    \curpage=0
    \@@incpdfdings#2;%
    \loop\ifnum\firstmaxpages>\curpage
        \advance\curpage by 1
        \untilpage=\numexpr\curpage+\@pdfdingsPages\relax
        \ifnum\untilpage>\firstmaxpages
            \untilpage=\firstmaxpages
        \fi
        \@incpdfdings[frame=true]{\the\curpage}{\the\untilpage}{#3}{#2}%
        \ifnum\secondmaxpages>\untilpage\else
            \untilpage=\secondmaxpages
        \fi
        \if@pdfdingsSecondFin\else
            \@incpdfdings{\the\curpage}{\the\untilpage}{#4}{#2}%
        \fi
        \ifnum\secondmaxpages=\untilpage
            \@pdfdingsSecondFintrue
        \fi
        \advance\curpage by \@pdfdingsPages
    \repeat
}

答案1

您可以使用\usepackage{luatex85}它根據 luatex 原語定義大多數 pdftex 名稱。

相關內容