pdfpages 将奇数页旋转 180º

pdfpages 将奇数页旋转 180º

我正在尝试使用 创建一本小册子pdfpages。到目前为止,它运行正常,但我想调整页面方向,使所有跨页/页面“直”(将奇数页旋转 180º)。我尝试了不同的pdfpages选项,但都没有奏效。

现在我有这个:

\documentclass[a4paper,landscape]{article}

\usepackage{pdfpages}

\begin{document}
    \includepdf[nup=2x1,pages=-,booklet,noautoscale,frame]{phi.pdf}
\end{document}

这就是我想要实现的目标:

将奇数图像旋转 180º

答案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) 添加一个选项来禁用该行。

相关内容