棋盘包生成的任何棋盘都可以导出为 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 文件(因此不要使用pdflatex
、xelatex
或进行编译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
整个文件将在浏览器中产生以下结果: