用 A4 纸填充图像网格,以便进行经济打印,并留出一些空间用于剪刀

用 A4 纸填充图像网格,以便进行经济打印,并留出一些空间用于剪刀

我想打印一张满是相同二维码图像的 A4 纸。我想要更优雅的方式来回答这个问题这里,是的,我可以让它像那样工作,但我想为剪刀留下足够的空间,并且在边缘附近不留空间并且间距相等(是否可以使用 for 循环或其他更简单的方法做到这一点?) - 可能吗?

在此处输入图片描述

答案1

看,妈妈!没有循环!:)

摘自 TeXbook,练习 21.8(第 225 页)。

\documentclass{minimal}
\usepackage[a4paper,margin=2mm]{geometry}
\usepackage{graphicx}

\sbox0{%
  \includegraphics{image}%
  \kern2mm
  \vrule width 0pt depth 2mm}

\setlength{\parindent}{0pt}

\begin{document}

\null
\cleaders\hbox to\textwidth{\leaders\copy0\hfill}\vfill

\end{document}

在此处输入图片描述

答案2

这是使用forloop包裹它使用计数器实现基本的嵌套/递归 for 循环。给定一些计数器<cnt>,接口

\forloop[<step>]{<cnt>}{<start>}{<condition>}{<loop content>}

初始化<cnt><start>并执行<loop content>直到<condition>满足。可以设置可选的第一个参数<step>(默认为1)来修改计数器步长:

在此处输入图片描述

\documentclass{article}
\usepackage[margin=2cm,a4paper]{geometry}% http://ctan.org/pkg/geometry
\usepackage{forloop}% http://ctan.org/pkg/forloop
\usepackage{pst-barcode}% http://ctan.org/pkg/pst-barcode
\pagestyle{empty}% No page headers/footers
\begin{document}
\setlength{\baselineskip}{2cm}%
\newcounter{qrcodesA}\newcounter{qrcodesB}%
\forloop{qrcodesA}{0}{\value{qrcodesA}<12}{% Rows
  \noindent%
  \forloop{qrcodesB}{0}{\value{qrcodesB}<9}{% Columns
    \psbarcode{tex.stackexchange.com}{}{qrcode}\hspace{2cm}}\hspace*{\fill}\\%
  }%
}
\end{document}

直接使用\psbarcode会创建一个无量纲对象(宽度和高度为0pt)。的间距2cm是任意的,的设置也是任意的\baselineskip。您可以根据自己的剪刀剪裁专业知识进行修改。

这需要一个latex-> dvips->ps2pdfxelatex编译序列。

答案3

您可以使用 Knuth 的\loop和进行循环\repeat。这里是一些最基本的代码。您需要试验图像之间的间距,以及图像的数量和缩放比例。

\documentclass[a4paper]{article}
\usepackage[top=.1cm, left=0.1cm,bottom=.1cm,right=0.1cm]{geometry}
\usepackage{graphicx}
\def\qcode{\includegraphics{./graphics/qrcode}}
\parindent0pt
\pagestyle{empty}
\begin{document}
\newcounter{cnt}
\setcounter{cnt}{0}
\loop
\qcode
\stepcounter{cnt}
\ifnum\thecnt<185
\repeat
\end{document}

结果如下。您还可以使用 pstricks 用 LaTeX 打印二维码。

在此处输入图片描述

答案4

一种方法是根据 计算一行中可容纳的数量\WidthOfImage,并根据 计算行数\HeightOfImage(根据剪刀所需的间距进行调整):

\documentclass{article}

\usepackage[demo]{graphicx}
\usepackage[showframe]{geometry}
\usepackage{pgf}
\usepackage{pgffor}

\newlength{\Separation}%
\setlength{\Separation}{0.1cm}% Space for the "scissors"

\newlength{\WidthOfImage}%
\setlength{\WidthOfImage}{2.0cm}%

\newlength{\HeightOfImage}%
\setlength{\HeightOfImage}{2.0cm}%

\pgfmathtruncatemacro{\NumberOfRows}{\textheight/(\HeightOfImage+\Separation)}%
\pgfmathtruncatemacro{\NumberOfColumns}{\textwidth/(\WidthOfImage+\Separation)}%

\begin{document}
%NumberOfRows = \NumberOfRows\par
%NumberOfColumns = \NumberOfColumns\par
%
\foreach \x in {1,...,\NumberOfRows}{\noindent%
    \foreach \y in {1,...,\NumberOfColumns}{%
        \includegraphics[width=\WidthOfImage,height=\HeightOfImage]{image}%
        \hspace{\Separation}%
    }%
    \newline%
}%
\end{document}

相关内容