TikZ 计算问题

TikZ 计算问题

我什么时候可以在 TikZ 中使用函数并进行计算?我该如何实现:

\draw (0,0) arc(0:90:sqrt(15)); %not ok

为什么这样做有效:

\draw (0,0) arc(0:asin(1):5); %ok

\usetikzlibrary{calc}是这样的:

 \draw (0,0) -- ($ (4,0) + sqrt(7)*(0,1) $);  %ok

进行单坐标计算的唯一方法?为什么

 \draw (0,0) -- ($ (4,sqrt(7)) $);  %not ok

不工作?

最小示例:

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (0,0) arc(0:90:sqrt(15));              %not ok
\draw (0,0) arc(0:asin(1):5);                %ok
\draw (0,0) -- ($ (4,0) + sqrt(7)*(0,1) $);  %ok
\draw (0,0) -- ($ (4,sqrt(7)) $);            %not ok
\end{tikzpicture}
\end{document}

答案1

您需要将表达式包装到 中,以向 TeX 解析器{ }隐藏第二对。如果没有 , a将被下一个关闭,即使它属于另一个。这意味着将被当作没有第二个。这基本上会导致两个错误,一个在表达式中,因为它错过了 ,另一个在路径中,它不知道如何处理单个。有了 ,它就可以工作了,因为在采用之前,必须先用 a 关闭任何内容。( ){ }()(arc(0:90:sqrt(15))arc(0:90:sqrt(15)))\draw){ }{})

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
    \draw (0,0) arc(0:90:{sqrt(15)}); %now ok
    \draw (0,0) arc(0:{asin(1)}:5); %ok
    \draw (0,0) -- ($ (4,0) + sqrt(7)*(0,1) $);  %ok
    \draw (0,0) -- ($ (4,{sqrt(7)}) $);  %now ok
\end{tikzpicture}

\end{document}

答案2

编辑:这是不正确的,忽略它。嗯,直到坐标中不能包含数学运算为止它都是正确的。无论如何都忽略它。

这只是 Tikz calc 库的设置方式。如果我们看一下手动的

一般语法如下:
([ 选项 ]$ 坐标计算 $)。
如您所见,该语法使用 TEX 数学符号 $ 来表示涉及“数学计算”。但是,$ 没有其他作用,特别是不排版数学文本。
坐标计算具有以下结构:
1. 它以 < 因子 > * < 坐标 > < 修饰符 > 开头
2. 随后可选地跟随 + 或 -,然后是另一个 < 因子 > * < 坐标 > < 修饰符 >
3. 随后再次跟随 + 或 - 和另一个上述修改后的坐标;依此类推。
下面将详细解释因子和不同修饰符的语法。

您必须自己阅读手册中的以下内容。这里重要的是,数学运算只能出现在和factormodifiers。不能出现在坐标本身中,这解释了为什么您的第二个示例不起作用。手册中也解释了第一个例子不起作用的原因。这是 Tikz 语法中相同类型的限制。

相关内容