制作 TikZ 制作的 .pdf 并在其上使用 /includegraphics?

制作 TikZ 制作的 .pdf 并在其上使用 /includegraphics?

我正在帮助 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安装任何软件包。

  1. 首先要找到该文件tikzexternal.sty,它应该位于你的 TeX-tree 下:

     latex/pgf/utilities/tikzexternal.sty
    
  2. 将此文件复制到您的主 TeX 文件夹。

  3. 注释掉你的\usepackage{tikz,pgf,pgfplots}

  4. 注释掉任何\usetikzlibrary\usepgfplotslibrary、 等等。

  5. 添加包的用法\usepackage{tikzexternal}

  6. 你不需要注释掉任何\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设置的引用都应使用指定的命令执行:

  1. \tikzsetexternalprefix代替钥匙使用prefix
  2. \tikzsetfigurename代替钥匙使用figure name
  3. 甚至连其中的内容都无法\tikzexternalize[<content>]被识别。

此外,该包tikzexternal会吞噬tikzpicture环境,因此完整的环境应该是可见的(这里不要做任何花哨的事情:))。

相关内容