如何对包含的 PDF 页面进行重新排序以进行批量剪切?[节省纸张]
情况与问题
我收到不断更新的讲座稿,这些稿件是 A4 格式的 PDF,我需要打印。由于边距较大(默认的 LaTeX 文档通常如此),文本区域显然适合 A5 纸。为了节省一些纸张,我想将这些 A4 文件打印为 A5 格式,但不调整它们的大小(因为东西会变得太小),而是裁切边距。由于我不知道最终会有多少页,所以我不能使用signature
。
我知道从美学角度来说这是不好的。
在下面的 MWE 中,您可以看到,我正在从使用命令找到的页边距中修剪包含的页面(尝试使用 not nup=1x2, landscape
but ) 。但是,我无法重新排列页面的顺序,以便我可以批量剪切它们并获得有序的普通 A5 纸张。稍后我想剪切页面并手动将它们粘合或打孔装订在一起。frame, noautoscale
\layout
nup=1x2
问题
包括如何重新订购
pdfpages
以nup=1x2, landscape
获取批量可剪切的 A5 页面?
让我用改编的方案展示所需的顺序这里(请给予村庄信用)如果订单如下,处理更大批量会更加实用:
..[think of overlaying not folding here].. [folding-view here]
(front of 1st paper) (back of 1st paper) (stacking order)
________ ________ ________ ________ /|======>>/| ...==>>/|
| | | | | | 1 ->/ | 3 ->/ | h-1->/ |
| | | | | | / | / | / |
| | | | | | / 2 | / 4 | / h |
|_____1__|___h+1__| |__2_____|__h+2___| |\ | |\ | |\ |
| \ | | \ | ... | \ |
(front of 2nd paper) (back of 2nd paper) | \ | \ | \
________ ________ ________ ________ | | | | | |
| | | | | | |h+1| |h+3| |n-1|
| | | | | | \ | \ | \ |
| | | | | | \ |<-h+2 \ |<-h+4 \ | <- n
|_____3__|___h+3__| |__4_____|__h+4___| \|======>>\| ...==>>\|
...
(front of last paper) (back of last paper)
________ ________ ________ ________
| | | | | |
| | | | | |
| | | | | |
|___h-1__|___n-1__| |__h_____|__n_____|
... 对于n
带有 的页面h := n/2
。
MWE
\documentclass[
12pt,
twoside
]{article}
\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
% Border space as numbered in layout scheme ( https://tex.stackexchange.com/a/376643/ )
% top = 2 - 4 + 5 + 6
\newlength{\distup}
\setlength{\distup}{\dimexpr\voffset+1in+\topmargin+\headheight+\headsep\relax} % looks good with geometry a4paper but not without
% % left = 1+3
\newlength{\distleft}
\setlength{\distleft}{\dimexpr1in+\hoffset+\oddsidemargin\relax}
% \addtolength{\distleft}{20pt} % doesnt work due to twosided import
% % bottom = 11 + ? // = paperheight - oben - textheight
\newlength{\distdown}
\setlength{\distdown}{\dimexpr\paperheight-\distup-\textheight\relax}
% \addtolength{\distdown}{5pt} % we can cut a little more
% % right = 9 + 10 + ? // = paperwidth - link - textwidth
\newlength{\distright}
\setlength{\distright}{\dimexpr\paperwidth-\distleft-\textwidth\relax}
% \addtolength{\distright}{20pt} % doesnt work due to twosided import
% %
\begin{document}
\includepdf[
pages=-,
nup=1x2,
landscape,
clip,
trim={{\distleft} {\distdown} {\distright} {\distup}},
offset={-9pt 0pt}, % -9pt centers // works with twoside but not nup=1x2, landscape
% noautoscale,
frame
]{testfile.pdf}
\end{document}
我正在使用给定的 PDF,但这应该适用于 MWE(尽管我注意到,我的边距似乎不适合这里?):
testfile.tex
\documentclass[
12pt
]{article}
\usepackage{pdfpages}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}
笔记:
第一种情况“(可能更容易实现?)”在我下面的答案中得到了解决,但上面的其余问题没有得到解决。我会继续提出这个问题,以便集中精力并接受该部分的答案。
答案1
TeXlive 中有booklet.tex
宏(来自 olsak-misc 包)。用法:创建一个包含两行的文档:
\def\document{filename} % filename.pdf will be processed
\input booklet
然后运行pdftex
使用这个两行文件运行(没有 LaTeX,没有 pdfLaTeX)。该宏在书中有记录TeX 实用主义(仅限捷克语)。或者,您可以使用命令行:
pdftex '\def\document{filename} \input booklet'
答案2
好吧,你总是可以计算出 的正确值signature
。你只需要知道 pdf 的总页数,这可以通过 TeX 引擎特定的命令(例如\lastsavedimageresourcepages
luaTeX)访问。其他引擎的命名不同。
在以下示例中,我使用 pdfpages 中的一些独立于 TeX 引擎的内部宏(例如\AM@pagecount
)来获取总页数。经过几次简短计算后,计数器便mysig
包含了正确的值signature
。
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\makeatletter
\newcounter{mysig}
\newcommand\myincludepdf[2][]{%
\def\AM@currentdocname{#2}%
\AM@getpagecount
\setcounter{mysig}{\AM@pagecount-\AM@pagecount/4*4}%
\ifnum\c@mysig>0
\setcounter{mysig}{\AM@pagecount/4*4+4}%
\else
\setcounter{mysig}{\AM@pagecount/4*4}%
\fi
\includepdf[#1,landscape, pages=-, signature=\c@mysig]{#2}%
}
\makeatother
\begin{document}
\myincludepdf{dummy.pdf}
\end{document}
答案3
所以我找到了这个已解决的问题这回答了问题的一部分:
任何一个(可能更容易实现?):(front of 1st paper) (back of 1st paper) ________ ________ ________ ________ | | | | | | | | | | | | | | | | | | |_____1__|_____3__| |__2_____|__4_____|
应该像这样堆叠
/|=====>>/| 1 ->/ | 5 ->/ | / | / | / 2 | / 6 | |\ | |\ | | \ | | \ | ... | \ | \ | | | | | 3 | | 7 | \ | \ | \ |<- 4 \ |<- 8 \|=====>>\|
像这样使用pgfpmorepages
,创建所需的布局:
\documentclass[
12pt,
% a4paper
twoside
]{article}
\usepackage[a4paper]{geometry}
\usepackage{pgfmorepages} % before pdfpages !
\usepackage{pdfpages}
%
\newlength{\distup}
\setlength{\distup}{\dimexpr\voffset+1in+\topmargin+\headheight+\headsep\relax}
\newlength{\distleft}
\setlength{\distleft}{\dimexpr1in+\hoffset+\oddsidemargin\relax}
\newlength{\distdown}
\setlength{\distdown}{\dimexpr\paperheight-\distup-\textheight\relax}
\newlength{\distright}
\setlength{\distright}{\dimexpr\paperwidth-\distleft-\textwidth\relax}
%
\pgfmorepagesloadextralayouts
\pgfpagesuselayout{4 on 2, book format}[
a4paper,
landscape,
% border code=\pgfusepath{draw}
]
\begin{document}
\includepdf[
pages=-,
clip,
trim={{\distleft} {\distdown} {\distright} {\distup}},
frame
]{testfile.pdf}
\end{document}
编辑:
- 这显然不允许翻转每隔一页(或者我无法弄清楚如何翻转);
reverse second
引发了编译错误)。请随意改进这个答案或添加改进的答案。 book format
和短页边装订但打印选项可以解决问题!