![将 png 图形绘制为 tikz 格式](https://linux22.com/image/430228/%E5%B0%86%20png%20%E5%9B%BE%E5%BD%A2%E7%BB%98%E5%88%B6%E4%B8%BA%20tikz%20%E6%A0%BC%E5%BC%8F.png)
答案1
svg2tikz
不幸的是,尚不支持 Inkscape 1.0。
在解决这个问题之前,我认为最好的选择是使用该tikz
库svg.path
。
它仍然需要一些工作,但比将所有路径转换为tikz
路径更容易。
考虑以下 SVG 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="43.272217mm"
height="38.881153mm"
viewBox="0 0 43.272217 38.881153"
version="1.1"
id="svg8">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="translate(-21.012752,-24.209217)">
<path
id="path839"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 35.191692,35.091655 -0.378794,11.672673 13.681705,2.121969 5.540123,-8.42804 z M 32.749265,24.209217 21.012752,40.845829 35.717567,63.090369 64.28497,50.77026 62.548425,32.255796 Z" />
</g>
</svg>
我们可以将路径拉出来并直接在 a 中绘制,tikzpicture
如下所示:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{svg.path}
\begin{document}
\begin{tikzpicture}[yscale=-1]
\fill[even odd rule] svg "m 35.191692,35.091655 -0.378794,11.672673
13.681705,2.121969 5.540123,-8.42804 z M 32.749265,24.209217
21.012752,40.845829 35.717567,63.090369 64.28497,50.77026
62.548425,32.255796 Z";
\end{tikzpicture}
\end{document}
您可能需要摆弄比例(特别是yscale
必须为负数)、添加翻译或在引用当前边界框的位置添加后续操作,但对于简单的绘图来说并不太痛苦。