TikZ的独立图?

我使用TikZ在LaTeX中绘制图表,然后将其分离为图像文件以便在线。 我的猜测是有一种方法可以直接提取这些图表,而不必从完成的.pdf文件中挑出它们。 我将如何去做呢? (如果有问题,我正在使用TeXnicCenter。)

跟随我的评论: 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文件(或者至lessDVI)。

我会向你推荐以下方法。 将tikz图片放在单独的文件中,并使用“独立”类来独立编译。 它使用其他答案中提到的“预览”包。 要将图片包含在主文档中,请首先在其中加载“独立” ,然后在图片文件中使用\ input。

这将允许你得到没有边距的tikz图片的单个PDF。 然后,您可以使用PDF格式的PNG转换器来获取PNG(推荐用于Web图纸发布)。 SVG格式会更好,因为它是一种vector格式,但不是所有的浏览器都可以显示它。

这里有一些示例代码:

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手册“外部化graphics”部分。 这使您可以制作EPS或PDF版本的graphics。 我使用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规则创buildPNG文件和缩略图.tex文件包含一个tikzpicture每个。 它与TeXample.net中的图像创build类似:

 %.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 $ <)); 例如。*

ghostview( gs )大概可以用convert来代替,你可以用另一个tempfile前缀来代替example

Windows:只是为了像我这样的noobs完全明确

使用上面在您的乳胶代码中build议的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