我试图在同一个绘制命令中绘制一条曲线,然后绘制一个图。但是,即使绘制了一条线,这也不起作用。以下代码有助于理解这个问题:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture} %This works!
\draw[domain=-1:1] plot(\x,{cos(\x*100)}) to[out=-60,in=180] (2,2);
\end{tikzpicture}
\begin{tikzpicture} %This does too!
\draw[domain=-1:1] (-2,-2) -- plot(\x,{cos(\x*100)}) to[out=-60,in=180] (2,2);
\end{tikzpicture}
\begin{tikzpicture} %This gives errors :( Why?
\draw[domain=-1:1] (-2,-2) to[out=40,in=30] plot(\x,{cos(\x*100)}) to[out=-60,in=180] (2,2);
\end{tikzpicture}
\end{document}
有人可以解释为什么这不起作用以及我该如何实现这一点吗?
答案1
操作to
与 有很大不同--
。从手册第 14.13 节中,您可以看到to
默认安装以下形式的路径:
--(\tikztotarget) \tikztonodes
对于曲线,模式类似,仍然使用宏\tikztotarget
、\tikztosource
和\tikztotarget
,这些宏由解析 to 操作的代码设置。摘自手册:
to 操作后面总是跟着一个 ⟨coordinate⟩
这样\tikztotarget
才能进行适当的设置。
从第 22.2 节中我们了解到,--plot
是明确定义的特定变体plot
。由于没有特殊to plot
操作,因此该to
操作本身无法理解直接操作plot
。
解决方案是,例如使用手动计算图的初始点,并在操作之后、之前\pgfmath
明确放置目标坐标:to
plot
\def\startPlotX{-1}
\draw[domain=\startPlotX:1]
(-2,-2)
to[out=40,in=30] (\startPlotX,{cos(\startPlotX*100)})
plot(\x,{cos(\x*100)})
to[out=-60,in=180] (2,2);