tikz 内部的算术

tikz 内部的算术

我在进行里面的算术运算时遇到了困难tikz

我写过:

  \foreach \s in {6,...,8}
  {  
  \node[draw,red,circle] at (0:(\s-2)cm) {$\s$};
  }

不知何故,算术(\s-2)不起作用,我认为这是cm导致问题的原因,但我需要测量cm

如果我这样写:

  \node[draw,red,circle] at (0:\s cm) {$(\s-2)$};

算术不起作用并且 LaTeX 只是愉快地显示(6-2) (7-2)等等...

答案1

tikz 的单位是cm,因此无需指定。至于计算,它们在这里完成,无需括号。

\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{shadows,fadings}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}

\begin{document}
   \begin{tikzpicture}
\node[draw,blue,circle] at(0:2cm){4};
\node[draw,blue,circle] at(0:3){5};
\node[draw,blue,circle] at(0:4cm){6};
 \foreach \s in {6,...,8}
  {  
  \node[fill=red,circle,opacity=.5] at (0:\s-2) {$\s$};
  }
\end{tikzpicture}
\end{document}

如果仍想指定单位,则需要在每个数字之后指定:(0:\s cm-2cm) {$\s$};

或者按照@PaulGaborit 所指示的那样通过分解单位来做:(0:{(\s-2)*1cm})

微积分

答案2

您不能像直接显示的那样使用算术(在节点描述中或者在其后明确放置度量单位)。

只需使用宏evaluate的选项\foreach

在这里我创建了一个新的变量\mys,其值为\s-2

在我的第一个中tikzpicture\mys用于定位;在第二个中,用于描述:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
 \foreach[evaluate=\s as \mys using int(\s-2)] \s in {6,...,8}
  {  
  \node[draw,red,circle] at (0:\mys cm) {$\s$};
  }
 \end{tikzpicture}

 \begin{tikzpicture}
 \foreach[evaluate=\s as \mys using int(\s-2)] \s in {6,...,8}
  {  
  \node[draw,red,circle] at (0:\s cm) {$\mys$};
  }
 \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容