以下是 PGF 2.00 的错误:
\begin{tikzpicture}
\draw (0,0) to +(1,1);
\end{tikzpicture}
我可以发誓,这曾经在另一个版本中起作用,但我不知道是哪个版本。问题似乎是“到”路径的目标坐标必须以括号开头。但将“到”路径绘制到相对坐标是一件非常有用的事情!有什么办法可以解决这个问题吗?到目前为止,我想到的唯一办法是改用“calc”包:
\begin{tikzpicture}
\draw (0,0) to ($(0,0)+(1,1)$);
\end{tikzpicture}
但这很快变得麻烦,特别是中间有几段使用 ++ 相对坐标的路径。
编辑:是的,当然在这个简单的例子中我可以to
用替换--
,但重点是我想要使用其他to
路径,具体来说curve to
。
编辑:这是我想要做的一件更复杂的事情:
\begin{tikzpicture}
\filldraw[fill=gray] (0,0) to[out=20,in=180] ++(2,1)
to[out=0,in=160] ++(2,-1) -- cycle;
\end{tikzpicture}
答案1
更新(2011-05-15):我刚刚用 PGF2.10 测试了这一点,似乎现在(再次)支持相对坐标。因此,如果您能够升级到 2.10,则以下技巧就没有必要了。
真烦人!
如果您只是绘制直线,那么您可以替换 by to
,--
这样就可以了。但是,这不会修复更通用的to
路径。如果您有很多to
基本相同的路径,您可以指定自己的采用相对坐标的变体。例如,要使您提供的示例工作(我添加了节点以显示它们按预期工作),您可以执行以下操作:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0,0) to node {x} (1,1);
\begin{scope}[to path={-- +(\tikztotarget) \tikztonodes}]
\draw (0,1) to node {y} (1,1);
\end{scope}
\end{tikzpicture}
\end{document}
要全局定义它,您可以使用以下\tikzstyle
命令:
\documentclass{article}
\usepackage{tikz}
\tikzstyle{rel line to}= [to path={-- +(\tikztotarget) \tikztonodes}]
\begin{document}
\begin{tikzpicture}
\draw (0,0) to node {x} (1,1);
\draw (0,1) to[rel line to] node {y} (1,1);
\end{tikzpicture}
\end{document}
要了解如何修改其他类型的to
路径,您需要查看文件tikzlibrarytopath.code.tex
(使用zsh
: less $(kpsewhich tikzlibrarytopath.code.tex)
)。有些定义看起来很容易修改(只需+
在正确的位置添加),但有些定义可能稍微复杂一些,因为目标坐标可能在多个地方使用。如果您想要让某个特定类型工作,但又搞不清楚,只需询问即可!
答案2
这够简单吗?:
\path (0,0) node (y) {} +(-1,-2) edge [-] (y);
(是的,我做理解这意味着反转坐标,但是......)