TikZ 带有 sqrt() 函数

TikZ 带有 sqrt() 函数

我在 TikZ 中使用 sqrt 函数和 draw 时遇到了麻烦。下面是我的代码示例,其中说明了哪些功能有效,哪些功能无效。

可能是什么问题?

\documentclass{standalone}
\usepackage{amssymb,amsfonts,amsmath}
\usepackage{tikz,tkz-euclide}
\usetikzlibrary{arrows,calc,patterns}

\begin{document}

\begin{tikzpicture}
\def\y{1};\draw ($0.5*(\y+4,\y-4)$) -- ($0.5*(\y,\y)$); %WORKS OK
\def\y{1};\draw ($0.5*(\y+4,\y-4)$) -- ($0.5*(\y+{sqrt(\y)},\y)$); %DOES NOT WORK!
\end{tikzpicture}


\end{document}

更新:我发现以下代码变体有效,但我不知道之前的代码有什么问题

   \documentclass{standalone}
    \usepackage{amssymb,amsfonts,amsmath}
    \usepackage{tikz,tkz-euclide}
    \usetikzlibrary{arrows,calc,patterns}

    \begin{document}

    \begin{tikzpicture}
    \def\y{1};\draw ($0.5*(\y+4,\y-4)$) -- ($0.5*(\y,\y)$); %WORKS OK
    \def\y{1};\draw ($0.5*(\y+4,\y-4)$) -- ($0.5*(\y,\y)+sqrt(\y)*(1,0)$); %WORKS OK!
    \end{tikzpicture}


    \end{document}

答案1

对中的表达式被吸收为宏参数,但首先必须识别该对:

$0.5*(\y+sqrt(\y),\y)$

第一个)会被误认为是该对的末尾,但事实并非如此。所以我们需要让它对解析器“隐藏”:

$0.5*({\y+sqrt(\y)},\y)$

\y+{sqrt(\y)}一个坐标将具有无效标记,即括号。相反,当将对拆分为$0.5*({\y+sqrt(\y)},\y)$第一部分的组件时,将是\y+sqrt(\y),因为 TeX 在查找参数后会删除一组不需要的括号。

相关内容