为什么形状(sB)
出现unknown
在下面的代码中?如何避免这种情况?
\documentclass[]{standalone}
\usepackage{tikz,xparse}
\usetikzlibrary{calc}
\tikzset{pics/.cd,
% Marque croix
Cross/.style args={#1 and #2}{%
code = {%
\draw[#2,rotate=45,scale=1.4] (0,#1 pt) -- (0,-#1 pt) ;
\draw[#2,rotate=-45,scale=1.4] (0,#1 pt) -- (0,-#1 pt) ;
}
},
Cross/.default={2 and black}
}
\NewDocumentCommand{\Segment}{mO{}}{%
\begin{scope}[#2]
\path (0,0) coordinate (sA) pic {Cross={1.5 and gray}}
-- (#1,0) coordinate (sB) pic {Cross={1.5 and gray}} ;
\draw (sA)--(sB) ; % Can't reuse (sB)
\end{scope}
}
\begin{document}
\begin{tikzpicture}
\Segment{1.5}
\end{tikzpicture}
\end{document}
答案1
这似乎是一个错误。在路径上\iftikz@node@is@pic
执行 之后,内部命令不会重置,因此任何后续节点(坐标为节点)都会被解析为图片,因此不会执行任何操作。pic
一个临时的修复方法(并不保证在所有可能的用例中都有效)是将以下内容(带有适当的类别代码更改)放在序言中:
\def\tikz@do@after@node{\tikz@node@is@picfalse\tikz@scan@next@command}