用於草稿模式的向量到光柵圖形

用於草稿模式的向量到光柵圖形

我正在編寫一個文檔,其中包含許多帶有大量數據點的圖。這些圖被儲存為.pdf向量圖像,並且它們的渲染需要大量時間。因此,每次我偶然發現其中一個頁面時,我的編輯都會凍結一分鐘。

我知道 Graphicsx 有一個草稿選項,但它隱藏了圖像,這不是一個很好的解決方案,因為從那時起我無法僅通過文件名來區分圖像。這些是具有相當通用名稱的實驗運行的結果。

是否有一種方法可以在草稿模式下將影像光柵化(例如進入)並在最終模式下.png使用原始影像?.pdf我知道我可以使用 ImageMagick 或任何外部工具來進行轉換,但這似乎需要很多額外的工作,因為我需要將每個圖像添加到 makefile 中並複製\includegraphics草稿和最終版本。

Graphicsx 有一些參數,例如type或 ,command在文件中沒有解釋。這也許可以使用其中一個來實現嗎?我可以掛接\includegraphics並呼叫外部命令嗎?我會設法編寫命令,但我不知道掛鉤在 LaTeX 中如何運作。

否則,我很清楚就品質而言,光柵圖形不如向量圖形。我將在最終版本中使用向量圖形。這僅用於快速預覽草稿。

答案1

可以更改圖像的搜尋路徑:

  • \graphicspath包含 PDF 影像或其對應項 PNG 影像的目錄。
  • \DeclareGraphicsExtensions當影像檔案沒有副檔名時,可用於變更順序,首先使用哪個副檔名。包grfext提供了一個用於更改設定的介面。

epstopdf如果使用 pdfTeX 或 luaTeX 並且啟用了 shell 轉義功能,則可以使用套件自動呼叫從 PDF 到 PNG 的轉換。

例子:

如果\mydraft定義為Y( \let\mydraft=Y),則覆寫擴充規則以透過 ImageMagick.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透過使用按鍵pdfpng。關鍵程式碼更改.pdf檔案的圖形規則以將其轉換為 PNG。如果\mydraft不是Y,則關鍵是無操作。

\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

相關內容