我在进行里面的算术运算时遇到了困难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}