![草稿模式不尊重 \input 命令](https://linux22.com/image/407471/%E8%8D%89%E7%A8%BF%E6%A8%A1%E5%BC%8F%E4%B8%8D%E5%B0%8A%E9%87%8D%20%5Cinput%20%E5%91%BD%E4%BB%A4.png)
我正在使用启用了该选项elsarticle
的文档类draft
。我以为草稿模式也会跳过使用该\input{}
命令导入的文件,但事实并非如此。我使用\input{}
Ti 的命令钾Z 图片和表格存储在单独的文件中。
我已经找到了使用该ifdraft
包的解决方法,但我认为草稿模式\input{}
也应该自动跳过行。
这种行为是错误还是功能?
有没有比\ifdraft
在每个\input{}
命令前包含该命令更简单的解决方法?
评论后编辑:
如果可导入文件不存在时命令不会编译失败,那么对我来说就足够了\input
。这意味着我想将其错误减少为警告。可能吗?
答案1
使用external
Ti钾Z 库。使用该库,每个都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 宏),而不是定义。