我正在尝试了解如何处理 tikz 中的命名空间。这是一个想要了解的合理的事情,并且显然是 TeX.SE 的主题。此外,问题显然包含足够的细节,任何人都可以理解它在问什么。
这个问题的简短版本是:如果我在样式内定义图片,其渲染效果与在样式外定义图片不同。(特别是标签不显示。)我想知道这是为什么。
我想知道的原因是,我正在尝试定义一组相当复杂的 tikz 宏来绘制特定类型的图表,并且尝试将所有内容放入单一样式中以避免将其全部放入全局命名空间中对我来说是有意义的。但我不确定这是否真的是我应该尝试做的 - 我发现很难了解 tikz 如何“思考”命名空间以及这种事情的最佳实践是什么,所以任何关于这方面的建议也会有所帮助。
下面我给出两个 MWE。第一个按预期工作,并定义了一个如下所示的图片:
第二个是我尝试通过在自定义样式中定义图片来将其放入命名空间中。它解析正确,但标签不显示:
这个问题的重点是了解为什么会发生这种情况。
首先是工作版本:
\documentclass{article}
\usepackage{tikz}
\tikzset {
pics/my pic/.style = {
code = {
\node at (0,0) [pic actions, shape=rectangle] {#1};
}
}
}
\begin{document}
\begin{tikzpicture}
\draw pic[draw] {my pic=$f$};
\end{tikzpicture}
\end{document}
然后,该版本尝试将图片放入某种样式,但没有按预期工作。
\documentclass{article}
\usepackage{tikz}
\tikzset {
my style/.style = {
pics/my pic/.style = {
code = {
\node at (0,0) [pic actions, shape=rectangle] {#1};
}
}
}
}
\begin{document}
\begin{tikzpicture}[my style]
\draw pic[draw] {my pic=$f$};
\end{tikzpicture}
\end{document}