并排插入 PDF 页面

并排插入 PDF 页面

我有两个版本(A4 尺寸)的文档:new.pdfold.pdf

我想与合著者分享一份并排页面的 PDF,这样应该很容易比较输出中的变化。

这是一个部分解决方案效果很好仅当文件页数相同时

该部分解决方案的扩展被提出并利用来\pdflastximagepages计算先前插入的pdf文件的页数。因此这个数字可以用于循环。

因为我的 pdf 文件可能不同页数,上面提到的解决方案不起作用。

所以,我的想法是:

1. 计算两个文件的页数。

\sbox0{\includegraphics{new.pdf}}
\edef\PagesA{\number\pdflastximagepages}

\sbox1{\includegraphics{old.pdf}}
\edef\PagesB{\number\pdflastximagepages}

2.定义数字\Min=min(\PagesA,\PagesB)\Max=max(\PagesA,\PagesB)

3.1使用\Min插入两个文件中的页面

\foreach\n in{1,...,\Min}{
  \includepdfmerge[nup=2x1]{new.pdf,\n,old.pdf,\n}
}

4.最后,测试是否\Min=\PagesA\Min=\PagesB

4.1如果\Min=\PagesA则使用

\foreach\n in{\Min+1,...,\Max}{
  \includepdfmerge[nup=2x1]{old.pdf,\n} % old is on the right hand side
}

4.2如果\Min=\PagesB则使用

\foreach\n in{\Min+1,...,\Max}{
  \includepdfmerge[nup=2x1]{new.pdf,\n} % new is on the left hand side
}

我的问题是:如何实现(4)?

中(中)

\documentclass{report}
\usepackage[landscape,margin=0pt,a3paper]{geometry}
\usepackage{pdfpages,pgffor}


\begin{document}
\pagestyle{empty}
\sbox0{\includegraphics{new.pdf}}
\edef\PagesA{\number\pdflastximagepages}
\sbox1{\includegraphics{old.pdf}}
\edef\PagesB{\number\pdflastximagepages}
%\edef\Min{}
%\edef\Max{}

\foreach\n in{1,...,\Min}{
  \includepdfmerge[nup=2x1]{new.pdf,\n,old.pdf,\n}
}
\foreach\n in{\Min+1,...,\Max}{
%% test here to decide if new or old should be used
  \includepdfmerge[nup=2x1]{??.pdf,\n}
}
\end{document}

答案1

类似的解决方案之前评论中提到的那个. 不同之处在于:

  • 仅计算页码的最大值。(不使用最小值。)
  • 在每个迭代步骤中(在页面的 for 循环中)测试是否有两个页面或只有一个页面需要包含。
  • 考虑单页是否应该放在左边还是右边。

这里是 MWE:

\documentclass{report}
\usepackage[landscape,margin=0pt,a3paper]{geometry}
\usepackage{pdfpages,pgffor}

\begin{document}
\pagestyle{empty}
\sbox0{\includegraphics{new.pdf}}
\edef\PagesNew{\number\pdflastximagepages}
\sbox1{\includegraphics{old.pdf}}
\edef\PagesOld{\number\pdflastximagepages}
\newcounter{Max}
\setcounter{Max}{\maxof{\PagesNew}{\PagesOld}}

\foreach\n in{1,...,\theMax}{
    \ifnum\n>\PagesNew
        \includepdfmerge[nup=2x1,openright]{old.pdf,\n}
    \else
        \ifnum\n>\PagesOld
            \includepdfmerge[nup=2x1]{new.pdf,\n}
        \else
            \includepdfmerge[nup=2x1]{new.pdf,\n, old.pdf, \n}
        \fi
    \fi
}
\end{document}

相关内容