事实上,我使用\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”,没问题。我想用coordinate
s no 和 来 做到这一点pgfpoints
。我可以将一个转换为另一个吗?
否则,如何提取坐标而不使用pgfpoint
、 或path
或addplot
其他奇怪的东西?最好的解决方案是什么?
**这不是答案,但我的评论(实际上是问题)不适合评论槽。
当我使用代码时:
\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}