如何才能双面打印索引卡且每页有多张卡片?

如何才能双面打印索引卡且每页有多张卡片?

Stackexchange 上有几个关于“学习卡”的答案,指出了几种解决方案,但这部分不是我的问题。我已经设计了它们,制作了正面和背面的 (DIN A 6),并获得了一个 PDF,其中包含每张索引卡的连续页面“正面:背面”。

一张带有正面和背面的索引卡

现在我要打印它们,但我的问题就从这里开始。

这个想法是将这些卡片的 2x2 排列在 DIN A4 纸上,这样我就可以用常用的硬件打印它们。这可以通过使用pdfpages包后处理第一个名为“cards.pdf”的 PDF 来实现,然后创建第二个:

\documentclass[landscape]{scrartcl}
\usepackage{pdfpages}

\begin{document}
\includepdf[frame, pages={1, 3, 5, 7}, nup=2x2]{cards.pdf}
\includepdf[frame, pages={6, 8, 2, 4}, nup=2x2]{cards.pdf}
\end{document}

索引卡 2x2

效果很好,但您可能已经意识到,我必须手动指定页码,如果卡片数量很多,这可能是一项艰巨的任务。一定有更简单的方法来实现这一点。

这就是我的问题:我怎样才能双面打印这些索引卡,每页打印多张卡片,使得一张卡片的正面后面正好贴合其背面,位于打印纸的最里面?

答案1

较长的文章

我使用的是双重翻转/反射方法。它需要几个步骤,请使用pdflatexlualatex。下面的示例可以稍作修改以与 一起使用xelatex,请参阅如何自动输出页面顺序以便在一张 Letter 纸上打印小册子的 8 页?,其中我使用了\XeTeXpdfpagecount而不是\pdfximage\pdflastximagepages。然后所有三个主要的 LaTeX 引擎都可以运行。

步骤 1:要打印的材料

我正在模拟 32 张不相关的名片,两面都排版。我们将尝试在 A4 纸上打印 4x4 张,双面打印和长边打印。我附上了 TeX 代码 ( mal-pdf-part1.tex) 和前八页(共 64 页)的预览。

% run: any LaTeX engine mal-pdf-part1.tex
\documentclass[a4paper,landscape]{article}
\paperwidth=0.25\paperwidth
\paperheight=0.25\paperheight
\pdfpagewidth=\paperwidth
\pdfpageheight=\paperheight
\usepackage{tikz}
\begin{document}
\newcount\malc 
\malc=0
\loop
\advance\malc by 1
\foreach \mcolor/\mside in {green/front,blue/back} {%
\newpage
\pagecolor{\mcolor}%
\begin{tikzpicture}[remember picture, overlay]
\node[font=\bfseries,scale=10,yshift=0.8mm] at (current page) {\the\malc}; % front side
\node[font=\bfseries,scale=4,yshift=-4mm] at (current page) {\mside{} side}; % back side
\end{tikzpicture}%
}% End of \foreach...
\ifnum\malc<32\repeat % E.g. a number of business cards...
\end{document}

mwe,第 1 部分


步骤 2:重新排列奇数页(正面/右页)

一般来说,我们只需要选择它们(步骤 2a)并使用包nup=4x4中的basic pdfpages(步骤 2b)。我附上了 TeX 文件和 PDF 文件的预览。这是文件mal-pdf-part2a.tex(预览由 8 页组成,共 32 页):

% run: pdflatex or lualatex mal-pdf-part2a.tex
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\def\malfile{mal-pdf-part1.pdf}
\pdfximage{\malfile}
\newcount\malc \malc=0
\loop
\advance\malc by 1%
\ifnum\malc<\pdflastximagepages
  \ifodd\malc\else
  \includepdf[fitpaper,pages={\the\malc},angle=90]{\malfile}
  \fi
\repeat
\end{document}

mwe,步骤 2a

这是mal-pdf-part2b.tex文件:

% run: pdflatex or lualatex mal-pdf-part2b.tex
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={-},nup=4x4,frame]{mal-pdf-part2a.pdf}
\end{document}

mwe,步骤 2b


步骤 3:重新排列偶数页(背面/反面页面)

在步骤 3a 中,我们选择偶数页,旋转它们(如果需要,长边打印时旋转 -90 度,短边打印时旋转 90 度)并首次反映它们。这是文件mal-pdf-part3a.tex和 32 页中的前 8 页的预览:

