tkz-fct:绘制切线时出现错误消息

tkz-fct:绘制切线时出现错误消息

我尝试使用 tkz-fct 绘制函数图的切线。请参见下面的示例。但是我收到以下错误消息:

ERROR: Use of \tkz@DrawTangentLine doesn't match its definition.

--- TeX said ---
\pgfutil@ifnextchar ...1\def \pgfutil@reserved@a {
                                              #2}\def \pgfutil@reserved@...
 l.17       \tkzDrawTangentLine[draw](4)

知道我的代码有什么问题吗?

这个例子:

\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-fct}
\usetkzobj{all}


    \begin{document}

       \begin{tikzpicture}[xscale=1]
          \tikzset{tan style/.style={-}}
          \tkzInit[xmin=0,xmax=10,xstep=1,
          ymin=0,ymax=5,ystep=1]
          \tkzGrid[color=brown,sub,subxstep=50,subystep=200]
          \tkzAxeXY
          \tkzFct[color=red,samples=100,domain = 0:10]{sqrt(1/2.*\x) + sin(1/2.*\x)}
          \tkzDrawTangentLine[draw](4)
       \end{tikzpicture}
    \end{document}

答案1

首先你不需要usetkzobj。这是tkz-euclide。现在问题来自“sqrt”,一种可能性是

\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-fct}

\begin{document}

\begin{tikzpicture}[xscale=1]
\tikzset{tan style/.style={-}}
\tkzInit[xmin=0,xmax=10,xstep=1,
        ymin=0,ymax=5,ystep=1]
\tkzGrid[color=brown,sub,subxstep=50,subystep=200]
\tkzAxeXY
\tkzFct[color=red,samples=100,domain = 0:10]{(1./2*\x)**(0.5) + sin(1./2*\x)}
\tkzDrawTangentLine[draw](4)
\end{tikzpicture}
\end{document} 

在此处输入图片描述

解释:代码非常棘手:首先,语法是 gnuplot 的语法,用于绘制图形,但随后,为了绘制一些点和切线,我使用了 FP。所以我创建了一个宏,用 FP 的语法翻译 gnuplot 表达式。当我编写时tkz-fct,我不知道如何使用 gnuplot 计算单个值,现在我知道如何做到这一点……但是对于 Lua,也许最好等一段时间,然后用 luatex 编写新的宏。在这种情况下sqrt,我想我需要修改一些东西,因为这是一个错误!

相关内容