我正在使用TikZ在LaTeX中绘制图表,然后将其隔离为图像文件以使其联机。我正在使用TeXnicCenter编辑源。
有没有一种方法可以直接提取这些图而不必从完成的PDF文件中提取它们?
我正在使用TikZ在LaTeX中绘制图表,然后将其隔离为图像文件以使其联机。我正在使用TeXnicCenter编辑源。
有没有一种方法可以直接提取这些图而不必从完成的PDF文件中提取它们?
Answers:
跟进我的评论: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
该类将其独立编译。它使用preview
其他答案中提到的软件包。要将图片包含在主文档中,请先在其中加载standalone
程序包,然后\input
在图片文件上使用命令。
这将使您获得TikZ图片的单个PDF而没有空白。然后,您可以使用PDF到PNG转换器来获取PNG(建议通过Web发布工程图)。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:
pdflatex pic
convert -density 600x600 pic.pdf -quality 90 -resize 800x600 pic.png
或尝试SVG:
convert pic.pdf pic.svg
inkscape
它。
请参阅TikZ手册的“外部化图形”部分。这使您可以制作图形的EPS或PDF版本。我使用EPS文件,将它们转换为TIFF,然后可以将它们放在需要的地方。
我通常使用以下方式:
\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规则从每个包含一个tikzpicture的.tex文件创建PNG文件和缩略图。它的工作类似于在TeXample.net上创建图像:
%.png:%。tex @sed的s / ^ \\开始{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,$(基本名$ @)); \ mv example.pdf $(addsuffix .pdf,$(基本名称$ <)); rm示例。*
ghostview(gs
)可能被替换convert
,您可以替换example
为另一个tempfile前缀。
Windows:对像我这样的菜鸟要完全明确
按照上面Habi在您的乳胶代码中建议的那样使用prewiew软件包以除去边距。
安装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