我不明白TikZ 库angle radius
的 TikZ 选项的默认测量单位是什么angles
。我所说的“默认测量单位”是指未明确指定单位时使用的单位。例如,在“正常”情况下,TikZ 将\draw (0,0) -- (2,1);
通过绘制长度为 2 厘米、高度为 1 厘米的矩形来处理指令,因为\draw
的默认测量单位是 1 厘米,因此当未明确指定单位时,将使用厘米单位。这在 TikZ 中通常是正确的,但是以下 LaTeX 代码表明就选项而言情况并非如此angle radius
。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (1,0);
\coordinate (b) at (0,0);
\coordinate (c) at (0,1);
\draw (a) -- (b) -- (c);
\draw pic [draw, angle radius = 1cm] {angle=a--b--c};
\coordinate (d) at (3,0);
\coordinate (e) at (2,0);
\coordinate (f) at (2,1);
\draw (d) -- (e) -- (f);
\draw pic [draw, angle radius = 1] {angle=d--e--f};
\end{tikzpicture}
\end{document}
这会生成(在 Overleaf 中,使用 2022 LuaLatex 引擎)
对于左图,指定了明确的单位,但对于右图,未明确指定单位。
为什么右边的数字与左边的数字不同?为什么cm
不像 TikZ 图片中的常态那样将其作为默认单位?这是 TikZ 中的错误吗?如何配置 TikZ,使得选项angle radius
将使用该选项所在的 TikZ 图片所使用的单位作为其默认度量单位angle radius
?
编辑:我已经打开了关于此问题的票据在 PGF/TikZ 错误跟踪器中。
答案1
正如评论中已经指出的1
那样,传递给的无单位值angle radius
将被库解释为1pt
。
circle
这实际上是一个有趣的发现,因为和的现代符号arc
非常不同,因为radius
可以用于两者的选项(在angle radius
用户看来可能非常相似)不会默认解释1
为1pt
但。我认为这是一种不幸的不一致,可能1 * <basic unit>
是1cm
由于库和和angles
的现代符号的发展方式不同。我个人认为它应该统一。(当然,统一这种行为可能并不简单,因为 x 和 y 基本单位可能不同,从而导致椭圆弧,这可能不是库想要的。所以不知何故,人们必须决定是使用 x 还是 y 基本单位,或者接受角度图的可以是椭圆形。)circle
arc
angles
arc
无论如何,您可以轻松地提取基本 x 和 y 单位的长度\pgfpointxy{1}{1} \pgfgetlastxy{\baseunitx}{\baseunity}
以供进一步使用:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (1,0);
\coordinate (b) at (0,0);
\coordinate (c) at (0,1);
\draw (a) -- (b) -- (c);
\draw pic [draw, angle radius = 1cm] {angle=a--b--c};
\coordinate (d) at (3,0);
\coordinate (e) at (2,0);
\coordinate (f) at (2,1);
\draw (d) -- (e) -- (f);
\pgfpointxy{1}{1}
\pgfgetlastxy{\baseunitx}{\baseunity}
\draw pic [draw, angle radius = {1 * \baseunitx}] {angle=d--e--f};
\end{tikzpicture}
\end{document}