o modo rascunho não respeita o comando \input

o modo rascunho não respeita o comando \input

Estou usando a elsarticleclasse document com a draftopção habilitada. Achei que o modo rascunho \input{}também ignoraria os arquivos importados com o comando, mas não é o caso. Eu uso o \input{}comando para TikZ imagens e tabelas armazenadas em arquivos separados.

Encontrei uma solução alternativa usando o ifdraftpacote, mas acho que o modo rascunho \input{}também deve pular linhas automaticamente.

Esse comportamento é um bug ou recurso?

Existe uma solução mais fácil do que incluir o \ifdraftcomando antes de cada \input{}comando?

Editar após comentários:

Seria suficiente para mim se o \inputcomando não falhasse na compilação quando o arquivo importável não existisse. Ou seja, quero reduzir seu erro a um aviso. É possível?

Responder1

Use o externalTikBiblioteca Z em vez disso. Com essa biblioteca, cada um tikzpictureé compilado em uma execução LaTeX separada (você precisa compilar com -shell-escape) e então um arquivo PDF gerado dessa imagem é incluído. O documento de exemplo abaixo leva 2 s na primeira execução e 0,3 s nas próximas execuções. Além disso, como a draftopção é usada e a imagem é um arquivo PDF externo, a inclusão da imagem é ignorada e a caixa usual aparece.

Sem draft:

insira a descrição da imagem aqui

Com draft:

insira a descrição da imagem aqui

\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}

Quanto à sua atualização, a entrada do LaTeX é aproximadamente:

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

então você pode apenas definir a \myinput:

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

E se você está se sentindo ousado e quer \inputse comportar assim, em vez de definir \myinput, você pode redefinir \@iinput(a macro LaTeX que se encarrega de fazer isso).

informação relacionada