ドラフトモード用のベクトルからラスターグラフィック

ドラフトモード用のベクトルからラスターグラフィック

私は、非常に多くのデータ ポイントを持つ多数のプロットを含むドキュメントを作成しています。これらのプロットは.pdfベクター画像として保存されており、レンダリングに非常に時間がかかります。そのため、そのようなプロットを含むページに遭遇するたびに、エディターが 1 分間フリーズしてしまいます。

graphicsx にはドラフト オプションがあることは知っていますが、これは画像を非表示にするため、ファイル名だけでは画像を区別できないため、あまり良い解決策ではありません。これらは、非常に一般的な名前で実験的に実行した結果です。

.pngドラフト モードで画像をラスタライズ (たとえば に) し、最終モードでは元の画像を使用する方法はありますか.pdf? ImageMagick などの外部ツールを使用して変換できることはわかっていますが、すべての画像を makefile に追加し、\includegraphicsドラフトと最終用に を複製する必要があるため、余分な作業が多くなりそうです。

graphicsxには、ドキュメントで説明されていないtypeやなどのパラメータがいくつかあります。これらのいずれかを使用してこれを実現できるでしょうか? をフックして外部コマンドを呼び出すことはできますか? コマンドを記述することはできますが、LaTeX でフックがどのように機能するかはわかりません。command\includegraphics

それ以外の点では、品質の点ではラスター グラフィックがベクター グラフィックより劣るという事実はよくわかっています。最終バージョンではベクター グラフィックを使用する予定です。これは、簡単なドラフト プレビューのみを目的としています。

答え1

画像の検索パスは変更できます:

  • \graphicspathPDF 画像またはその対応する PNG 画像用のディレクトリを使用します。
  • \DeclareGraphicsExtensions画像ファイルが拡張子なしで指定された場合に、どの拡張子を最初に使用するかの順序を変更するために使用できます。パッケージは、grfext設定を変更するためのインターフェイスを提供します。

epstopdfpdfTeX または luaTeX が使用され、シェル エスケープ機能が有効になっている場合、パッケージを使用して PDF から PNG への変換を自動的に呼び出すことができます。

例:

が( )\mydraftと定義されている場合、拡張子のルールが上書きされ、 ImageMagick の を介してに変換されます。それ以外の場合は拡張子が優先されます。Y\let\mydraft=Y.pdf.pngconvert.pdf

\documentclass{article}
\usepackage{graphicx}
\usepackage{grfext}

\ifx\mydraft Y
  \usepackage{epstopdf-base}
  \epstopdfDeclareGraphicsRule{.pdf}{png}{.png}{%
    convert #1 \OutputFile
  }  
  \epstopdfDeclareGraphicsRule{.PDF}{png}{.png}{%
    convert #1 \OutputFile
  }  
\else
  \PrependGraphicsExtension*{.pdf}
\fi

\begin{document}
\includegraphics{image}
\end{document}

特別なドラフト モードは によって有効になります\let\mydraft=Y。これは、コマンド ラインでも指定できます。例:

pdflatex --shell-escape "\let\mydraft=Y\input{mydocument}"

次にimage.pdfが変換され、 として含められますimage-pdf-converted-to.png

それ以外は、周囲に転がっているimage.pdfものも含めますimage.png

キー\includegraphics

変換機能は、\includegraphicsキー の使用によってに制限することもできます。キー コードは、ファイルを PNG に変換するためpdfpngのグラフィック ルールを変更します。が でない場合、キーは何も行いません。.pdf\mydraftY

\documentclass{article}
\usepackage{graphicx}
\usepackage{grfext}

\ifx\mydraft Y
  \usepackage{epstopdf-base}
  \csname define@key\endcsname{Gin}{pdfpng}[]{%
    \epstopdfDeclareGraphicsRule{.pdf}{png}{.png}{%
      convert ##1 \OutputFile
    }%
  }
\else
  \PrependGraphicsExtensions*{.pdf}
  \csname define@key\endcsname{Gin}{pdfpng}[]{}
\fi

\begin{document}
\includegraphics{image1}
\includegraphics[pdfpng]{image2-converted-to-png-when-mydraft}
\includegraphics{image3}
\end{document}

(がアクティブな場合\define@keyは の代わりに を使用できます。)\csname define@key\endcsname\makeatletter

関連情報