我想提供约2000个图形(emojis) for Latex用户。它们最初都在单独的SVG文件(约1–10 KB)中,具有长宽比,但也有一个自动生成的 spritesheet ,它们全部包含为<symbol>
。由于绝对数量超出了某些限制(例如,Github预览版限制为1000个),并且小文件大小浪费了块大小较大的文件系统上的大量空间,并且还潜在地需要大量网络请求(例如HTTP 1.x),我考虑将它们作为单个页面放入一个PDF文件中。各自的Latex软件包支持将PDF中的特定页面添加为图形,但是我还没有找到一种方法来利用SVG 符号。因此,我目前更喜欢PDF解决方案。但是,虽然我知道如何将单个SVG转换为单页PDF,但是G。使用Inkscape,我不确定要使用哪些程序来创建小型,快速且可移植的(例如,基于npm的)脚本,以从数百个SVG文件或单个SVG子表格中制作单个多页PDF。有什么建议吗?理想情况下,将使用SVG文件名所包含的4个以上的十六进制数字来对PDF页面进行排序,甚至可以对它们进行标记。
答案 0 :(得分:1)
这是受我在另一个答案中使用的an approach的启发。要使<symbol>
可见,可以使用XSLT转换,将每个图标放在HTML页面上的单独<svg>
容器中。然后使用CSS @media print
规则将它们分发到单独的页面上。这样,您可以在浏览器中打开文件,然后从那里将其打印为pdf。
首先,您需要将此行添加到Spritesheet的开头:
<?xml-stylesheet type="text/xsl" href="sprites_paged.xslt" ?>
引用的sprites_paged.xslt
如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:template match="/">
<html>
<head>
<meta charset="UTF-8"></meta>
<style>
svg { display: none; }
/* icon sizes to your liking */
.icon { display: block; width: 1in; height: 1in; }
@media print {
.icon { break-after: page; }
}
</style>
</head>
<body>
<xsl:copy>
<xsl:copy-of select="//svg:svg"/>
</xsl:copy>
<xsl:for-each select="//svg:symbol">
<svg class="icon" xmlns="http://www.w3.org/2000/svg">
<xsl:attribute name="viewBox"><xsl:value-of select="@viewBox"/></xsl:attribute>
<use>
<xsl:attribute name="xlink:href">#<xsl:value-of select="@id"/></xsl:attribute>
</use>
</svg>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>