Автономные диаграммы с TikZ? [закрытый]



Я использую TikZ для рисования диаграмм в LaTeX, которые я затем хочу изолировать как файлы изображений для размещения в интернете. Я предполагаю, что есть способ извлечь эти диаграммы напрямую, не дразня их из готового.файл PDF. Как бы я это сделал? (Если это имеет значение, я использую TeXnicCenter.)

530   6  

6 ответов:

после моего комментария: Cirkuit преобразует диаграммы TikZ в изображения, выполнив что-то вроде следующей последовательности команд:

pdflatex img.tex
pdftops -eps img.pdf
convert -density 300 img.eps img.png

здесь img.tex будет файл LaTeX, который следует этому шаблону:

\documentclass{article}
\usepackage{tikz,amsmath,siunitx}
\usetikzlibrary{arrows,snakes,backgrounds,patterns,matrix,shapes,fit,calc,shadows,plotmarks}
\usepackage[graphics,tightpage,active]{preview}
\PreviewEnvironment{tikzpicture}
\PreviewEnvironment{equation}
\PreviewEnvironment{equation*}
\newlength{\imagewidth}
\newlength{\imagescale}
\pagestyle{empty}
\thispagestyle{empty}
\begin{document}
\begin{tikzpicture}
    % (your TikZ code goes here)
\end{tikzpicture}
\end{document}

Если вы можете использовать Cirkuit или аналогичный редактор, или написать сценарий для себя, чтобы поместить свою диаграмму в этот шаблон и запустить соответствующие инструменты, у вас будет быстрый способ конвертировать код TikZ в PNG изображение.

чтобы ответить на ваш вопрос более прямо... нет, я не знаю никакого способа преобразовать диаграмму TikZ напрямую в PNG, не проходя через PDF-файл (или, по крайней мере, DVI) на каком-то этапе.

Я бы рекомендовал вам следующий подход. Поместите изображение tikz в отдельный файл и используйте класс 'standalone' для его автономной компиляции. Он использует пакет "предварительный просмотр", упомянутый в других ответах. Чтобы включить изображение в основной документ, загрузите "автономный"пакета там сначала и используйте \input в файле изображения.

Это позволит вам получить один PDF изображения tikz без полей. Тогда вы можете используйте конвертер PDF-to-say PNG чтобы получить PNG (рекомендуется для веб-публикации чертежей). Формат SVG был бы лучше, потому что это векторный формат, но не все браузеры могут его отображать.

вот пример кода:

файл изображения tikz (например, ' pic.tex'):

\documentclass{standalone}
\usepackage{tikz}
% all other packages and stuff you need for the picture
%
\begin{document}
\begin{tikzpicture}
% your picture code
\end{tikzpicture}
\end{document}

главная документ:

\documentclass{article} % or whatever class you are using
\usepackage{standalone}
\usepackage{tikz}
% All other packages required
\begin{document}
% Text text text
% somewhere where you want the tikz picture
\input{pic}
% Text text text
\end{document}

затем скомпилируйте изображение и преобразуйте его, например, с помощью ImageMagick (например, под Linux):

pdflatex pic
convert -density 600x600 pic.pdf -quality 90 -resize 800x600 pic.png

или попробуйте SVG:

convert pic.pdf pic.svg

см. раздел руководства Tikz "экстернализация графики". Это позволяет создавать EPS или PDF версии вашей графики. Я использую файлы EPS, конвертирую их в TIFFs, а затем могу поместить их туда, где мне нужно.

Я обычно использую что-то вроде этих строк:

\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
%\setlength\PreviewBorder{2mm} % use to add a border around the image
\usepackage{tikz}
\begin{document}
\begin{preview}
\begin{tikzpicture}
    \shade (0,0) circle(2); % background
    \draw (0,0) circle(2);  % rim
    \draw (.75,1) circle(.5);   % right eye
    \fill (.66,.9) circle(.25); % right pupil
    \draw (-.75,1) circle(.5);  % left eye
    \fill (-.66,.9) circle(.25);% left pupil
    \fill (.2,0) circle (.1);   % right nostril
    \fill (-.2,0) circle (.1);  % left nostril
    \draw (-135:1) arc (-135:-45:1) -- cycle; % mouth
  \end{tikzpicture}
\end{preview}
\end{document}

созданный pdf-файл содержит автономное изображение TikZ. Чтобы преобразовать ее в любой другой формат файла, просто откройте его в Gimp.

Я использую это, чтобы правило Makefile создавало файлы PNG и миниатюры .tex файлы, которые содержат по одному tikzpicture каждый. Он работает аналогично созданию изображений в TeXample.net:

%.png: %.tex
        @sed 's/^\begin{document}/\
\pgfrealjobname{dummy}\begin{document}\beginpgfgraphicnamed{example}/' $< | \
sed 's/^\end{document}/\endpgfgraphicnamed\end{document}/' > example.tex ; \
        pdflatex --jobname=example example.tex ; \
        gs -dNOPAUSE -r120 -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -sDEVICE=png16m \
-sOutputFile=$@ -dBATCH example.pdf ; \
        convert -thumbnail 200 $@ $(addsuffix .thumb.png, $(basename $@)) ; \
        mv example.pdf $(addsuffix .pdf, $(basename $<)) ; rm example.*

ghostview (gs), вероятно, можно заменить на convert и вы можете заменить example С другим префиксом tempfile.

Windows: просто чтобы быть полностью явным для таких нубов, как я

используйте пакет prewiew, как Habi предложил выше в вашем коде latex, чтобы удалить поля.

установите MIktex и Inkscape и используйте следующий файл bat:

cd = "C:\Path to tex"
pdflatex input-file-name.tex
"C:\Program Files (x86)\Inkscape\inkscape.exe" input-file-name.pdf --export-plain-svg=output-file-name.svg

Comments

    Ничего не найдено.