草图模式的矢量转光栅图形

草图模式的矢量转光栅图形

我正在写一个文档,里面有很多图表,其中包含大量数据点。这些图表以矢量图像的形式存储.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

相关内容