也许这是预期的行为,但手册中没有记录,这确实让我感到惊讶。
当您使用draft
类选项并使用tikz
external
库时,所有 Tikz 图片都将被带有外部化图形名称的框替换。
梅威瑟:
\documentclass[draft]{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle [radius=1];
\end{tikzpicture}
\end{document}
它显示正确的文件名这一事实使我认为这是external
库在做这件事,因为虽然我知道它pgf
本身对该选项做了类似的事情draft
,但我并不指望它知道文件名(而且无论如何,我没有pgf
直接加载,我认为它只有draft
在直接调用时才会服从。)
但是,注释掉该\tikzexternalize
行就可以得到如图所示的效果。
我并不是说这种行为通常没用!但是,这不是我所希望的,而且由于没有记录,我不知道我能做些什么。
我可以尝试解决这个问题,而不是使用它,draft
但它在一个大文档中,该文档已经根据是否draft
设置做了几件不同的事情。
我有什么选择?
答案1
针对根本问题提出了一个“解决方案”,基督教评论:
TikZ 确实不是用于\includegraphics
外部化图形,如文档中所述,但\pgfimage{figure0.eps}
。这不了解草稿模式。这可以在文档开头使用以下方法更改
\pgfkeys{/pgf/images/include external/.code=\includegraphics{#1}}
导致
\documentclass[draft]{article}
\usepackage{tikz}
\usetikzlibrary{external}
\pgfkeys{/pgf/images/include external/.code=\includegraphics{#1}}
\tikzexternalize
\begin{document}
\begin{tikzpicture}
\draw (0,0) circle [radius=1];
\end{tikzpicture}
\end{document}
它以正确的尺寸呈现缺失图像的“草稿框”。
答案2
Documentclass[draft]
选项:
使用可选参数[draft]
有\documentclass
两个主要用途:
- 通过边距中的竖线指示超出范围的水平盒子
- 包含的图形外部的源不会显示(仅显示框的轮廓)。使用 可以实现类似的效果
\usepackage[demo]{graphicx}
。
这对文档内的环境没有影响,tikzpicture
因为文档内的环境不被视为外部图形。其内容被排版并显示在输出中,就像任何其他环境的内容一样。
TikZ 外部化库:
\usetikzlibrary[external]
和相关函数的主要目的\tikzexternalize
是通过将每个函数转换tikzpicture
为单独的外部的图形,然后使用 导入\includegraphics
。因此,您看到的行为。
\tikzexternaldisable
可以通过在组内使用来根据每次使用情况禁用此功能:
{\tikzexternaldisable% disable within a group
\begin{tikzpicture}
...
\end{tikzpicture}
}
或者在之前禁用外部化tikzpicture
,然后按照图片重新启用它:
\tikzexternaldisable% disable outside of a group
\begin{tikzpicture}
...
\end{tikzpicture}
\tikzexternalenable% should re-enable at end.
在存在嵌套tikzpicture
环境的情况下可能需要禁用。
下面的 MWE 示例说明了这些并得出:
代码:
\documentclass[draft]{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
{\tikzexternaldisable% disable within a group
\begin{tikzpicture}
\draw [blue, ultra thick, fill=red!10] (0,0) circle [radius=1] node {1};
\end{tikzpicture}
}
\tikzexternaldisable% disbale outside of a group
\begin{tikzpicture}
\draw [red, ultra thick, fill=blue!10] (0,0) circle [radius=1] node {2};
\end{tikzpicture}
\tikzexternalenable% should renable at end.
\begin{tikzpicture}
\draw [black, ultra thick,fill=yellow!20] (0,0) circle [radius=1] node {3};
\end{tikzpicture}
\end{document}