TikZ 中图片缺失形状

TikZ 中图片缺失形状

为什么形状(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}

相关内容