草稿模式不尊重 \input 命令

草稿模式不尊重 \input 命令

我正在使用启用了该选项elsarticle的文档类draft。我以为草稿模式也会跳过使用该\input{}命令导入的文件,但事实并非如此。我使用\input{}Ti 的命令Z 图片和表格存储在单独的文件中。

我已经找到了使用该ifdraft包的解决方法,但我认为草稿模式\input{}也应该自动跳过行。

这种行为是错误还是功能?

有没有比\ifdraft在每个\input{}命令前包含该命令更简单的解决方法?

评论后编辑:

如果可导入文件不存在时命令不会编译失败,那么对我来说就足够了\input。这意味着我想将其错误减少为警告。可能吗?

答案1

使用externalTiZ 库。使用该库,每个都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 宏),而不是定义。

相关内容