我已经定义(在 egreg 的帮助下):这个新命令的定义中,其参数中参数的数量可变,有什么问题?)这个新命令:
\newcommand{\st}[3]{%
\begin{center}
\begin{tikzpicture}[scale=.5, line width=1pt]
\draw (0 , 0) -- (0, 2*dim{{#3}}+2);
\draw [fill=gray!25] (0 , 0) circle(1.6);
\draw (0, 0) node {{\large \textbf{#2}}};
\foreach \superscript [count=\ni from 2] in {#3} {%
%\draw (-\ni, 2*\ni) -- (\ni, 2*\ni);
\draw [->] (-\ni, 2*\ni) -- (dim{{#3}}+5, 2*\ni);
\draw [fill=black] (0, 2*\ni) circle(.2);
\draw [fill=white] (\ni , 2*\ni) circle(1);
\draw [fill=white] (-\ni, 2*\ni) circle(1);
\draw (-\ni, 2*\ni) node {\superscript};
\draw (\ni, 2*\ni) node {\the\numexpr#1/(2*#2)/\superscript};
\pgfmathparse{#1/(2*#2)/\superscript}
\draw ((dim{{#3}}+5, 2*\ni) node [draw, rectangle, fill = gray!10, right]{here the mathematical result};
%\draw ((dim{{#3}}+5, 2*\ni) node {\the\numexpr#2*{{\pgfmathresult-\superscript^2}}};
}
\end{tikzpicture}
\end{center}
}
将其作为 \st{252}{1}{9,7,6,3,2,1} 运行,我们得到下图:
我试图写一个数学结果,其中我写了“这里是数学结果”。数学运算如下:#2 *(右侧节点上的数字平方 - 左侧节点上的数字平方)。#2 是写在大圆圈(灰色)内的变量,在此示例中为 #2 = 1。例如,对于顶部的一对节点,我们必须计算 1 * (126² - 1²),对于第二行,1*(63² - 2²),...,依此类推。
我对这些工作环境仍然了解不够,并且在尝试时总是收到错误消息。
答案1
我宁愿使用节点和较少的重复,和xfp
。
\documentclass{article}
\usepackage{tikz}
\usepackage{xfp}
\begin{document}
\newcommand{\st}[3]{%
\begin{center}
\begin{tikzpicture}[scale=.5, line width=1pt,c/.style={circle,draw,minimum
size=1cm},f/.style={circle,fill,minimum size=2mm}]
\draw (0 , 0) -- (0, 2*dim{{#3}}+2);
\draw [fill=gray!25] (0 , 0) circle(1.6);
\draw (0, 0) node {{\large \textbf{#2}}};
\pgfmathtruncatemacro{\mydim}{dim{{#3}}}
\foreach \mysuperscript [count=\myni from 2] in {#3} {%
\path (-\myni, 2*\myni) node[c](l-\myni) {$\mysuperscript$}
-- node[f]{} (\myni, 2*\myni) node[c](r-\myni) {$\the\numexpr#1/(2*#2)/\mysuperscript$}
(\mydim+5, 2*\myni)
node [draw, rectangle, fill = gray!10, right] (x-\myni)
{$\fpeval{#2*((#1/(2*#2)/\mysuperscript)^2-1)}$}
(r-\myni) edge (l-\myni) edge[-latex] (x-\myni) ;
}
\end{tikzpicture}
\end{center}}
\st{252}{1}{9,7,6,3,2,1}
\end{document}