% run: pdflatex or lualatex mal-pdf-part3a.tex
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\def\malfile{mal-pdf-part1.pdf}
\pdfximage{\malfile}
\newcount\malc \malc=0
\loop
\advance\malc by 1%
\ifnum\malc<\pdflastximagepages
  \ifodd\malc
  \includepdf[fitpaper,pages={\the\malc},angle=-90,reflect]{\malfile}
  % We would use angle=90 for short-edge duplex printing.
  % We use angle=-90 for long-edge duplex printing.
  \fi
\repeat
\end{document}

mwe,步骤 3a

这是mal-pdf-part3b.tex文件:

% run: pdflatex or lualatex mal-pdf-part3b.tex
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={-},nup=4x4,frame]{mal-pdf-part3a.pdf}
\end{document}

mwe,步骤 3b


步骤 4:将 PDF 文件放在一起

我们的最后一步是将这两个 PDF 文件放在一起。最终的 PDF 文件由 4 页(2 张 A4 纸)组成。我们可以看到,我们再次反射了后面的页面。这是在重新排列步骤之后发生的,因此打印后矩形将开始相互契合。

我附上了最后的 TeX 源代码和最终 PDF 文件的预览。此文件已准备好打印(长边、双面、A4 纸),然后每张纸切成 16 块。

在生产中,我们必须注意,由于技术限制(办公室激光和墨水打印机),页面周围通常有 5 毫米的空间,打印机无法打印。我们通常在最后一步使用比例参数(本例中两次)。我scale=1在这个例子中使用的是,在生产中我通常使用scale=0.92

% run: pdflatex or lualatex mal-pdf-part4.tex
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\def\malfile{mal-pdf-part2b.pdf}
\pdfximage{\malfile}
\newcount\malc % inicialization of page counter
\malc=0 % setting the counter
\loop
\advance\malc by 1%
\includepdf[fitpaper,pages={\the\malc},scale=1]{mal-pdf-part2b.pdf} % 0.92 in production
\includepdf[fitpaper,pages={\the\malc},reflect,scale=1]{mal-pdf-part3b.pdf} % 0.92 in production
\ifnum\malc<\pdflastximagepages\repeat
\end{document}

mwe,步骤 4

结束语

在此示例中,我们运行:

pdflatex mal-pdf-part1.tex  
pdflatex mal-pdf-part1.tex  
pdflatex mal-pdf-part2a.tex  
pdflatex mal-pdf-part2b.tex  
pdflatex mal-pdf-part3a.tex  
pdflatex mal-pdf-part3b.tex  
pdflatex mal-pdf-part4.tex  

我们可以轻松地将nup参数从更改为任何我们喜欢的内容,但是,在和 中也4x4需要进行更改。mal-pdf-part2b.texmal-pdf-part3b.tex

我们在生产中不使用frame参数(相同的两个文件)。

如果我们需要在文档中间某处输入一个空白页,我们通常\newpage\mbox{}在第一步中使用(在我们排版正面和背面时使用两次)。

如果我们输入较少的论文(本例中小于 32 篇),则mal-pdf-part1.tex剩余空间将为空。由于双重反射方法,空白处也将适合。我附上了一个我输入 30 页而不是 32 页的示例。

mwe 里面有一些空白页

答案2

编号与我认为您想要的不匹配,但是这应该可以实现您想要的:

我使用\foreach循环遍历假设每页有 4 张卡片的页面。如果卡片数量不足,则没有采取任何预防措施。

\documentclass[landscape]{scrartcl}
\usepackage{pdfpages}
\usepackage{pgffor}

\newcommand\setmycard[2]{%
  \edef\myimportedpagenumber{\number\numexpr(#1-1)*8+#2\relax}%%
  \expandafter\edef\csname ae@card@\number\numexpr#2\relax\endcsname{\myimportedpagenumber}}
\newcommand\getmycard[1]{\csname ae@card@\number\numexpr#1\relax\endcsname}

\begin{document}

\foreach \mycard in {1,2,3}
  {%%
    \setmycard\mycard{1}%%
    \setmycard\mycard{2}%%
    \setmycard\mycard{3}%%
    \setmycard\mycard{4}%%
    \setmycard\mycard{5}%%
    \setmycard\mycard{6}%%
    \setmycard\mycard{7}%%
    \setmycard\mycard{8}%%
    \includepdf[frame,pages={\getmycard{1},
                             \getmycard{3},
                             \getmycard{5},
                             \getmycard{7}},nup=2x2] {cards.pdf}%%
    \includepdf[frame,pages={\getmycard{6},
                             \getmycard{8},
                             \getmycard{2},
                             \getmycard{4}},nup=2x2] {cards.pdf}%%
  }

\end{document}

相关内容