草稿模式不尊重 \input 指令

草稿模式不尊重 \input 指令

我正在使用啟用了elsarticle該選項的文檔類別draft。我認為草稿模式也會跳過使用命令導入的文件,\input{}但事實並非如此。我使用\input{}Ti 指令kZ 圖片和表格儲存在單獨的檔案中。

我找到了使用該ifdraft包的解決方法,但我認為草稿模式\input{}也應該自動跳過行。

此行為是錯誤還是功能?

有沒有比\ifdraft在每個\input{}指令之前包含該指令更簡單的解決方法?

評論後編輯:

\input如果當可導入檔案不存在時命令不會編譯失敗,這對我來說就足夠了。意思是,我想將其錯誤減少為警告。是否可以?

答案1

使用externalkZ 庫代替。使用該庫,每個庫都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 巨集),而不是定義 。

相關內容