
Estoy usando la elsarticle
clase de documento con la draft
opción habilitada. Pensé que el modo borrador \input{}
también omitiría los archivos importados con el comando, pero no es el caso. Yo uso el\input{}
comando para TikZ imágenes y tablas almacenadas en archivos separados.
Encontré una solución alternativa usando el ifdraft
paquete, pero creo que el modo borrador \input{}
también debería omitir líneas automáticamente.
¿Es este comportamiento un error o una característica?
¿Existe una solución más sencilla que incluir el \ifdraft
comando antes de cada \input{}
comando?
Editar después de los comentarios:
Me bastaría con que el \input
comando no falle en la compilación cuando el archivo importable no existe. Es decir, quiero reducir su error a una advertencia. ¿Es posible?
Respuesta1
Utilizar elexternal
TikBiblioteca Z en su lugar. Con esa biblioteca, cada uno tikzpicture
se compila en una ejecución LaTeX separada (debe compilar con -shell-escape
) y luego se incluye un archivo PDF generado de esa imagen. El documento de ejemplo siguiente tarda 2 s en la primera ejecución y luego 0,3 s en las siguientes ejecuciones. Además, dado que draft
se utiliza la opción y la imagen es un archivo PDF externo, se omite la inclusión de la imagen y aparece el cuadro habitual.
Sin draft
:
Con 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}
En cuanto a su actualización, la entrada de LaTeX es aproximadamente:
\InputIfFileExists{file}%
{}% do nothing if the file exists
{\ERROR{file does not exist}}
entonces puedes definir un \myinput
:
\newcommand\myinput[1]{%
\InputIfFileExists{#1}%
{}% do nothing if the file exists
{\PackageWarning{Mathiassa}{File '#1' not found.}}%
}
Y si te sientes audaz y quieres \input
comportarte así, en lugar de definir \myinput
, puedes redefinir \@iinput
(la macro de LaTeX que se encarga de hacer eso).