我正在尝试围绕多个节点绘制线条。我非常喜欢\convexpath
给出的定义这里,但它在我的设置(MacTex 2014 及其所有可用更新)上运行不佳。
我尝试编译Claudio Fiandrino 的第一个解决方案,但我得到的是以下内容,这显然不是我应该得到的。任何想法都将不胜感激。
答案1
当 TikZ/PGF 更新到 3.0.0 版本时,PGFmath 函数的参数atan2
在哪里交换。在 2.10 版本之前
atan2(x, y)
现在是
atan2(y, x)
然而,想想这个改变,它会破坏向后兼容性,因为您还需要在链接代码中交换参数。
为了我自己的库和目的,我创建了两个替代函数atanXY
和atanYX
\csname pgfmathatan2@\endcsname{0}{1}
\ifdim\pgfmathresult pt=0pt % atan2(y, x)
\pgfmathdeclarefunction{atanXY}{2}{\csname pgfmathatan2@\endcsname{#2}{#1}}
\pgfmathdeclarefunction{atanYX}{2}{\csname pgfmathatan2@\endcsname{#1}{#2}}
\else % atan2(x, y)
\pgfmathdeclarefunction{atanXY}{2}{\csname pgfmathatan2@\endcsname{#1}{#2}}
\pgfmathdeclarefunction{atanYX}{2}{\csname pgfmathatan2@\endcsname{#2}{#1}}
\fi
在 2.10 和 CVS 版本之间切换时这一点尤为重要。
如今
\pgfmathdeclarefunction{atanXY}{2}{\pgfmathatantwo@{#2}{#1}}
\pgfmathdeclarefunction{atanYX}{2}{\pgfmathatantwo@{#1}{#2}}
就足够了。
atanXY(\p{<name>})
这也允许在使用 calc 之后再次使用它
let \p{<name>}=(<coordinates>) … in
路径运算符。
该\p{<name>}
宏仅扩展为\x{<name>},\y{<name>}
通常在 TikZ 坐标规范内使用的。