Компилировать, когда изображения полностью отсутствуют, НО включить определенные изображения?

Компилировать, когда изображения полностью отсутствуют, НО включить определенные изображения?

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

Я использовал, \usepackage[demo]{graphicx}что хорошо, потому что документ будет компилироваться, даже если изображенияполностьюотсутствует. Это предлагается в:Скомпилировать файл, если изображения отсутствуют/недоступны.

Однако я хочу включить некоторые изображения (мои, для которых у меня есть данные). Я хочу сделать что-то вроде добавления \includegraphics[draft=false]{image}к определенным изображениям при использовании \usepackage[draft]{graphicx}в соответствии сВыключение и включение изображений в цифрах. Однако эта опция, похоже, недоступна для \usepackage[demo]{graphicx}.

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

Кто-нибудь знает хорошее решение?

решение1

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

Поэтому я предлагаю использовать

\usepackage[draft]{graphicx}

Вот минимальный пример:

введите описание изображения здесь

\documentclass{article}

\usepackage[draft]{graphicx}

\begin{document}

\includegraphics[width=100pt]{some-bizarre-image.png}% This does not exist

\includegraphics[width=150pt,draft=false]{example-image.png}% This exists (http://ctan.org/pkg/mwe)

\end{document}

Если вы не предоставляете расширение файла изображения по умолчанию, то, возможно, придется обновиться, \includegraphicsчтобы найти возможный файл для включения. Предполагая, что вы компилируете с помощью pdfLaTeX, мы можем циклически проходить черезвозможные расширения файлов изображений:

введите описание изображения здесь

\documentclass{article}

\usepackage[draft]{graphicx}
\usepackage{pgffor,letltxmacro}

% https://tex.stackexchange.com/q/72930/5764
% .png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPEG,.JBIG2,.JB2

\newif\iffilefound
\LetLtxMacro\oldincludegraphics\includegraphics
\renewcommand{\includegraphics}[2][]{%
  \global\filefoundfalse
  \foreach \fext in {,.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPEG,.JBIG2,.JB2} {%
    \iffilefound\else\IfFileExists{#2\fext}{\global\filefoundtrue\xdef\imgfile{#2\fext}}{}\fi%
  }%
  \iffilefound
    \oldincludegraphics[#1]{\imgfile}%
  \else
    \oldincludegraphics[#1]{example-image}%
  \fi
}

\begin{document}

\includegraphics[width=100pt]{some-bizarre-image}% This does not exist

\includegraphics[width=150pt,draft=false]{example-image}% This exists (http://ctan.org/pkg/mwe)

\end{document}

Мы циклически просматриваем все возможные расширения (включая отсутствие расширения, если вы указали его вручную как часть \includegraphics) и определяем первое доступное расширение, найденное как комбинацию \imgfile. Мы вставляем изображение выдуманного (но существующего) .pngимени файла, если изображение не существует.

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