如何配置 TikZ 的角度半径选项(角度库),以使其默认测量单位符合所使用的 TikZ 图片?

如何配置 TikZ 的角度半径选项(角度库),以使其默认测量单位符合所使用的 TikZ 图片?

我不明白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用户看来可能非常相似)不会默认解释11pt但。我认为这是一种不幸的不一致,可能1 * <basic unit>1cm由于库和和angles的现代符号的发展方式不同。我个人认为它应该统一。(当然,统一这种行为可能并不简单,因为 x 和 y 基本单位可能不同,从而导致椭圆弧,这可能不是库想要的。所以不知何故,人们必须决定是使用 x 还是 y 基本单位,或者接受角度图的可以是椭圆形。)circlearcanglesarc

无论如何,您可以轻松地提取基本 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}

在此处输入图片描述

相关内容