我正在尝试使用 创建一本小册子pdfpages
。到目前为止,它运行正常,但我想调整页面方向,使所有跨页/页面“直”(将奇数页旋转 180º)。我尝试了不同的pdfpages
选项,但都没有奏效。
现在我有这个:
\documentclass[a4paper,landscape]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[nup=2x1,pages=-,booklet,noautoscale,frame]{phi.pdf}
\end{document}
这就是我想要实现的目标:
答案1
这里建议使用文件 step1.tex 作为中间文件。
\documentclass[landscape]{article}
\usepackage{pgffor}
\usepackage{etoolbox}
\usepackage{pdfpages}
\usepackage{filecontents}
\begin{filecontents*}{\jobname-step1.tex}
\documentclass[a4paper,landscape]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[nup=2x1,pages=-,booklet,noautoscale,frame]{phi.pdf}
\end{document}
\end{filecontents*}
\immediate\write18{pdflatex \jobname-step1}% compiles \jobname-step1.tex
\begin{document}
\pdfximage{\jobname-step1.pdf}% counts pages in \jobname-step1.pdf
\foreach \p in {1,...,\the\pdflastximagepages}{%
\ifnumodd{\p}%
{\includepdf[pages=\p,angle=180]{\jobname-step1}}%
{\includepdf[pages=\p]{\jobname-step1}}%
}
\end{document}
注意这pdflatex --shell-escape
是必需的。否则您必须注释掉该行并单独\immediate...
编译文件。\jobname-step1
答案2
这是一个无需任何中间文件或 pdfpages.sty 补丁的解决方案……
\documentclass[a4paper,landscape]{article}
\usepackage{pdfpages}
\usepackage{pgffor}
\usepackage{etoolbox}
\newcommand\mybooklet[2][]{
\pdfximage{#2}% counts pages in ODF
\pgfmathtruncatemacro\totalpages{\the\pdflastximagepages}
\pgfmathtruncatemacro\halfpages{ceil(\totalpages/2)}%
\ifnumodd{\totalpages}{%
\includepdf[pages={{},1},nup=2x1,#1]{#2}%
\foreach \pfirst[evaluate=\pfirst as \plast using int(\totalpages+2-\pfirst)]
in {2,...,\halfpages}{%
\ifnumodd{\pfirst}%
{\includepdf[pages={\plast,\pfirst},nup=2x1,#1]{#2}}%
{\includepdf[pages={\pfirst,\plast},nup=2x1,#1]{#2}}%
}%
}{%
\foreach \pfirst[evaluate=\pfirst as \plast using int(\totalpages+1-\pfirst)]
in {1,...,\halfpages}{%
\ifnumodd{\pfirst}%
{\includepdf[pages={\plast,\pfirst},nup=2x1,#1]{#2}}%
{\includepdf[pages={\pfirst,\plast},nup=2x1,#1]{#2}}%
}%
}%
}
\begin{document}
\mybooklet[frame,noautoscale]{phi.pdf}
\end{document}
答案3
另一个解决方案是制作 pdfpages.sty 的本地副本并注释以下行:
\ifAM@sigrotate angle=180,\fi
(最初它有前导空格)。
您还可以修改 pdfpages.sty (例如,制作 mypdfpages.sty) 添加一个选项来禁用该行。