存储 pgfpoint 以供重复使用

存储 pgfpoint 以供重复使用

我是 pgf 新手,正在尝试创建自己的形状。由于在很多路径命令中我重复使用同一个点 ( \pgfpoint{\pgf@xb}{\pgf@ya}),我想知道哪个点最适合存储该点,以便我可以从一个地方更改该点。

推荐的实现方法是什么?\pgf@registers保存点后可以重复使用吗?是否有可以优化此操作的保存方法?也就是说,\pgfqpoint似乎可以进行更简单的输入解析,是否有办法执行类似以下操作:

\savepoint{myName}{\pgfpoint{2cm+1pt}{3ex}}
\pgfpathlineto{\myname} %compute cost here equivalent to the cost of \pgfqpoint at most
\pgfpathlineto{\myname} %compute cost here equivalent to the cost of \pgfqpoint at most

保存点是否有效def或者还有其他推荐的方法?

答案1

有一个内部命令\pgfextract@process可以执行您想要的操作:

\makeatletter
\pgfextract@process\startpoint{\pgfpointorigin}
\pgfextract@process\endpoint{\pgfpointadd{\pgfpoint{10pt}{20pt}}%
    {\pgfpoint{20pt}{0pt}}}
\show\startpoint
\show\endpoint

这将在日志文件中生成类似以下内容的内容:

> \startpoint=macro:
->\pgf@x =0.0pt\relax \pgf@y =0.0pt\relax .
l.7 \show\startpoint

> \endpoint=macro:
->\pgf@x =30.0pt\relax \pgf@y =20.0pt\relax .
l.8 \show\endpoint

\pgfextract@process在组内处理其第二个参数TeX,然后通过将和设为全局变量\pgf@x而将其置于组外。然后,和\pgf@y的值保存在作为第一个参数给出的宏名称中。\pgf@x\pgf@y

相关内容