我什么时候可以在 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. 随后再次跟随 + 或 - 和另一个上述修改后的坐标;依此类推。
下面将详细解释因子和不同修饰符的语法。
您必须自己阅读手册中的以下内容。这里重要的是,数学运算只能出现在和factor
中modifiers
。不能出现在坐标本身中,这解释了为什么您的第二个示例不起作用。手册中也解释了第一个例子不起作用的原因。这是 Tikz 语法中相同类型的限制。