86

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

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

4

6 に答える 6

68

次のアプローチをお勧めします。問題の 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
于 2010-04-24T08:14:00.690 に答える
30

私のコメントのフォローアップ: 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に変換する方法を知りません。

于 2010-04-23T21:19:25.073 に答える
11

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

于 2010-04-24T15:57:19.520 に答える
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で開くだけです。

于 2010-04-23T23:31:51.887 に答える
2

これを使用して Makefile ルールを作成し、それぞれ 1 つの tikzpicture を含む .tex ファイルから PNG ファイルとサムネイルを作成します。TeXample.netでの画像の作成と同様に機能します。

%.png: %.tex
        @sed の/^\\begin{ドキュメント}/\
\\pgfrealjobname{ダミー}\\begin{ドキュメント}\\beginpgfgraphicnamed{例}/' $< | \
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、別の一時ファイル接頭辞に置き換えることができます。

于 2010-08-10T20:21:29.793 に答える
2

Windows: 私のような初心者向けに完全に明確にするために

上記のHabiが提案したように、ラテックスコードで prewiew パッケージを使用して、マージンを削除します。

MIktex と Inkscape をインストールし、次のバット ファイルを使用します。

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
于 2012-02-07T14:15:46.723 に答える