我对 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=2x2
(mal-arrange-3.tex
)。这是 OP 要求的版本。 - 如果需要,将纸张分成两页( A 面、 B 面)(
mal-arrange-4.tex
)。
我们可以运行任何主要的 LaTeX 引擎 - 我已经测试过pdflatex
、、xelatex
和lualatex
,例如
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}
% 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}
% 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}
% 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}
% 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}
答案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(或美国同等尺寸)上,那么一切都会顺利。我重命名了 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}
不太优雅。更糟糕的是,不幸的是结果不是你想要的:
如果可以创建一个片面第一步没有尝试安排双面打印,但签名可能会起作用。但我不确定这是否可行。pdfpages
似乎无论如何都会像双面打印一样旋转页面。所以最后的结果总是错误的。
另一件需要考虑的事情可能是pgfpages
。这对于创建签名的第一阶段来说并不好。但对于第二阶段来说也许可以……
答案4
包裹pgfmorepages
可以处理这种事情。小册子布局中没有 8 页 1 页的预定义布局(小册子布局中有 8 页 4 页,普通布局中有 8 页 1 页),但可以定义更多布局。有关详细信息,请参阅文档。