如何将坐标转换为 pgfpoint,反之亦然?

如何将坐标转换为 pgfpoint,反之亦然?

事实上,我使用\pgfextractx\pgfextracty从坐标获取 x,y 值。无论我的坐标内容如何,​​它们都会返回 0。也就是说,这

\coordinate (E) at (0.308017, -0.951057);
\newdimen\ex
\pgfextractx{\ex}{(E)}

返回 0,而我们知道它应该返回 0.308017。然而当我使用\pgfpoint它时它起作用了。那就是

 \newdimen\cx
        \pgfextractx{\cx}{\pgfpoint{1}{2}}

返回“1”,没问题。我想用coordinates no 和 来 做到这一点pgfpoints。我可以将一个转换为另一个吗?

否则,如何提取坐标而不使用pgfpoint、 或pathaddplot其他奇怪的东西?最好的解决方案是什么?

**这不是答案,但我的评论(实际上是问题)不适合评论槽。

当我使用代码时:

\begin{document}
\begin{tikzpicture}
\coordinate (E) at (0.308017pt, -0.951057pt);
\newdimen\ex
\pgfextractx{\ex}{\pgfpointanchor{E}{center}}
\newdimen\ey
\pgfextracty{\ey}{\pgfpointanchor{E}{center}}

\coordinate (H) at (\ex, \ey);
\node[] at (H) {This is E    };
\pgfmathprintnumber{1.2};

\end{tikzpicture}
\end{document}

由此得出的图形在此处输入图片描述

是的,1.2 的位置不对,但它告诉我“pgfmathprintnumber”正在工作。然而,当我更改行时

\pgfmathprintnumber{1.2};

对于线

\pgfmathprintnumber{\ex};

代码无法编译。错误如下:

软件包 pgfplots 警告:以向后兼容模式运行(不合适的刻度标签;缺少功能)。请考虑将 \pgfplotsset{compat=1.12} 写入您的前言中。在输入行 10。

! 缺少插入的 \endcsname。\ex l.20 \pgfmathprintnumber{\ex} ;

不要担心“向后兼容性”,我已经尝试添加上面建议的行,但没有任何变化。为什么会出现错误?就好像它不理解变量“\ex”,所以这种方法不起作用。

我按照@Ulrike 的建议,但没有使用“\showthe\ex”行,因为该行导致了另一个编译错误。

现在,如果我改用以下行:

\node[] at (H) {\pgfmathprintnumber{\ex}};

代码确实给了我这个错误:

! 缺少 \endcsname 插入。\ex l.19 \node[] at (H) {\pgfmathprintnumber{\ex} };

输出如下图所示: 在此处输入图片描述

这意味着“ex”是一个 NaN(不是数字)对象?

谢谢。


现在,当我按照@Tornbjorn 的建议使用“\the\ex”时发生了编译错误。

使用最新的特征集(\pgfplotsset{compat=1.12})生成。

!PGF 软件包数学错误:无法将输入“8.76384pt”解析为浮点数,抱歉。无法读取的部分位于“pt”附近。

请参阅 PGF Math 包文档以了解解释。输入 H 可立即获得帮助。...

l.19 ...) {这是 E \pgfmathprintnumber{\the\ex} }; ?

谢谢。


我解决了我的问题,而不必从坐标转换为 pgfpoint 并反之亦然。

我的问题主要是因为尝试提取坐标。

我是从以下链接了解到的: 访问 TikZ 坐标的逻辑值

主要从宏观上来说:

\makeatletter
\def\extractcoord#1#2#3{
  \path let \p1=(#3) in \pgfextra{
    \pgfmathsetmacro#1{\x{1}/\pgf@xx}
    \pgfmathsetmacro#2{\y{1}/\pgf@yy}
    \xdef#1{#1} \xdef#2{#2}
  };
}

对我来说效果很好。感谢大家的帮助。

答案1

您可以使用\pgfpointanchor

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}


\begin{document}
\begin{tikzpicture}
\coordinate (E) at (0.308017pt, -0.951057pt);
\newdimen\ex
\pgfextractx{\ex}{\pgfpointanchor{E}{center}}
\showthe\ex
\end{tikzpicture}
\end{document}

相关内容