如何自动输出页面顺序以便在一张 Letter 纸上打印小册子的 8 页?

如何自动输出页面顺序以便在一张 Letter 纸上打印小册子的 8 页?

我对 tex 还不熟悉,所以很抱歉,如果这实际上很容易做到,但我找不到解决方案。

我想打印我的书的签名/小册子,将签名的两个独立部分打印在一张纸上。以下是 16 页签名的示例

   |  Page 1  A side  |  Page 1  B side  |  |  Page 2  A side  |  Page 2  B side  |
   |                  |                  |  |                  |                  |
   |   P        A     |     B       O    |  |   L         E    |   F         K    |
   |                  |                  |  |                  |                  |
   | Page 16  Page 1  |   Page 2 Page 15 |  | Page 12   Page 5 | Page 6   Page 11 |
   |                  |                  |  |                  |                  |
   |   N        C     |    D       M     |  |   J         G    |    H        I    |
   |                  |                  |  |                  |                  |
   | Page 14  Page 3  |  Page 4  Page 13 |  | Page 10   Page 7 |  Page 8   Page 9 |     

然后我会把这些页面剪成两半,并把签名放在一起。在我发现 TEX 之前,我会使用常规的文字处理程序,并通过手动指定顺序来输出 pdf,如下所示:

16,1,14,3,2,15,4,13,12,5,10,7,6,11,8,9

当事情这么小的时候这没什么,但要弄清楚顺序并检查一本书中 8 个签名中 40 多页的错别字,你可以想象要花很长时间。

我想问的是,有没有一种方法或包可以在 TEX 中输出 pdf 时自动执行这种页面排序?

提前谢谢了。

编辑: 我只是想添加一个快速的 bat 代码,我用它来通过 Malipivo 发布的 tex 代码快速运行 pdf(再次感谢!)而不必逐个运行每个文件

ECHO

SET /P UserInput=Please Enter File Name(including path):

copy %UserInput% "c:\path to the tex files folder\Book.pdf"

cd "c:\path to the tex files folder\"

pdflatex order.tex

pdflatex order2.tex

pdflatex order3.tex

pdflatex order4.tex

%This part is optional but it's nice to automatically move the finished file out of the working folder
rename order4.pdf Signature.pdf

move Signature.pdf Signatures\

答案1

当我们不能使用一步或两步编排时,为什么不使用步骤更多的方法呢?到目前为止,我还没有找到更好的方法,ConTeXt 可能提供了现成的解决方案。

我准备了一系列 TeX 文件:

  • 一本有特定页数的书(mal-arrange-0.tex)。像 OP 的例子一样,设为 16 页。应使用 8 的倍数。我测试了其他页面(20、21、22),重新排列是可行的,但添加了最接近 8 的倍数的空白页。
  • 本书的基本小册子重新排列(mal-arrange-1.tex)。在生产中我们不使用frame参数。
  • 将偶数页旋转 180 度(mal-arrange-2.tex),以便进一步使用。
  • 一篇论文的最终安排使用基本nup=2x2mal-arrange-3.tex)。这是 OP 要求的版本。
  • 如果需要,将纸张分成两页( A 面、 B 面)( mal-arrange-4.tex)。

我们可以运行任何主要的 LaTeX 引擎 - 我已经测试过pdflatex、、xelatexlualatex,例如

pdflatex mal-arrange-0.tex  
pdflatex mal-arrange-1.tex  
pdflatex mal-arrange-2.tex  
pdflatex mal-arrange-3.tex  
pdflatex mal-arrange-4.tex  

替代。在类似 Linux 的环境中,我们可能会使用如下命令:

# Getting the PDF files...
echo -n "Step"
engine="pdflatex" # pdflatex, xelatex or lualatex
for number in {0..4}; do
  echo -n " "$number
  $engine mal-arrange-$number.tex 1>/dev/null 2>/dev/null
done

选修的。我们可以通过执行以下几行来清理 Linux/CygWin 中的文件:

# Cleaning up files...
rm mal-arrange-{0..4}.{aux,log}  
rm mal-arrange-{0..3}.pdf  

我附上了 TeX 文件和 PDF 文件的预览。蓝色矩形代表页面。

% any LaTeX engine; mal-arrange-0.tex
\def\numberofpages{16} % to be changed from 16, e.g. 48; 
% any number can be used, there will be empty pages upto a multiple of 8, 
% e.g. when 17 pages is used, you will find 7 empty pages...
\documentclass[a4paper]{article}
\pdfpagewidth=\paperwidth
\pdfpageheight=\paperheight
\pagestyle{empty}
\parindent=0pt
\begin{document}
\font\mfont=cmr10 at 250pt \mfont
\newcount\malc
\malc=0
\loop
  \advance\malc by 1
  \newpage\mbox{}
  \vfil\hfil\thepage
\ifnum\malc<\numberofpages\repeat % e.g. 16 or 48, a multiple of 8 is best
\end{document}

mwe,第 0 部分,初始部分

% any LaTeX engine; mal-arrange-1.tex
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={-},booklet,landscape,frame]{mal-arrange-0.pdf}%frame to be turned off in production
\end{document}

mwe,第 1 部分

% any LaTeX engine; mal-arrange-2.tex
% there is some shift if xelatex engine is run with letterpaper (?)
\documentclass[a4paper]{article}
\usepackage{ifxetex}
\usepackage{pdfpages}
\def\mfile{mal-arrange-1.pdf}
\ifxetex % xelatex
  \def\mlast{\XeTeXpdfpagecount\mfile}
