
Ich verwende die elsarticle
Dokumentklasse mit draft
aktivierter 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 ifdraft
Pakets 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 \ifdraft
Befehl vor jedem \input{}
Befehl einzufügen?
Nach Kommentaren bearbeiten:
Mir würde es genügen, wenn die \input
Kompilierung 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 external
TikZ-Bibliothek statt. Mit dieser Bibliothek tikzpicture
wird 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 draft
Option 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
:
Mit 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}
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 \input
statt der Definition auch neu definieren (das LaTeX-Makro übernimmt dies).\myinput
\@iinput