tikz:计算坐标的算术

tikz:计算坐标的算术

考虑这个例子:

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \def\xstart{-1}
%  \def\xstart{-0.2-0.8}                                                                                                                                                                                   
%  \def\xstart{\pgfmathparse{-0.2-0.8}\pgfmathresult}                                                                                                                                                       
  \draw[fill=black](0,0)circle(0.1cm);
  \draw(\xstart, 1) rectangle (1, -1);
  \node at (0.5*\xstart + 1*0.5, 0){centre};
\end{tikzpicture}
\end{document}

结果是文本居中,正如我们所期望的:

在此处输入图片描述

但是,如果我使用\def\xstart{-0.2-0.8}某些错误就会出现:

在此处输入图片描述

无法通过使用 来提供救援\def\xstart{\pgfmathparse{-0.2-0.8}\pgfmathresult}

如何纠正这个问题?

答案1

这里有两种方法(共几种选项)可以消除错误。

  1. 添加括号,\node at ({0.5*(\xstart) + 1*0.5}, 0){centre};。这是因为否则 TiZ 看到\node at (0.5*-0.2-0.8 + 1*0.5, 0){centre};。请注意,您需要在 x 组件周围添加括号,否则括号会使解析器感到困惑。
  2. 使用\pgfmathsetmacro

结果是一样的。

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \def\xstart{-1}
  \def\xstart{-0.2-0.8}
%  \def\xstart{\pgfmathparse{-0.2-0.8}\pgfmathresult} 
  \draw[fill=black](0,0)circle(0.1cm);
  \draw(\xstart, 1) rectangle (1, -1);
  \node at ({0.5*(\xstart) + 1*0.5}, 0){centre};
  \begin{scope}[xshift=4cm]
    \pgfmathsetmacro\xstart{-0.2-0.8}
    \draw[fill=black](0,0)circle(0.1cm);
    \draw(\xstart, 1) rectangle (1, -1);
    \node at (0.5*\xstart + 1*0.5, 0){centre};
  \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容