我想在 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 方式。