`tikzmath` 坐标的 x,y 分量的默认单位是 `pt`

`tikzmath` 坐标的 x,y 分量的默认单位是 `pt`

假设我想根据 A、B 两点在网格上画一条线:

\documentclass[tikz]{standalone}
%mixing defs and coordinates is a bad idea  
\usetikzlibrary{fit,shapes,calc,matrix,math,positioning,arrows.meta}
\begin{document}
\begin{tikzpicture}
\def\xmax{7}
\draw [help lines] (0,0) grid (\xmax,\xmax);
\tikzmath{
coordinate \A, \B; 
\A =(1,2);
\B =(4,4);
}
\draw[fill=black] (\A) circle [radius=1pt] node[above,xshift=-1pt] {$A$};
\draw[fill=black] (\B) circle [radius=1pt] node[above,xshift=-1pt] {$B$};
\pgfmathsetmacro{\gradient}{(\By-\Ay)/(\Bx-\Ax)};
\draw (0,\Ay-\gradient*\Ax) -- (\xmax,\Ay-\gradient*\Ax+\gradient*\xmax);
\draw[fill=green] (0,\Ay-\gradient*\Ax) circle [radius=1pt] ;
\draw[fill=red] (\xmax,\Ay-\gradient*\Ax+\gradient*\xmax) circle [radius=1pt] ;
\end{tikzpicture}
\end{document}

这会产生,

![在此处输入图片描述

这产生了正确的左边界(绿点),但产生了错误的右边界(红点)。事实证明\Ax\Ay不等于 1cm 和 2cm,而是以 pts 表示,并且等于 28.45274 和 56.90549。因为\gradient使用这些单位计算,并且绿点的表达式也使用这些单位,所以我得到了正确的结果。红点的情况并非如此,因为\xmax肯定不是以 pts 为单位。结果是 ay 坐标等于 42.60365 pt 或 1.497348 cm。

有没有办法通过强制定义坐标来避免这种单位混乱tikzmath使用默认单位厘米来避免这种单位混乱?

相关内容