Latex 是否可以将TikZ图提取为图像文件?

Latex 是否可以将TikZ图提取为图像文件?,latex,tikz,texnic-center,Latex,Tikz,Texnic Center,我正在使用TikZ在LaTeX中绘制图表,然后将其隔离为图像文件以联机。我正在使用TeXnicCenter编辑源代码 有没有一种方法可以直接提取这些图表,而不必从完成的PDF文件中提取它们?继续我的评论:通过运行类似以下命令序列的操作将TikZ图表转换为图像: pdflatex img.tex pdftops -eps img.pdf convert -density 300 img.eps img.png 此处img.tex将是一个遵循此模板的LaTeX文件: \documentclass{

我正在使用TikZ在LaTeX中绘制图表,然后将其隔离为图像文件以联机。我正在使用TeXnicCenter编辑源代码


有没有一种方法可以直接提取这些图表,而不必从完成的PDF文件中提取它们?

继续我的评论:通过运行类似以下命令序列的操作将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图像


为了更直接地回答你的问题。。。不,我不知道有什么方法可以在某个阶段不通过PDF文件(或至少是DVI)直接将TikZ图转换为PNG。

我通常使用以下方法:

\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打开即可。

我建议使用以下方法。将有问题的TikZ图片放在一个单独的文件中,并使用
standalone
类独立编译它。它使用其他答案中提到的
预览
包。要将图片包含在主文档中,请首先在主文档中加载
独立
,然后在图片文件上使用
\input
命令

这将允许您获得TikZ图片的单个PDF,无需边距。那你可以 例如,使用PDF到PNG转换器获得PNG(推荐用于图形的web发布)。 SVG格式会更好,因为它是矢量格式,但并非所有浏览器都能显示它

下面是一些示例代码。 TikZ图片文件(例如,
pic.tex
):

\documentclass{standalone}
\usepackage{tikz}
%图片所需的所有其他包装和物品
\开始{document}
\开始{tikzpicture}
%你的图片代码
\结束{tikzpicture}
\结束{document}
主要文件:

\documentclass{article}%或您正在使用的任何类
\usepackage{standalone}
\usepackage{tikz}
%所需的所有其他包
\开始{document}
%文本文本文本
%你想要tikz照片的地方
\输入{pic}
%文本文本文本
\结束{document}
然后编译图片并将其转换,例如,使用ImageMagick:

pdflatex图片
转换-密度600x600 pic.pdf-质量90-调整大小800x600 pic.png
或者尝试SVG:

转换pic.pdf pic.svg

请参阅TikZ手册“图形外部化”一节。这使您可以制作图形的EPS或PDF版本。我使用EPS文件,将它们转换为TIFF,然后可以将它们放在我需要的任何地方。

我使用该文件规则从每个包含一张tikzpicture的.tex文件创建PNG文件和缩略图。其工作原理类似于在以下位置创建图像:

%.png:%.tex @sed的/^\\begin{document}/\ \\pgfrealjobname{dummy}\\begin{document}\\beginpgfgraphicsnamed{example}/'$<|\ sed的/^\\end{document}/\\endpgfgraphicnamed\\end{document}/'>example.tex\ pdflatex--jobname=example.tex\ gs-dNOPAUSE-r120-dGraphicsAlphaBits=4-dTextAlphaBits=4-sDEVICE=png16m\ -sOutputFile=$@-dBATCH example.pdf\ 转换-缩略图200$@$(addsuffix.thumb.png,$(basename$@))\
mv example.pdf$(addsuffix.pdf,$(basename$Windows):对于像我这样的noob来说,这是完全明确的

在latex代码中使用上面Habi建议的Prewiw包来删除边距

安装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

我使用一个名为CirKuit的程序作为TikZ编辑器,允许您将图表保存为各种图像格式。不过,我认为它在幕后的作用是使用latex和dvitopng或类似的东西。如果我能在其他人发布之前找到细节,我会发布一个答案。您想隔离这些图表吗自动从文本中删除,或者您是否愿意剪切和粘贴TikZ代码?另请参阅和其他与之相关的问题。谢谢!我只想避免手动隔离图表,所以这应该可以正常工作。我发现将PDF转换为SVG的工具比imagemagick更可靠。@Glutanimate:与此同时,我开始使用
inkscape
。@Martinsharre我能够将pdf文件嵌入到父文档中,而无需将其转换为png或svg:\includegraphics{file_name.pdf}@user4035:当然,这是将pdf文件插入(pdf)的正常方式LaTeX文档。但是,这个问题是关于如何将图表作为光栅图像文件,以便在线显示。截至2013年,我认为这可能是最好的方法。2017年,这是PGF手册的第50.4节(第607页)。似乎我们无法提供该节的网页链接(仅为pdf格式):(理论上,这很好。实际上,在使用tikzexternalize一段时间后,我又回到了独立的方法,因为它似乎更容易工作。我对tikzexternalize有点麻烦。
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