我想打印一张满是相同二维码图像的 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
->ps2pdf
或xelatex
编译序列。
答案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}