建立一個空白頁面樣式的 TeX 文件

建立一個空白頁面樣式的 TeX 文件

如何從 LaTeX 檔案產生 SVG 圖像 - 更準確地說,是 tikz 圖?我在 Windows 中工作。

答案1

最簡單的方法就是先產生一個PDF或者DVI介面只是所述圖表/方程式和然後轉換將其轉換為向量格式。

如果小頁面尺寸的 PDF 適合您,那麼您可以使用 * 使用鬼腳本:

    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.

否則,請使用以下位置所述的任何方法: https://stackoverflow.com/questions/10288065/convert-pdf-to-clean-svg

另外,這個答案適用於多個頁面: https://stackoverflow.com/a/4502030

此資源也很有用:svgkit.sourceforge.net/SVGLaTeX.html

當然,一些上述命令中的一些可以使用 MinGW 實現正常工作,或具有本機 Windows 實作(您必須下載)。當然,然後將可執行檔的目錄新增至PATH變數環境(在電腦屬性的進階設定中可用)。 對於墨景,請參閱此連結:http://kaioa.com/node/42#inkcl_bat_usage 在這裡,您只需將批次檔(InkCL.bat)放入 inkscape 目錄中即可。並使用它而不是在命令列中輸入 inkscape。墨克

把它們加起來,一般是只需要 3 個指令

  1. 建立一個空白頁面樣式的 TeX 文件

    說,輸入.tex:

    \documentclass{article}
    \usepackage{amsmath}
    \usepackage{amssymb}
    \usepackage{amsfonts}
    
    \thispagestyle{empty}
    \begin{document}
    \[
    2 \pi f t
    \]
    \end{document}
    
  2. 現在,使用以下任一方法:

    • 建立 PDF 後:

       pdflatex input.tex
      

      這將創建文件 input.pdf 現在,使用任何以下方法之一:

      • 來自 墨景:

         inkscape -l output.svg input.pdf
        
      • (同上):

        inkscape \
          --without-gui \
          --file=input.pdf \
          --export-plain-svg=output.svg
        
      • 對於多個頁面(也可以是單一),使用pdf2svg[cityinthesky.co.uk/opensource/pdf2svg/]。它使用 poppler 和 Cairo 將 pdf 轉換為 SVG。這對於批量轉換特別有用:

        pdf2svg <input.pdf> <output.svg> [<pdf page no. or "all" >]
        

        注意:如果指定所有頁面,則必須提供包含 %d 的檔案名稱(將自動替換為適當的頁碼)。例如

        pdf2svg input.pdf output_page%d.svg all
        
    • 從 DVI,

      latex input.tex
      

      這將創建文件output.dvi

      • 然後,

        dvisvgm --no-fonts input.dvi output.svg
        

        非常適合使用 LaTeX 公式的實例(使用選項--no-fonts)

      • 還有 soandos 的回答(包括為了全面性):

        dvips -q -f -e 0 -E -D 10000 -x 10000 -o eqn.ps eqn.dvi
        

        從 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 將放大比例設為 num/1000 倍 .dvi 檔案中指定的放大倍率(10 到 100000 之間)
        • [-o]指定輸出檔為eqn.ps

        然後,

        pstoedit -f plot-svg -dt -ssp eqn.ps eqn.svg
        

        這將創建文件 eqn.svg

        • [-f] 指定格式為plot-svg(直接svg不起作用)
        • [-dt] 繪製文字 - 文字被繪製為多邊形。
        • [-adt] 自動繪製文字 - 此選項選擇性地為看起來不是普通文字字體的字體(例如符號)開啟 -dt 選項。
        • [-ssp] 後端模擬子路徑不支援包含子路徑的 PostScript 路徑,即具有中間 movetos 的路徑。
        • [-usebbfrominput] 如果指定,pstoedit 使用(希望)在輸入檔案中找到的 BoundingBox,而不是由自己計算的 BoundingBox。 (似乎對plot-svg沒有什麼影響)
        • [ -noclip ] 不使用裁剪(僅當後端支援裁剪時才相關)

        為了獲得高品質的文字到多邊形的轉換,我們必須以高放大倍率運行 dvips,因此必須縮小生成的 SVG。

