Векторная графика в растровую для чернового режима

Векторная графика в растровую для чернового режима

Я пишу документ, в котором много графиков с большим количеством точек данных. Эти графики хранятся как .pdfвекторные изображения, и их рендеринг занимает много времени. Поэтому каждый раз, когда я натыкаюсь на страницу с одним из них, мой редактор зависает на целую минуту.

Я знаю, что у graphicsx есть черновик, но он скрывает изображения, что не очень хорошее решение, поскольку тогда я не могу отличить изображения только по имени файла. Это результаты экспериментальных запусков с довольно общими именами.

Есть ли, возможно, способ растеризовать изображения (например, в .png) в черновом режиме и использовать оригинал .pdfв окончательном режиме? Я знаю, что я мог бы использовать ImageMagick или какие-либо внешние инструменты для выполнения преобразования, но это кажется большой дополнительной работой, поскольку мне нужно будет добавить каждое изображение в makefile и дублировать \includegraphicsдля чернового и окончательного режима.

Есть некоторые параметры graphicsx, такие как typeили command, которые не описаны в документации. Возможно, этого можно достичь с помощью одного из них? Возможно, я могу подключить \includegraphicsи вызвать внешнюю команду? Я бы написал команду, но понятия не имею, как работают хуки в LaTeX.

В остальном я прекрасно понимаю, что растровая графика уступает векторной по качеству. В финальной версии я собираюсь использовать векторную графику. Она предназначена исключительно для быстрого просмотра черновика.

решение1

Путь поиска изображений можно изменить:

  • \graphicspathс каталогом для изображений PDF или его аналогов, изображений PNG.
  • \DeclareGraphicsExtensionsможет использоваться для изменения порядка, какое расширение используется первым, когда файл изображения был указан без расширения. Пакет grfextпредоставляет интерфейс для изменения настройки.

Пакет epstopdfможно использовать для автоматического вызова преобразования из PDF в PNG, если используется pdfTeX или luaTeX и включена функция экранирования оболочки.

Пример:

Если \mydraftопределено как Y( \let\mydraft=Y), то правило для расширения .pdfперезаписывается, чтобы выполнить преобразование в .pngс помощью ImageMagick's convert. В противном случае .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активно.)

Связанный контент