режим черновика не учитывает команду \input

режим черновика не учитывает команду \input

Я использую elsarticleкласс документа с draftвключенной опцией. Я думал, что режим черновика также пропустит файлы, импортированные с помощью команды, \input{}но это не так. Я использую \input{}команду для TiкZ-изображения и таблицы хранятся в отдельных файлах.

Я нашел обходной путь с помощью ifdraftпакета, но думаю, что режим черновика \input{}также должен автоматически пропускать строки.

Является ли это поведение ошибкой или особенностью?

Есть ли более простой способ решения этой проблемы, чем включение \ifdraftкоманды перед каждой \input{}командой?

Редактировать после комментариев:

Мне было бы достаточно, если бы \inputкоманда не проваливала компиляцию, когда импортируемый файл не существует. То есть я хочу свести ее ошибку к предупреждению. Возможно ли это?

решение1

Использоватьexternal TiкВместо этого библиотека Z. С этой библиотекой каждая tikzpictureкомпилируется в отдельном запуске LaTeX (вам нужно компилировать с помощью -shell-escape), а затем включается сгенерированный файл PDF этой картинки. Пример документа ниже занимает 2 с в первом запуске, а затем 0,3 с в последующих запусках. Кроме того, поскольку draftиспользуется опция, а картинка является внешним файлом PDF, включение картинки пропускается, и вместо этого появляется обычное поле.

Без draft:

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

С draft:

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

\documentclass[draft]{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}

hello
\begin{tikzpicture}
  \foreach \i in {1,...,1000}
    \node at (0,0) {picture that takes a long time to compile};
\end{tikzpicture}
bye

\end{document}

Что касается вашего обновления, то ввод LaTeX примерно такой:

\InputIfFileExists{file}%
  {}% do nothing if the file exists
  {\ERROR{file does not exist}}

поэтому вы можете просто определить \myinput:

\newcommand\myinput[1]{%
  \InputIfFileExists{#1}%
    {}% do nothing if the file exists
    {\PackageWarning{Mathiassa}{File '#1' not found.}}%
  }

А если вы чувствуете себя смелым и хотите \inputвести себя подобным образом, вместо определения \myinputвы можете переопределить \@iinput(макрос LaTeX, который этим занимается).

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