\path 中的无单位比率 let

\path 中的无单位比率 let

我想计算\path let构造中距离的纯比率;例如,在文档片段中

\path let \p1 = (1cm, 2cm), \n1 = {\y1 / \x1} in ...

我希望\n1是数字 2,而不是字符串2pt,这是 TikZ 实际写入的,因为计算涉及一个单位某处,即使它们相互抵消。一个糟糕的解决方案是\expandafter\strip@pt\n1到处写入,但有没有办法向 PGF 数学引擎发出信号,让\ifpgfmathunitsdeclared(控制这个决定并设置在 内部的某个地方\pgfmathparse)让\iffalse?我想象一个像这样的构造

\path let \p1 = (1cm, 2cm), \n1 = {nounits(\y1 / \x1)} in ...

或者可以放在数学表达式本身内部的其他东西。

答案1

再次浏览文档后,我发现了\pgfmathpostparse在之后调用的函数\pgfmathparse。它是应该进行修改\pgfmathresult,但没有理由你不能这样做:

\documentclass{article}
\usepackage{tikz} \usetikzlibrary{calc}
\begin{document}
 \def\pgfmathpostparse{\global\pgfmathunitsdeclaredfalse}
 \tikz \path let \n1 = {1pt} in node {\n1};
\end{document}

它打印“1.0”;注释掉该\def行会打印“1.0pt”,所以这确实是我想要的。这\global是必要的,因为显然是\pgfmathpostparse在组内运行的。抱歉,我回答了自己的问题。

相关内容