由于includepdf
自动openright
检测中跳过页面,偏移无法可靠工作
情况与问题
为了我的目的,我想合并和偏移一组给定的 pdf。当我包含单个 pdf 并设置 -option 时,offset
一切都正常,但包含多个 pdf 会导致offset
某些部分失败。
更准确地说,如果跳过页面,它就会失败,因为前一章以奇数页码结束;例如,chapter_1.pdf
在第 49 页结束,但chapter_2.pdf
在第 51 页开始。这意味着 MWE 中的第 1 部分和第 3 部分对我有用,但第 2 部分和第 4 部分则不行。
我通过手动检查“缺失”页面解决了这个问题,因为添加openright
到所有调用都不起作用。不过,我更喜欢一个选项。
由于我不是作者,所以我无法上传原始文件,但唯一相关的信息是排版twoside
和章节从奇数页开始的事实。
问题
如何在跳过页面的 pdfpages 中设置双边偏移?
或者
如何检测跳过的页面并自动添加
openright
?
平均能量损失
生成一些“进口商”副本,然后在“进口商”中根据需要调整名称。
importee.tex
\documentclass[a4paper,twoside]{article}
\usepackage{lipsum}
\begin{document}
\lipsum[1-14]
\end{document}
importer.tex
\documentclass[
a4paper,
twoside % to make offset odd/even-page-sensitive
]{article}
\usepackage{pdfpages}
\includepdfset{pages=-, offset={25pt 0pt}} % not reliably working for all calls
\begin{document}
\includepdf[]{./test_importee_1.pdf}
\includepdf[]{./test_importee_2.pdf}
\includepdf[]{./test_importee_3.pdf}
\includepdf[]{./test_importee_4.pdf}
\end{document}
答案1
虽然您的示例乍一看可能很奇怪,但这不是错误,而且完全正确。请重新阅读offset
文档中的描述。它说:
抵消移动插入页面的原点。参数应为二维,以空格分隔。在“单面”文档中,正值分别将页面移至右侧和顶部边距,而在“双面”文档中,正值分别将页面移至外部和顶部边距。
因此,在twoside
文档中offset
,正面和反面页面会朝相反方向移动。引入此选项是为了适应将单面文档纳入双面文档时的布局。
当尝试将双面文档包含到单面文档中,或将双面文档包含到双面文档中时,事情变得更加复杂。现在,如果从正面页面开始,则需要正向移位,如果从反面页面开始,则需要负向移位。问题是您事先不知道您是从正面页面还是反面页面开始。到目前为止,pdfpages 还不支持这种情况,但是一旦您有一个可用的\ifthispageodd
宏,实现这一点并不困难。(请注意,这样的宏并不像看起来那么容易实现。)例如,koma-script 提供了一个正确的\Ifthispageodd
。这是一个例子:
\documentclass[twoside, paper=a4]{scrartcl}
\usepackage{pdfpages}
\includepdfset{pages=-}
\begin{document}
\newpage
\Ifthispageodd{%
\includepdf[offset={25pt 0pt}]{importee.pdf}}{%
\includepdf[offset={-25pt 0pt}]{importee.pdf}}
\newpage
\Ifthispageodd{%
\includepdf[offset={25pt 0pt}]{importee.pdf}}{%
\includepdf[offset={-25pt 0pt}]{importee.pdf}}
\newpage
\Ifthispageodd{%
\includepdf[offset={25pt 0pt}]{importee.pdf}}{%
\includepdf[offset={-25pt 0pt}]{importee.pdf}}
\newpage
\Ifthispageodd{%
\includepdf[offset={25pt 0pt}]{importee.pdf}}{%
\includepdf[offset={-25pt 0pt}]{importee.pdf}}
\end{document}
编辑:\Ifthispageodd
在包中定义scrextend.sty
,无需加载 koma-script 类即可使用。