使用 Tikz 时矩形顶点偏移不正确

使用 Tikz 时矩形顶点偏移不正确

在图片中,您可以看到两个矩形,顶点处有圆圈标记。在左侧的矩形中,我尝试将所有东西偏移相同的距离,但效果不佳。我不明白为什么,因为在右侧示例中,圆圈标记完美地位于每个顶点的顶部。这是为什么?我将不胜感激任何帮助。

\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);

发生的事情是

  1. 将笔放在(0,0)
  2. 将笔移动到相(-.2,-.2)对于(0,0)
  3. 从该点到点绘制一个矩形(3,4)
  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库定义的,它已经在您的序言中了。

相关内容