6

在以前的tikz版本中使用局部包围盒命名pics的解决方案习惯于工作。

然而,在3.1.10版中,以前的代码会产生错误:

! 包pgf错误:未知名为“A1”的形状。! 包pgf错误:未知名为“A2”的形状。

发生了什么变化?如何使以前的解决方案与新版本协同工作?

代码

前面的解决方案是为了完整起见:

\documentclass[tikz,border=5]{独立}\usetikz库{fit}%\标记字母\tikzset{pics/命名范围代码/.style={代码={\tikz@fig@必须命名%\开始{scope}[local bounding box/.expanded=\tikz@fig@名称]#1\结束{范围}%}}}\制造者\tikzset{pics/.cd,pic a/.style={命名范围代码={\节点[fill=red!20,shape=circle]{A};}}}\开始{文档}\开始{tikzpicture}\(0,0){pica}处的pic(A1);\pic(A2)位于(3,0){pica};\{0,15,…,345}中的每个\i{\绘制[红色,->](\i:1)-(A1);\绘制[蓝色,->](3,0)++(\i:1)--(A2);}\结束{tikzpicture}\结束{文档}

安装程序

正在使用编译pdflatex公司:pdfTeX,版本3.141592653-2.6-1.40.26(TeX Live 2024)

包装:

  • 文档类:单机版2022/10/10 v1.3b编译TeX子文件的类
  • 包装:pgfrcs 2023-01-15 v3.1.10(3.1.10)
  • 包装:pgfcore 2023-01-15 v3.1.10(3.1.10)
  • 包装:tikz 2023-01-15 v3.1.10(3.1.10)
  • 文件:tikzlibraryfit.code.tex 2023-01-15 v3.1.10(3.1.10)

1答案1

重置为默认值
5

自版本以来第3.1.10版TikZ包括这两者名称前缀名称后缀对于局部边界框。由于图片的名称被附加到名称前缀这将应用两次,这意味着边界框实际上已命名A1A1型A2A2型:

\绘制[红色,->](\i:1)--(A1A1);\绘制[蓝色,->](3,0)++(i:1)--(A2A2);

修复很简单。

我们提供局部边界框一个空名称,因为我们会将其赋给一个节点,该节点应该使用pic的名称:

\tikzset{%/tikz/局部边界框pics/namedscope-code/.style={code={\tikz@fig@有胡子的\begin{scope}[localboundingbox=]#1\end{scope{}}}

或者,我们通过使用键的PGF版本使用前面的实现\提克兹@无花果@姓名再一次:

\tikzset{%/pgf/局部边界框pics/namedscope-code/.style={code={\tikz@fig@有胡子的\开始{scope}[/pgf/local-bounding-box/.展开=\tikz@fig@名称]#1\结束{范围}}}

代码

\documentclass[tikz,border=5pt]{独立}\标记字母\tikzset{%/tikz/局部边界框pics/namedscope-code/.style={code={\tikz@fig@有胡子的\begin{scope}[localboundingbox=]#1\end{scope{}}}%\tikzset{%/pgf/局部边界框%pics/namedscope-code/.style={code={\tikz@fig@有胡子的%\开始{scope}[/pgf/local bounding box/.展开=\tikz@fig@名称]#1\结束{范围}}}\制造者\tikzset{pics/.cd,pic a/.style={命名范围代码={\节点[fill=red!20,shape=circle]{A};}}}\开始{文档}\开始{tikzpicture}\(0,0){pica}处的pic(A1);\pic(A2)位于(3,0){pica};\{0,15,…,345}中的每个\i{\绘制[红色,->](\i:1)--(A1);\绘制[蓝色,->](3,0)++(\i:1)-(A2);}\结束{tikzpicture}\结束{文档}

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.