Tikz:使用外部图像作为构建块。

Tikz:使用外部图像作为构建块。

我想在 Inkscape 中创建自定义矢量图,然后在许多 tikz 图片中多次使用它。

有可能吗?
我应该使用 PDF 还是 SVG 或 Inkscape 的其他输出?
如何在 Tikz 节点中使用外部矢量图像?
如何定义锚点/尺寸(边界框)?

答案1

用于处理外部图像的 PGF 工具:

  • 使用\pgfdeclareimage让你的外部图像被 pgf/TikZ 所知

  • 用于\pgfuseimage{name}将图像包含到文档中

  • 封装图像以便\pgfbox能够在节点内使用它

这种方式的优点是每个图像只会在 pdf 文档中包含一次,并且可以重复使用多次,从而节省空间。

遵循关于包含图片的一般建议:首选 pdf 等矢量格式。

代码示例:

这个小示例使用外部图像构建了一个带有节点的树。我为此简单地从我们的网站上获取了图像。

\documentclass{article}
\usepackage{tikz}
\pgfdeclareimage{gold}{gold}
\pgfdeclareimage{silver}{silver}
\pgfdeclareimage{bronze}{bronze}
\begin{document}
\begin{tikzpicture}[sibling distance=12em]
  \node {\pgfbox[center,bottom]{\pgfuseimage{gold}}}
    child {node {\pgfbox[center,top]{\pgfuseimage{silver}}}}
    child {node {\pgfbox[center,top]{\pgfuseimage{bronze}}}};
\end{tikzpicture}
\end{document}

输出:

以图像为节点的树

pgf 命令的进一步解释:

  • \pgfdeclareimage[options]{image name}{file name}声明图像但不打印。它理解key=value高度、宽度、页面、插值和掩码等选项。支持常见格式,并会自动尝试其扩展名。

  • \pgfuseimage{image name}只是输出该图像。

  • \pgfbox[horizontal alignment,vertical alignment]{content}输出左对齐、居中或右对齐的内容,分别对齐顶部、中央、底部或底部。

详细的语法、选项和示例可以在 pgf 用户指南中找到。

正常的 LaTeX 方法:

您可以简单地使用\includegraphics,在 内使用它\pgftext。示例从这个意义上进行了修改:

\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
\begin{tikzpicture}[sibling distance=12em]
  \node[anchor=south] {\pgftext{\includegraphics{gold}}}
    child {node[anchor=north] {\pgftext{\includegraphics{silver}}}}
    child {node[anchor=north] {\pgftext{\includegraphics{bronze}}}};
\end{tikzpicture}
\end{document}

选择正确的方法:

\includegraphics建议使用pgf 命令代替这里因为\includegraphics是更好的实现。如果文档大小很重要并且多次使用图形或者需要屏蔽,则可能首选 pgf 方式。

相关内容