我的目标是绘制下面的简单图表(仅用于说明目的)。
\documentclass[tikz,border=12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-2,0) circle (1) (2,0) circle (1);
\draw (60:1) ++(-2,0) -- (120:1) ++(2,0);
\end{tikzpicture}
\end{document}
但我得到了以下内容。
为什么不能被认为是向右平移2个单位的(120:1) ++(2,0)
点?(120:1)
答案1
现在的写法是,先绘制(120:1)
,然后将笔(不绘制)向右移动 2 个单位。
解决这个问题的一种方法是使用calc
库并将移位分组为一个坐标:
\documentclass[tikz,border=12pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw (-2,0) circle (1) (2,0) circle (1);
\draw (60:1) ++(-2,0) -- ($(120:1)+(2,0)$);
\end{tikzpicture}
\end{document}
另一种方法,不使用额外的库,是切换到路径并定义起点和终点的坐标。然后在坐标之间画线:
\documentclass[tikz,border=12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-2,0) circle (1) (2,0) circle (1);
\path (60:1) ++(-2,0) coordinate (start) -- (120:1) ++(2,0) coordinate (end);
\draw (start) -- (end);
\end{tikzpicture}
\end{document}
两种情况下的输出是相同的:
答案2
另一个选项是将 应用于shift
每个坐标。可以使用xshift
、yshift
和shift
。最后一个需要在移位值周围写上外部括号,{(x,y)}
如下一个代码所示。
\documentclass[tikz,border=12pt]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-2,0) circle (1) (2,0) circle (1);
\draw ([xshift=-2cm]60:1) -- ([shift={(2cm,0)}]120:1);
\end{tikzpicture}
\end{document}