我有两个版本(A4 尺寸)的文档:new.pdf
和old.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}