![为什么缺失的坐标被视为 1?](https://linux22.com/image/375830/%E4%B8%BA%E4%BB%80%E4%B9%88%E7%BC%BA%E5%A4%B1%E7%9A%84%E5%9D%90%E6%A0%87%E8%A2%AB%E8%A7%86%E4%B8%BA%201%EF%BC%9F.png)
为什么缺失的坐标被视为1
(而不是0
例如)?这是设计选择还是简单的巧合?
\documentclass[tikz,border=7pt]{standalone}
\begin{document}
\begin{tikzpicture}
\path[red]
(0,0) node{(0,0)}
(,0) node{(1,0)}
(0,) node{(0,1)}
(,) node{(1,1)}
;
\end{tikzpicture}
\end{document}
笔记:这个问题非常有用密码高尔夫;)
答案1
这是由于其\pgfpointxy{}{}
工作原理。当 TikZ 遇到(...)
它基本上会寻找典型的它是极坐标语法吗?它是坐标系点吗?等检查,然后假设它是一个常规点。在检查 3D(x,y,z)
语法后,它会将其发送到其中一个@
已填充的扫描点宏(\tikz@@@parse@regular
如果我没记错的话)
但实际数字来自这一点
\def\pgfpointxy#1#2{%
\pgfmathparse{#1}% <============= This is \pgfmathparse{} in our example
\let\pgftemp@x=\pgfmathresult%
\pgfmathparse{#2}%
\let\pgftemp@y=\pgfmathresult%
\pgf@x=\pgftemp@x\pgf@xx% <================So this becomes ={\empty}{current xvec}
\advance\pgf@x by \pgftemp@y\pgf@yx%
\pgf@y=\pgftemp@x\pgf@xy%
\advance\pgf@y by \pgftemp@y\pgf@yy}
长话短说,坐标语法被反复使用\pgfpointxy
,条目成为当前 x,y 向量的标量因子。由于 TeX 维度寄存器缩放行为,没有因子被视为当前单位向量长度本身。