将 png 图形绘制为 tikz 格式

将 png 图形绘制为 tikz 格式

我使用 inkscape 将位图描绘为 tex 文件,但格式是 pspicture,我想使用 tikz 格式,有其他工具可以将 png 转换为 tikz 吗?还是我需要手动绘制?

在此处输入图片描述

答案1

svg2tikz不幸的是,尚不支持 Inkscape 1.0

在解决这个问题之前,我认为最好的选择是使用该tikzsvg.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必须为负数)、添加翻译或在引用当前边界框的位置添加后续操作,但对于简单的绘图来说并不太痛苦。

输出

相关内容