\path
问题就在标题中:Tikz 中的命令和有什么区别\draw
?Till Tantau 撰写的 PGF 和 TikZ 手册告诉我(在当前版本的第 26 页)“\draw
只是\path[draw]
” 的简写。
在之前关于如何使用 绘制某些图形的问题的一些答案中Tikz
,一些用户在他们的代码中混合使用了\path
和\draw
,而其他用户似乎只使用了\draw
。
这非常有用的幻灯片Marc van Dongen 在他的网站上解释了 Tikz 的基本功能,也包含两者的混合,但主要依赖于命令\draw
。
为了解决这种混乱,我现在已经改用 exclusivley \draw
,但我发现这非常令人困惑。
这两个命令有什么区别?我应该同时使用这两个命令吗?什么时候用代替更好,\path
反之亦然\draw
?什么时候它们完全一样?有没有\path
可以做但\draw
不能做的事情?
答案1
有时我们只需要一条虚拟路径,或者一条完全透明的路径来计算一些坐标、交叉点等。
为了制作一条隐形的路径,我们使用\path
,如果您想在其上放一些墨水,您可以使用\draw
。
例子:下面是我使用一些路径来计算交点的一个例子。
\documentclass{report}
\usepackage{amsthm,amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[scale=2]\footnotesize
\clip (-1.2,-.3) rectangle (4,1.75);
\begin{scope}[rotate=70]
\coordinate (q) at (0,0);
%
\draw[dashed] (q) circle (1);
\draw[dotted](0,-.8)--(0,.8)node[left=1.5em]{$\mathcal{K}$};
%
\path[name path=ray1] (q)-- (35:3cm);
\path[name path=ray2] (q)-- (0:3cm);
\path[name path=ray3] (q)-- (-40:3cm);
\path[name path=ray4] (q)-- (-60:3.5cm);
\path[name path=ray5] (q)-- (-70:4cm);
\draw[name path=circulo] (q)+(.4,0) circle (.4);
\draw[name path=vertical] (1.25,-4)node[above left=10pt]{$L$} -- (1.25,2);
%
\draw[name intersections={of=ray1 and vertical,by={b}}] (q)--(b);
\draw[name intersections={of=ray2 and vertical,by={a}}] (q)--(a);
\draw[dotted,name intersections={of=ray3 and vertical,by={v3}}] (q)--(v3);
\draw[dotted,name intersections={of=ray4 and vertical,by={v4}}] (q)--(v4);
\draw[dotted,name intersections={of=ray5 and vertical,by={v5}}] (q)--(v5);
%
\path[name intersections={of=ray1 and circulo,by={btilde}}] ;
\path[name intersections={of=ray2 and circulo,by={atilde}}] ;
\path[name intersections={of=ray3 and circulo,by={c31,c32}}] ;
\path[name intersections={of=ray4 and circulo,by={c41,c42}}] ;
\path[name intersections={of=ray5 and circulo,by={c51,c52}}] ;
%
\draw (atilde)--(btilde);
\draw[rotate=35] (btilde) rectangle +(-.07,-.07);
\draw[rotate=0] (a) rectangle +(-.07,.07);
\foreach \p in {q,btilde,atilde,c32,c42,c52,b,a,v3,v4,v5}{
\draw[fill=white] (\p) circle (.7pt); }
%
\node[left=2pt] at (btilde){$\tilde b$};
\node[right=2pt] at (atilde){$\tilde a$};
\node[above=2pt] at (a){$a$};
\node[above=2pt] at (b){$b$};
\node[below=2pt] at (q){$q$};
\end{scope}
\end{tikzpicture}
\end{document}