我正在使用啟用了elsarticle
該選項的文檔類別draft
。我認為草稿模式也會跳過使用命令導入的文件,\input{}
但事實並非如此。我使用\input{}
Ti 指令kZ 圖片和表格儲存在單獨的檔案中。
我找到了使用該ifdraft
包的解決方法,但我認為草稿模式\input{}
也應該自動跳過行。
此行為是錯誤還是功能?
有沒有比\ifdraft
在每個\input{}
指令之前包含該指令更簡單的解決方法?
評論後編輯:
\input
如果當可導入檔案不存在時命令不會編譯失敗,這對我來說就足夠了。意思是,我想將其錯誤減少為警告。是否可以?
答案1
使用external
鈦kZ 庫代替。使用該庫,每個庫都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 巨集),而不是定義 。