\else % pdflatex+lualatex
  \pdfximage{\mfile}
  \def\mlast{\pdflastximagepages}
\fi
%\pdfpagewidth=\paperwidth
%\pdfpageheight=\paperheight
\begin{document}
\newcount\mcounter \mcounter=0
\loop
\advance\mcounter by 1
\ifodd\mcounter
  \def\mbonus{0}
\else
  \def\mbonus{180}
\fi % End of \ifodd...
\includepdf[pages={\the\mcounter},angle=\mbonus]{\mfile}
\ifnum\mcounter<\mlast\repeat
\end{document}

mwe,第 2 部分

% any LaTeX engine; mal-arrange-3.tex
\documentclass[a4paper,landscape]{article}
\usepackage{pdfpages}
\pdfpagewidth=\paperwidth % for xelatex
\pdfpageheight=\paperheight % for xelatex
\begin{document}
\includepdf[pages={-},angle=-90,nup=2x2]{mal-arrange-2.pdf}
\end{document}

mwe,第 3 部分

% any LaTeX engine; mal-arrange-4.tex
\documentclass[a4paper]{article}
\usepackage{ifxetex}
\usepackage{pdfpages}
\def\mfile{mal-arrange-3.pdf}
\ifxetex % xelatex
  \def\mlast{\XeTeXpdfpagecount\mfile}
\else % pdflatex+lualatex
  \pdfximage{\mfile}
  \def\mlast{\pdflastximagepages}
\fi
\begin{document}
\newcount\mcounter \mcounter=0
\loop
\advance\mcounter by 1
\includepdf[pages={\the\mcounter},viewport=0 0 {0.5\paperheight} {\paperwidth},clip]{\mfile} % left half
\includepdf[pages={\the\mcounter},viewport={0.5\paperheight} 0 {\paperheight} {\paperwidth},clip]{\mfile} % right half
\ifnum\mcounter<\mlast\repeat
\end{document}

mwe,第 4 部分,最终部分

答案2

使用 makebook:

https://github.com/dgoodmaniii/makebook

这是一个 bash 脚本,它可以自动完成创建新文档的所有过程,以便使用 pdfpages 编译您的文档。它有很多选项:纸张大小、缩放比例、偏移量(例如,用于装订更正)、签名大小等等。我用的是手机,所以我无法尝试;但我脑海中浮现的命令是:

makebook -t octavo -H 2.75in -w 2.125in -i mydoc.pdf

这将输出 mydoc_sigs.pdf,它将是重新排列在八开签名版上的原始文档(每张纸 16 页,每面 8 页)。这假设您为这种小尺寸设计了页面;如果不是这样,您将需要一些不同的选项。它还假设页面方向为垂直。

免责声明:我编写并使用了 makebook,因此我对其实用性的看法有偏见。

答案3

这不是一个解决方案,但它太长了,无法作为评论。我发布它的原因是希望其他人能够将其变成解决方案。pdfpages可以创建签名。它还可以(通过一些手动配置)将生成的签名页放在最终文档的正确物理页面上。但是,其他每个物理页面的逻辑签名页都是颠倒的,我不知道如何防止这种情况。

我使用此代码编译了一个 16 页的 A6 尺寸 PDF。显然这不是您所需要的,但仅出于演示目的,它应该可以工作。此代码实际上无关紧要。我只是需要一个 16 页的 PDF 来进行实验。

\documentclass[a6paper]{book}
\usepackage{geometry}

\makeatletter
\newcommand{\mypages}{%
  \def\mynos{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}%
  \@for \xx:=\mynos\do{%
    \Huge Page \xx
    \newpage
    }}
\makeatother

\begin{document}

\mypages

\end{document}

我将 PDF 重命名为mypages.pdf。然后是以下代码:

\documentclass[a5paper]{book}
\usepackage{geometry}
\usepackage{pdfpages}

\begin{document}

\includepdf[pages=-,nup=1x2,landscape,signature=16]{mypages}

\end{document}

产生以下输出:

A5 上的签名页

因此,如果您打算在此时将签名打印在 A5(或美国同等尺寸)上,那么一切都会顺利。我重命名了 PDF mypages-sig.pdf

您可以pdfpages再次使用将内容放到正确的纸质纸张上,但这需要一些手动干预:

\documentclass[a4paper]{book}
\usepackage{geometry}
\usepackage{pdfpages}

\begin{document}

\includepdf[pages={1,3,2,4,5,7,6,8},nup=1x2,landscape]{mypages-sig}

\end{document}

不太优雅。更糟糕的是,不幸的是结果不是你想要的:

A4 上的变形签名

如果可以创建一个片面第一步没有尝试安排双面打印,但签名可能会起作用。但我不确定这是否可行。pdfpages似乎无论如何都会像双面打印一样旋转页面。所以最后的结果总是错误的。

另一件需要考虑的事情可能是pgfpages。这对于创建签名的第一阶段来说并不好。但对于第二阶段来说也许可以……

答案4

包裹pgfmorepages可以处理这种事情。小册子布局中没有 8 页 1 页的预定义布局(小册子布局中有 8 页 4 页,普通布局中有 8 页 1 页),但可以定义更多布局。有关详细信息,请参阅文档。

相关内容