Я использую 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, который этим занимается).