答案2

您可能想查看我剛剛編寫的一個工具:tikz2svg

給定in.tikz(或標準輸入):

> cat in.tikz
\begin{tikzpicture}
  \fill[red!90!black]   ( 90:.6) circle (1);
  \fill[green!80!black] (210:.6) circle (1);
  \fill[blue!90!black] (330:.6) circle (1);
\end{tikzpicture}

它輸出:

> cat tikz2svg < in.tikz
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="93.472pt" height="86.205pt" viewBox="0 0 93.472 86.205" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(89.99939%,0%,0%);fill-opacity:1;" d="M 76.742188 30.347656 C 76.742188 14.691406 64.050781 2 48.394531 2 C 32.742188 2 20.050781 14.691406 20.050781 30.347656 C 20.050781 46.003906 32.742188 58.695312 48.394531 58.695312 C 64.050781 58.695312 76.742188 46.003906 76.742188 30.347656 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,79.998779%,0%);fill-opacity:1;" d="M 62.011719 55.859375 C 62.011719 40.203125 49.324219 27.511719 33.667969 27.511719 C 18.011719 27.511719 5.320312 40.203125 5.320312 55.859375 C 5.320312 71.515625 18.011719 84.207031 33.667969 84.207031 C 49.324219 84.207031 62.011719 71.515625 62.011719 55.859375 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,89.99939%);fill-opacity:1;" d="M 91.472656 55.859375 C 91.472656 40.203125 78.78125 27.511719 63.125 27.511719 C 47.46875 27.511719 34.777344 40.203125 34.777344 55.859375 C 34.777344 71.515625 47.46875 84.207031 63.125 84.207031 C 78.78125 84.207031 91.472656 71.515625 91.472656 55.859375 Z "/>
</g>
</svg>

http://juan.benet.ai/note/2014-03-09/tikz2svg/

答案3

嘗試python CGI 腳本。

答案4

我推薦@Rohan提到的過程。首先建立一個 dosbatchfile“miktex_path.bat”:

@echo off
path=C:\Program Files\MiKTeX 2.9\miktex\bin\x64;%path%;
cmd
@echo on

然後使用您最喜歡的編輯器(如 Texmaker 或 Notepad2)編輯包含一些方程式的 .tex 檔案。像 Sample.tex 一樣保存。雙擊批次並在控制台上

執行如下操作:

latex Sample.tex
dvisvgm --no-fonts Sample.dvi Sample.svg

工作完成了。

這是一頁中包含的一些方程式的集合:

\documentclass[16pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage[spanish]{babel}

\usepackage{color}
\usepackage[T1]{fontenc}

\begin{document}

\[\psi (t)=\hat{\psi}e^{i(\omega t\, \pm\, \theta)}\sum_i \hat{\psi_i} cos(\alpha_i \pm             \omega t)\]

\[\sum_i \hat{\psi_i} cos(\alpha_i \pm \omega t)\]
\[\sqrt[{\Delta+n}] {\hat {\mu}}\]
\[\Omega t\]
\[\omega Q_{1}\]
\[\frac{\delta (x^2)}{\delta x}\]
\[\frac{\delta}{\delta x} (x^2)\]
\[\int \hat{i}(x^2+3xi)dx\]

\begin{huge}
\[\psi (t)=\hat{\psi}e^{i(\omega t\, \pm\, \theta)}\sum_i \hat{\psi_i} cos(\alpha_i \pm     \omega t)\]

\[\sum_i \hat{\psi_i} cos(\alpha_i \pm \omega t)\]
\[\sqrt[{\Delta+n}] {\hat {\mu}}\]
\[\Omega t\]
\[\omega Q_{1}\]
\[\frac{\delta (x^2)}{\delta x}\]
\[\frac{\delta}{\delta x} (x^2)\]
\[\int \hat{i}(x^2+3xi)dx\]
\end{huge}

\end{document}

相關內容