我有一张棋盘游戏中的方块的 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