棋盘包生成的任何棋盘都可以导出为 svg 吗?

棋盘包生成的任何棋盘都可以导出为 svg 吗?

棋盘包生成的任何棋盘都可以导出为 svg 吗?

答案1

最简单的方法是使用pdf2svg。另一种方法是dvisvgm使用 WOFF 字体嵌入,但它需要一些后期处理。

LaTeX MWE(来自棋盘手册,第 15 页):

\documentclass{standalone}
\usepackage{chessboard}
\begin{document}
\def\whitepieces{kc3, nc2, pa2, Pd4}
\chessboard[setwhite=\whitepieces,
addblack={Kc8,bh7, pa7}]
\end{document}

编译如下(在终端中):

pdflatex chessconv.tex
pdf2svg chessconv.pdf chessconv.svg

结果与下面的最终屏幕截图相同dvisvgm,但多了一些填充。


因为dvisvgm您需要使用 进行编译latex才能获得 dvi 文件(因此不要使用pdflatexxelatex或进行编译lualatex)。然后使用 woff 字体嵌入转换 dvi 文件。终端命令:

latex chessconv.tex
dvisvgm --font-format=woff chessconv.dvi

然后使用网络浏览器打开:

在此处输入图片描述

所以:这不是坏事,但0字符(空白方块)编码不正确。查看生成的 svg,例如顶行:

<text class='f0' x='86.674969' y='85.678583'>8</text>
<text class='f1' x='96.637609' y='92.652553'>0<tspan x='116.562889'>Z</tspan>
<tspan x='136.488169'>k</tspan>
<tspan x='156.41345'>Z</tspan>
<tspan x='176.33873'>0</tspan>
<tspan x='196.26401'>Z</tspan>
<tspan x='216.18929'>0</tspan>
<tspan x='236.11457'>Z</tspan>
</text>

代码显示行标签8后跟字符串0ZkZ0Z0Z,其中0是一个空的白色方块,Z是一个空的黑色方块,k是黑王。使用正则表达式查找和替换,删除错误渲染的字符并不困难0,从而得到此行的以下结果:

<text class='f0' x='86.674969' y='85.678583'>8</text>
<text class='f1' x='96.637609' y='92.652553'><tspan x='116.562889'>Z</tspan>
<tspan x='136.488169'>k</tspan>
<tspan x='156.41345'>Z</tspan>
<tspan x='196.26401'>Z</tspan>
<tspan x='236.11457'>Z</tspan>
</text>

删除0整个文件将在浏览器中产生以下结果:

在此处输入图片描述

相关内容