TikZダイアグラムを画像ファイルとして抽出することは可能ですか?[閉まっている]


81

私はTikZを使用してLaTeXで図を描き、それを画像ファイルとして分離してオンラインにします。TeXnicCenterを使用してソースを編集しています。

完成したPDFファイルからこれらの図を抽出せずに直接抽出する方法はありますか?


1
私はTikZエディターとして機能するCirKuitと呼ばれるプログラムを使用しており、さまざまな画像形式のいずれかとして図を保存できます。ただし、舞台裏では、latexやdvitopngなどを使用していると思います。他の誰かが何かを投稿する前に詳細を知ることができれば、私は答えを投稿します。
David Z

1
ダイアグラムをテキストから自動的に分離しますか、それともTikZコードをカットアンドペーストしますか?
チャールズスチュワート

2
LaTeXドキュメントを可能な限り短いPNG画像にコンパイルすることとそれに関連する他の質問も参照してください。
Martin Scharrer 2012

回答:


29

私のコメントのフォローアップ: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画像にすばやく変換する方法があります。

あなたの質問にもっと直接的に答えるために...いいえ、私はある段階でPDFファイル(または少なくともDVI)を経由せずにTikZ図を直接PNGに変換する方法を知りません。


ありがとう!私が避けたかったのは、ダイアグラムを手動で分離することだけだったので、これはうまくいくはずです。
Qiaochu Yuan 2010

66

次のアプローチをお勧めします。問題の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

pdf2svgは、imagemagickよりもPDFをSVGに変換するためのより信頼性の高いツールであることがわかりました。
Glutanimate 2013年

1
@Glutanimate:その間に私はそれを使い始めinkscapeました。
Martin Scharrer 2013年

@MartinScharrer pngまたはsvgに変換せずに、PDFファイルを親ドキュメントに埋め込むことができました:\ includegraphics {file_name.pdf}
user4035 2013年

@ user4035:確かに、これはPDFを(pdf)LaTeXドキュメントに含める通常の方法です。ただし、この質問は、ダイアグラムをラスターイメージファイルとして取得して、オンラインで表示できるようにする方法に関するものです。
Martin Scharrer 2013年

11

TikZのマニュアルセクション「グラフィックの外部化」を参照してください。これにより、グラフィックのEPSまたはPDFバージョンを作成できます。EPSファイルを使用してTIFFに変換し、必要な場所に配置できます。


2013年の時点で、これがおそらく最善のアプローチだと思います。
Alex Hirzel 2013年

2017年には、これはpgfmanualのセクション50.4(607ページ)です。セクションのWebページへのリンクを提供できないようです(PDFのみです)。:(
Yaroslav Nikitenko 2018

理論的には、これはうまく機能します。実際には、tikzexternalizeをかなり長い間使用した後、スタンドアロンのアプローチに戻しました。これは、動作させるのが簡単に思えるからです。私はtikzexternalizeでかなり面倒でした。
jhin

7

私は一般的にこれらの線に沿って何かを使用しています:

\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で開くだけです。


2

これを使用して、Makefileルールで、それぞれ1つのtikzpictureを含む.texファイルからPNGファイルとサムネイルを作成します。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の例。*

ghostview(gs)はおそらくで置き換えるconvertことができexample、別のtempfileプレフィックスで置き換えることができます。


2

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.