从 LaTeX (tikz) 生成 SVG?

Itt*_*ayD 12 latex svg

如何从 LaTeX 文件生成 SVG 图像 - 更准确地说,是 tikz 图?我在 Windows 中工作。

小智 9

做最简单的方法,因此我们将首先生成一个PDFDVI刚才所说图/方程,然后转换到一个矢量格式。

如果小页面大小的 PDF 适合您,那么您可以使用 * 使用ghostscript

    gswin32c.exe -sDEVICE=pdfwrite -dMaxSubsetPct=100 -dPDFSETTINGS=/ebook -sOutputFile="outfile.pdf" -dNOPAUSE -dBATCH "infile.pdf"
where -dPDFSETTINGS is used to define how images are resampled. Using -dPDFSETTINGS=/screen will yield dpi=72. I just tried this with a sample pdf and it seems to work fine.
Run Code Online (Sandbox Code Playgroud)

否则,请使用以下描述的任何方法:https : //stackoverflow.com/questions/10288065/convert-pdf-to-clean-svg

此外,此答案适用于多个页面:https : //stackoverflow.com/a/4502030

这个资源也很有用:svgkit.sourceforge.net/SVGLaTeX.html

当然,提到的一些命令可以很好地使用 MinGW 实现,或者具有本机 Windows 实现,您必须下载它们。当然,然后将可执行文件的目录添加到 PATH 变量环境(在计算机属性的高级设置中可用)。 对于inkscape,请参阅此链接:http : //kaioa.com/node/42#inkcl_bat_usage 在这里,您只需在inkscape 目录中放置一个批处理文件(InkCL.bat)。并使用它而不是在命令行中输入inkscape。墨水

总而言之,它通常只需要 3 个命令

  1. 创建一个带有空页面样式的 TeX 文件

    说,input.tex

    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amssymb}
    \usepackage{amsfonts}
    
    \thispagestyle{empty}
    \begin{document}
    \[
    2 \pi f t
    \]
    \end{document}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在,使用以下任何一种方法:

    • 创建 PDF 后:

       pdflatex input.tex
      
      Run Code Online (Sandbox Code Playgroud)

      这将创建文件 input.pdf 现在,使用以下任何一种方法:

    • 从 DVI,

      latex input.tex
      
      Run Code Online (Sandbox Code Playgroud)

      这将创建文件 output.dvi

      • 然后,

        dvisvgm --no-fonts input.dvi output.svg
        
        Run Code Online (Sandbox Code Playgroud)

        对于使用 LaTeX 公式的实例非常有效(使用选项 --no-fonts)

      • 还有 soandos 的回答(包括全面性):

        dvips -q -f -e 0 -E -D 10000 -x 10000 -o eqn.ps eqn.dvi
        
        Run Code Online (Sandbox Code Playgroud)

        从 dvips 手册页 (ma.utexas.edu/cgi-bin/man-cgi?dvips%201):

        • [-q] 以安静模式运行。
        • [-f](过滤器)从标准输入读取 .dvi 文件并将 PostScript 写入标准输出。
        • [-D] 将分辨率设置在 10 到 10000 之间(也会影响字母的定位)
        • [-E] 使 dvips 尝试生成具有紧密边界框的 EPSF 文件。
        • [-e num] 每个字符最多从其“真实”分辨率无关位置放置这么多像素
        • [-R] 在安全模式下运行。
        • [-x] num 设置放大倍数为 num/1000 不管 dvi 文件说什么(10 到 100000 之间)
        • [-y] num 将放大倍数设置为 .dvi 文件中指定的放大倍数的 num/1000 倍(10 到 100000 之间)
        • [-o] 指定输出文件为 eqn.ps

        然后,

        pstoedit -f plot-svg -dt -ssp eqn.ps eqn.svg
        
        Run Code Online (Sandbox Code Playgroud)

        这将创建文件 eqn.svg

        • [-f] 指定格式为plot-svg(直接svg不起作用)
        • [-dt] 绘制文本 - 文本绘制为多边形。
        • [-adt] 自动绘制文本 - 此选项有选择地为似乎不是普通文本字体的字体打开 -dt 选项,例如符号。
        • [-ssp] 为后端模拟子路径不支持包含子路径的 PostScript 路径,即具有中间移动的路径。
        • [-usebbfrominput] 如果指定,pstoedit 使用在输入文件中(希望如此)找到的 BoundingBox,而不是由它自己计算的 BoundingBox。(似乎对 plot-svg 没有影响)
        • [ -noclip ] 不使用剪辑(仅当后端完全支持剪辑时才相关)

        为了获得高质量的文本到多边形转换,我们必须以高放大率运行 dvips,因此必须缩小生成的 SVG。


soa*_*dos 1

试试这个python CGI 脚本。