我正在帮助 TeX 一位教授的手写笔记以供出版/预印之用,并且为了制作某些图形,我使用 PGF/TikZ。但是,似乎只要涉及到 TikZ,他就会难以编译代码,所以他希望我分别编译 TikZ 图像,然后\includegraphics
对所有图像进行编译。(这似乎有点犯罪,但我想这是老板的命令。)
但是,尝试将 TikZ 图像独立化(即包括 TikZ 代码、一些文章文档类,然后编译为 .pdf)时,我会留下大量来自单页文档其余部分的空白。这导致尝试处理时出现很多问题\includegraphics
,因为与所有空白相比,图像本身微不足道。
有没有办法缩短生成的页面以完全适应 TikZ 图像的尺寸?或者除了放弃 TikZ 并使用第三方软件之外,是否还有其他更好的解决方案?
答案1
如上所述,您可以使用一个包模仿者但要求包含tikzpicture
由库创建的图像。external
这在手册中有很好的解释pgf
,但我会解释如何使用它。
首先,你的常规当地的文档将会有常规tikzset
命令等。
所以:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
Text ...
\tikzsetnextfilename{arrow}
\begin{tikzpicture}
\draw [->] (0,0) -- (2,3);
\end{tikzpicture}
\end{document}
这将创建带有外部化图片的文档,创建一个名为箭头.pdf。
现在让我们假设您已完成并希望与非 TikZian 合作。这可能还意味着他没有pgf/tikz
安装任何软件包。
首先要找到该文件
tikzexternal.sty
,它应该位于你的 TeX-tree 下:latex/pgf/utilities/tikzexternal.sty
将此文件复制到您的主 TeX 文件夹。
注释掉你的
\usepackage{tikz,pgf,pgfplots}
。注释掉任何
\usetikzlibrary
、\usepgfplotslibrary
、 等等。添加包的用法
\usepackage{tikzexternal}
。- 你不需要注释掉任何
\tikzset
命令,因为它们将被模拟掉
以上这些应该注释掉的东西,其实都可以通过本地\iffalse ... \fi
语句来实现,但是在分发给别人的时候,明确的注释掉会比较严谨。
这将给你一个如下的文档:
\documentclass{article}
\usepackage{tikzexternal}
\tikzexternalize
\begin{document}
Text ...
\tikzsetnextfilename{arrow}
\begin{tikzpicture}
\draw [->] (0,0) -- (2,3);
\end{tikzpicture}
\end{document}
并且编译发现没有使用TikZ,但是图像的加载是正确的。
但是,使用此方法有一些注意事项。首先,键中的整个键值系统都是不是因此,所有对external
设置的引用都应使用指定的命令执行:
\tikzsetexternalprefix
代替钥匙使用prefix
\tikzsetfigurename
代替钥匙使用figure name
- 甚至连其中的内容都无法
\tikzexternalize[<content>]
被识别。
此外,该包tikzexternal
会吞噬tikzpicture
环境,因此完整的环境应该是可见的(这里不要做任何花哨的事情:))。