Генерация SVG из LaTeX (tikz)?

Как я могу сгенерировать SVG-изображение из файла LaTeX-точнее, диаграмму tikz? Я работаю в Windows.

10
задан 3498DB
06.03.2023 8:32 Количество просмотров материала 2369
Распечатать страницу

6 ответов

самый простой способ сделать это-сначала сгенерировать 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 окружения (доступно в дополнительных настройках в свойствах компьютера). для inkscape смотрите по этой ссылке: http://kaioa.com/node/42#inkcl_bat_usage Здесь вы просто размещаете пакетный файл (InkCL.bat) в каталоге inkscape. и использовать его вместо ввода Inkscape в командной строке. inkcl

в итоге, это вообще требуется всего 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
      

      это создает входной файл.документ PDF Теперь Используйте любой из следующих методов:

      • из Inkscape:

         inkscape -l output.svg input.pdf
        
      • (то же, что и выше):

        inkscape \
          --without-gui \
          --file=input.pdf \
          --export-plain-svg=output.svg
        
      • для нескольких страницы (и один тоже), используйте pdf2svg[cityinthesky.ко.Великобритания/открытых/pdf2svg/]. Он использует poppler и Каир, чтобы преобразовать PDF в SVG. Это особенно полезно для массового преобразования:

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

        Примечание: Если вы укажете все страницы, вы должны указать имя файла с %d в нем (которое будет автоматически заменено соответствующим номером страницы). Например:

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

      latex input.tex
      

      этот создает выходной файл.dvi

      • затем,

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

        этой отлично работает для экземпляров с формулами LaTeX (с опцией --no-fonts)

      • также ответ соандоса (в том числе для полноты):

        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 no неважно, что говорит файл 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] Draw text-текст рисуется как полигоны.
        • [-adt] автоматическое рисование текста-эта опция включает опцию-DT выборочно для шрифтов, которые не являются обычными текстовыми шрифтами, например, Symbol.
        • [-ssp] simulate sub path for backends не поддерживают PostScript-пути, содержащие Sub-пути, т. е. пути с промежуточными movetos.
        • [- usebbfrominput] если указан, pstoedit использует BoundingBox как есть (надеюсь), найденный во входном файле, а не тот, который вычисляется самостоятельно. (Не кажется чтобы сделать разницу для сюжета-svg)
        • [- noclip ] не используйте обрезку (актуально только в том случае, если backend поддерживает обрезку вообще)

        чтобы получить текст хорошего качества для преобразования в полигон, мы должны были запустить dvips с большим увеличением, так что придется уменьшить полученный SVG.

6
отвечен Rohan 2023-03-07 16:20

вы можете проверить инструмент, который я только что написал:tikz2svg.

дано in.tikz (или stdin):

> 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/

2
отвечен jbenet 2023-03-07 18:37

Try этой python CGI скрипт.

1
отвечен soandos 2023-03-07 20:54

один из методов (при условии, что у вас есть рабочая установка LaTeX) для компиляции диаграммы LaTeX для создания выходного файла pdf (обычно используя pdflatex).

Это можно открыть с помощью редактора векторной графики Inkscape. Inkscape может импортировать целый ряд файлов, в том числе pdf (с помощью библиотеки poppler) и может сохранять их как SVG файлы. (Inkscape также предоставляет возможности преобразования командной строки, но я не знаю, доступно ли это на системы Microsoft Windows.)

1
отвечен mas 2023-03-07 23:11

Я рекомендую процесс, упомянутый @Rohan. Создать dosbatchfile первый, "miktex_path.летучая мышь" как:

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

затем отредактируйте a .tex файл с некоторым уравнением с вашим любимым редактором, таким как Texmaker или Notepad2. Сохраните его как образец.текс. Дважды щелкните пакет и на консоли

сделайте следующее:

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}
1
отвечен Pinaki Sekhar Gupta 2023-03-08 01:28

Я использую Linux, но я думаю, что это будет работать на любой платформе с TeX и TikZ/PGF. Я использовал его только для создания SVG изображения TikZ в пустом документе, но похоже, что вы можете использовать это для создания html с графикой SVG большого документа. Это решение приходит со страницы 110 pgfmanual.

  • в преамбуле документа TeX или LaTeX перед загрузкой пакета TikZ, например, с \usepackage{tikz} в LaTeX тип:

    \def\pgfsysdriver{pgfsys-tex4ht.def}

  • затем обработайте TeX или LaTeX с помощью httex или htlatex по мере необходимости. Вы можете добавить tex4ht для установки Текс; это http://www.tug.org/applications/tex4ht/. Например, чтобы обработать мой файл называется logoname.tex I do

    htlatex logoname.tex

  • в текущем каталоге создаются следующие выходные файлы

    logoname.формат HTML logoname.стиль CSS logoname-1.svg

Если у вас есть больше фотографий TikZ, я предполагаю, что они станут logoname-2.SVG и так далее.

Я могу посмотреть на вывод SVG в firefox и inkscape, поэтому он, кажется, дает хорошие результаты

0
отвечен jherbold 2023-03-08 03:45

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх