PGF 从坐标中提取了错误的 x/y 值。我该如何提取正确的值?

PGF 从坐标中提取了错误的 x/y 值。我该如何提取正确的值?

考虑一下这个MEW,

\nonstopmode
\documentclass{article}
\usepackage{tikz,amsmath}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}                                       
    \draw [gray!10](-0.2, -0.2) grid[step=.25] (3.2,3.2) ;
    \draw [gray!25](-0.2, -0.2) grid[step=.5]  (3.2,3.2) ;
    \path
        (0, 3) node[left]  {$y$}
        (3, 0) node[below] {$x$} ;

    \draw [-latex](-.2, 0) -- (3,0);
    \draw [-latex](0, -.2) -- (0,3);
                                                          
    \draw [thick, cyan!50!black, -latex]
    (0,0)    node [coordinate](origin){}
    -- 
    (60:2.5) node [coordinate](pa){}
             node [above, black]{$p_a$}
    (origin)
    --
    (30:2.5) node [coordinate](pb){}
             node [above, black]{$p_b$};

    \newdimen\pax
    \newdimen\pay
    \pgfextractx{\pax}{(pa)}
    \pgfextracty{\pay}{(pa)}
    \draw [yellow!75!black](pa) -- (\pax, 0);
    \draw [yellow!75!black](pa) -- (0, \pay);
    \draw [magenta](pb) -- (\pax, 0);
    \draw [magenta](pb) -- (0, \pay);
\end{tikzpicture}                                         
\end{document}

生成了下面的图片:

图片

在 处\pgfextractx{\pax}{(pa)},我尝试提取节点坐标的 x 分量(pa)(与 y 分量相同),并尝试用黄线绘制与其各自轴的垂直线。但是它pgfextractx给出了节点坐标的 x/y 分量(pb),我用洋红色线条绘制了它。

如何使用 从节点坐标中提取正确的 x/y 值(pa)\pgfextractx我只查看了pgfmanual.pdf,没有提供很多 的例子\pgfextracttx

答案1

您处于 PGF 的基本层,它不会像前端层(又名 TiZ) 确实如此。特别是,使用括号表示坐标的语法在这里不起作用。因此,您需要使用\pgfpointanchor{pa}{center}而不是(pa)

\documentclass[border=10pt]{standalone}
\usepackage{tikz}

\newdimen\pax 
\newdimen\pay 

\begin{document}
\begin{tikzpicture} 
    \draw[gray!10] (-0.2,-0.2) grid[step=.25] (3.2,3.2);
    \draw[gray!25] (-0.2,-0.2) grid[step=.5] (3.2,3.2);
    \path 
        (0,3) node[left] {$y$} 
        (3,0) node[below] {$x$} ; 
    
    \draw[-latex] (-.2,0) -- (3,0); 
    \draw[-latex] (0,-.2) -- (0,3); 
    
    \draw[thick, cyan!50!black, -latex] 
        (0,0) node[coordinate] (origin) {} 
        -- 
        (60:2.5) node[coordinate] (pa) {} 
            node[above, black] {$p_a$} 
        (origin) 
        -- 
        (30:2.5) node[coordinate] (pb) {} 
            node[above, black] {$p_b$}; 

    \pgfextractx{\pax}{\pgfpointanchor{pa}{center}} 
    \pgfextracty{\pay}{\pgfpointanchor{pa}{center}} 
    \draw[yellow!75!black] (pa) -- (\pax,0); 
    \draw[yellow!75!black] (pa) -- (0,\pay); 
    \draw[magenta] (pb) -- (\pax,0); 
    \draw[magenta] (pb) -- (0,\pay);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容