Der Entwurfsmodus beachtet den \input-Befehl nicht

Der Entwurfsmodus beachtet den \input-Befehl nicht

Ich verwende die elsarticleDokumentklasse mit draftaktivierter Option. Ich dachte, dass der Entwurfsmodus \input{}auch die mit dem Befehl importierten Dateien überspringen würde, aber das ist nicht der Fall. Ich verwende den \input{}Befehl für TikZ Bilder und Tabellen in separaten Dateien gespeichert.

Ich habe mithilfe des ifdraftPakets eine Problemumgehung gefunden, denke aber, dass der Entwurfsmodus \input{}Zeilen auch automatisch überspringen sollte.

Handelt es sich bei diesem Verhalten um einen Fehler oder ein Feature?

Gibt es eine einfachere Problemumgehung, als den \ifdraftBefehl vor jedem \input{}Befehl einzufügen?

Nach Kommentaren bearbeiten:

Mir würde es genügen, wenn die \inputKompilierung des Befehls nicht fehlschlägt, wenn die importierbare Datei nicht existiert. Das heißt, ich möchte den Fehler auf eine Warnung reduzieren. Ist das möglich?

Antwort1

Verwenden Sie die externalTikZ-Bibliothek statt. Mit dieser Bibliothek tikzpicturewird jedes in einem separaten LaTeX-Lauf kompiliert (Sie müssen mit kompilieren -shell-escape) und dann wird eine generierte PDF-Datei dieses Bildes eingebunden. Das Beispieldokument unten dauert im ersten Lauf 2 s und dann 0,3 s in den nächsten Läufen. Da die draftOption verwendet wird und das Bild eine externe PDF-Datei ist, wird außerdem die Einbindung des Bildes übersprungen und stattdessen das übliche Feld angezeigt.

Ohne draft:

Bildbeschreibung hier eingeben

Mit draft:

Bildbeschreibung hier eingeben

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

Was Ihr Update betrifft, lautet die Eingabe von LaTeX ungefähr:

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

Sie können also einfach Folgendes definieren \myinput:

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

Und wenn Sie mutig sind und sich so verhalten möchten , können Sie \inputstatt der Definition auch neu definieren (das LaTeX-Makro übernimmt dies).\myinput\@iinput

verwandte Informationen