在图片中,您可以看到两个矩形,顶点处有圆圈标记。在左侧的矩形中,我尝试将所有东西偏移相同的距离,但效果不佳。我不明白为什么,因为在右侧示例中,圆圈标记完美地位于每个顶点的顶部。这是为什么?我将不胜感激任何帮助。
\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,calc}
\begin{document}
\begin{tikzpicture}
\tikzset{cyclenode/.style={dashed,very thick,fill=white,circle,draw=purple!80, inner sep=1pt}}
% with offset
\draw[draw,purple, dashed,very thick] (0,0)++(-.2,-.2) rectangle (3,4)++(-.2,-.2);
\path (0,0)++(-.2,-.2) node[cyclenode] {+};
\path (0,4)++(-.2,-.2) node[cyclenode] {-};
\path (3,4)++(-.2,-.2) node[cyclenode] {+};
\path (3,0)++(-.2,-.2) node[cyclenode] {-};
% without offset
\draw[draw,purple, dashed,very thick] (4,0) rectangle (7,4)++(-.2,-.2);
\path (4,0) node[cyclenode] {+};
\path (4,4)node[cyclenode] {-};
\path (7,4)node[cyclenode] {+};
\path (7,0) node[cyclenode] {-};
\end{tikzpicture}
\end{document}
答案1
该++
语法实际上并不是用于添加坐标,而是用于相对于前一个坐标移动笔/活动点。
所以当你这样做
\draw (0,0) ++(-.2,-.2) rectangle (3,4) ++(-.2,-.2);
发生的事情是
- 将笔放在
(0,0)
- 将笔移动到相
(-.2,-.2)
对于(0,0)
- 从该点到点绘制一个矩形
(3,4)
- 将笔移动到相
(-.2,-.2)
对于(3,4)
但是,由于坐标被解析为数学表达式,因此您可以这样做
\draw[draw,purple, dashed,very thick] (-.2,-.2) rectangle (3-0.2, 4-0.2);
如果要对“整个”坐标而不是每个组件进行计算,则可以使用
\draw[draw,purple, dashed,very thick] ($(0,0) + (-.2,-.2)$) rectangle ($(3,4) + (-0.2,-0.2)$);
这个美元符号语法是由calc
库定义的,它已经在您的序言中了。