根据页面大小连续打印尽可能多的图像

根据页面大小连续打印尽可能多的图像

我有一张棋盘游戏中的方块的 SVG 图像。我想打印 3 次,以便打印页面并剪下用于游戏的方块。但是,我不知道如何打印尽可能多的方块以适合页面:在变体 AI 中,三个方块排成一行,但第三个方块与页面边框重叠并被剪掉。在变体 B 中,每个方块都排成一行,导致页面上有太多空白。

我的上下文代码:

\setuppapersize[letter, singlesided]

% Extends beyond right edge
\define\tileBlueA{\dontleavehmode\externalfigure[blue.svg][frame=on]}
% Each image on its own line
\define\tileBlueB{\externalfigure[blue.svg][frame=on]}

\startdocument

Variant A:

\tileBlueA\tileBlueA\tileBlueA

Variant B:

\tileBlueB\tileBlueB\tileBlueB

\stopdocument

svg 图像:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="70mm"
   height="60.812588mm"
   viewBox="0 0 70 60.812588"
   version="1.1">
  <g transform="translate(-7.9019751,26.241753)">
    <path
       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.53316474;stroke-miter
       d="m -116.41665,214.60119 -32.43408,15.26465 -61.61849,28.19872 -29.43661,-20.45642 -55.23006,-39.26382 2.99747
       transform="matrix(0.2740972,-0.192523,0.192523,0.2740972,68.200203,-77.001058)" />
    <circle
       style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2;stroke-miterlimit:4
       cx="42.901974"
       cy="4.1645398"
       r="14.552083"/>
  </g>
</svg>

我怎样才能打印一行中尽可能多的图块(此处为 2 个)?

(我不想缩放它们,并且不想手动插入换行符,因为我会有很多图块。)

答案1

一旦将 SVG 嵌入主文件,您的 SVG 就无法在我的计算机或 PDF 查看器中使用,我不知道该怪谁。所以我从 Wikimedia Commons 中选择了一些示例。由于 TeX 端存在奇怪的舍入问题,我在 Lua 端进行了所有计算,这可能有误或不美观,但很有用。当您的图片太宽时,它可能会崩溃……

\showframe
\setuppapersize[letter, singlesided]
\def\howmanyinarow#1#2%
{\setbox\scratchbox\hbox{#2}
%In order to avoid rounding annoyances
\scratchcounter
    \luaexpr
    {math.floor(\the\numexpr\textwidth\relax/\the\numexpr\wd\scratchbox\relax)}
    \relax
\dorecurse{#1}
    {\quitvmode{#2}%
    \doifelse
    {\luaexpr{\recurselevel\letterpercent\the\scratchcounter}}{0}
    {\par}{}% <- Don't remove me!
    }}
\starttext
%https://upload.wikimedia.org/wikipedia/commons/f/f8/Stylized_uwu_emoticon.svg
\howmanyinarow{10}{\externalfigure[Stylized_uwu_emoticon.svg][frame=on]}
%https://upload.wikimedia.org/wikipedia/commons/f/f6/Caoandanielinbluegood.svg
\howmanyinarow{100}{\externalfigure[Caoandanielinbluegood.svg][frame=on]}
\stoptext

在此处输入图片描述

编辑:如果你只想要(1)行,你可以直接\leaders使用

\showframe
%Shamelessly stolen from TeX for the Impatient
%Easier
\def\howmanyinarow#1{\line{\leaders\hbox{#1}\hfil}}
\starttext
%https://upload.wikimedia.org/wikipedia/commons/f/f6/Caoandanielinbluegood.svg
\howmanyinarow{\externalfigure[Stylized_uwu_emoticon.svg][frame=on]}

%https://upload.wikimedia.org/wikipedia/commons/f/f6/Caoandanielinbluegood.svg
\howmanyinarow{\externalfigure[Caoandanielinbluegood.svg][frame=on]}
\stoptext

在此处输入图片描述

相关内容