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