直接在 LaTeX 中插入 SVG 标记

直接在 LaTeX 中插入 SVG 标记

是否有任何包可以直接在 LaTeX 中插入 SVG 标记并获得如下结果图像:

\begin{svg}[version="1.1"]
  <polygon points="100,10 40,180 190,60 10,60 160,180" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:nonzero;"/>
\end{svg}

答案1

我不知道如何在 LaTeX 中做到这一点,但在 ConTeXt 中,您可以使用filter模块运行转换器(例如 inkscape)并包含输出。以下是一个例子:

\usemodule
  [filter,ipsum]

\define[1]\readSVGfile
  {\externalfigure[#1]}

\defineexternalfilter
  [SVG]
  [filtercommand={inkscape                   \space
      --without-gui                          \space
      --export-ignore-filters                \space
      --export-pdf=\externalfilteroutputfile \space
      --file=\externalfilterinputfile        \space
    },
    readcommand=\readSVGfile,
    output=\externalfilterbasefile.svg]

\starttext

\startSVG
  <?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" height="88" width="74">
      <polygon points="100,10 40,180 190,60 10,60 160,180" style="fill:lime;   
      stroke:purple;stroke-width:5;fill-rule:nonzero;"/>
  </svg>
\stopSVG

\ipsum
\stoptext

输出:

结果

当然,您需要安装 inkscape 才能进行转换。

相关内容