我尝试使用 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
,我想我需要修改一些东西,因为这是一个错误!