我使用 TikZ 在 LaTeX 中绘制图形。我想对变量进行算术运算。例如,我有以和命名的节点N-1
,N-2
我想从第一个节点创建N-3
和N-4
节点+2
。类似这样的:
\foreach \y in {1,2}
\node[right of=N-\y] (N-{2+\y}) {x};
不起作用但是却是我想要的。
@杰克
好的,这很好。现在假设我想在两个变量上使用它:
\foreach \x / \y in {1/2,3/4}
我想知道\x+\y
答案1
节点名称中的宏仅被扩展,但不会被数学解析器解析。您需要自己执行此操作,要么使用 Marco 在其答案中建议的显式命令,要么使用语句[evaluate = <variable> as <new macro> using <expression>]
的选项\foreach
。请注意,您需要使用该int(...)
函数来确保结果没有尾随.0
(否则您的新节点将被称为N-3.0
and N-4.0
):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (N-1) at (1,1) {N-1};
\node (N-2) at (2,-1) {N-2};
\foreach \y [evaluate = \y as \ypp using int(\y+2)] in {1,2}
\node[right of=N-\y] (N-\ypp) {N-\ypp};
\end{tikzpicture}
\end{document}
如果您同时循环多个变量,这也有效:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node [text=gray] (N-1) at (1,1) {N-1};
\foreach \x/\y [evaluate = \x as \ypp using int(\y+\x)] in {1/2,3/4}
\node[right of=N-\x] (N-\ypp) {N-\ypp};
\end{tikzpicture}
\end{document}
答案2
我希望我理解你的问题:
\documentclass{book}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[circle,draw] (N-1) {N-1};
\node[rectangle,draw,below of=N-1] (N-2) {N-2};
\foreach \y in {1,2}
\pgfmathparse{int(\y+2)}
\node[right of=N-\y] (N-\pgfmathresult) {x-\pgfmathresult};
\node[right of=N-4] {x-4 right};
\end{tikzpicture}
\end{document}
答案3
还有一个有用的例子供您参考:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\tikzstyle{curly} = [decorate,decoration={brace,amplitude=10pt},xshift=0pt,yshift=2pt]
\begin{tikzpicture}[
every node/.append style={inner sep=2pt,text width=50pt,align=center}]
\node [draw,text=gray] (N-1) at (1,1) {$P_1$};
\foreach \x [evaluate = \x as \ypp using int(1+\x)] in {1,...,4}
\node[rectangle,draw=blue!80,right=0cm of N-\x] (N-\ypp) {$P_\ypp$};
\draw [curly] (N-1.north west)--(N-5.north east) node [black,midway,yshift=14pt] {\footnotesize $T_0$};
\draw [curly] (N-5.south east)--(N-5.south west) node [black,midway,yshift=-14pt] {\footnotesize $T_1$};
\end{tikzpicture}
\end{document}
输出: