web-dev-qa-db-ja.com

TikZを使用したスタンドアロンダイアグラム?

TikZを使用してLaTeXで図を描画し、それをオンラインにする画像ファイルとして分離します。私の推測では、完成した.pdfファイルからそれらをいじる必要なく、これらの図を直接抽出する方法があります。それをどうやってやるの? (重要な場合は、TeXnicCenterを使用しています。)

76
Qiaochu Yuan

私のコメントのフォローアップ: 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ファイル(または少なくともDVI)のいずれかの段階。

25
David Z

次のアプローチをお勧めします。 tikz画像を別のファイルに配置し、「standalone」クラスを使用してスタンドアロンでコンパイルします。他の回答に記載されている「プレビュー」パッケージを使用します。メインドキュメントに画像を含めるには、まず「スタンドアロン」パッケージをロードし、画像ファイルで\ inputを使用します。

これにより、マージンなしでtikz画像の単一のPDFを取得できます。その後、PDF-to-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を使用(Linuxなど):

pdflatex pic
convert -density 600x600 pic.pdf -quality 90 -resize 800x600 pic.png

またはSVGを試してください:

convert pic.pdf pic.svg
60
Martin Scharrer

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

10
Joseph Wright

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

\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で開きます。

7
Habi

これを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を別の一時ファイルのプレフィックスに置き換えることができます。

2
Jakob

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