TikZ:计算并使用 n 个数的乘积

TikZ:计算并使用 n 个数的乘积

pgfmath我有一个代码,用和来计算 n 个数字的乘积foreach作为宏\Prod

但如果我说\pgfmathtsetmacro\N{1+\Prod}我得到了一个错误。

我需要做什么?

\documentclass[]{book}
\usepackage{tikz}

\def\pgfmathsetglobalmacro#1#2{%
  \pgfmathparse{#2}%
  \global\let#1\pgfmathresult}
\def\List{1}

\newcommand\Prod{%
\def\Product{1}%
\foreach \i in \List {%  
\pgfmathsetglobalmacro{\Product}{int(\Product * \i)}}%
\Product}

\begin{document}
\section*{works}
\def\List{1,2,3,1,-1}
Product of {\List} is \Prod

\section*{works}
\def\List{2,2,3}
Product of {\List} is \Prod

\section*{works not}
%\pgfmathtsetmacro\N{1+\Prod}
%\N
\end{document}

在此处输入图片描述

答案1

\Prod是一个宏,当完成时,它定义\Product。因此,\Product在 的定义中使用\N,而不是\Prod

\documentclass[]{book}
\usepackage{tikz}

\def\pgfmathsetglobalmacro#1#2{%
  \pgfmathparse{#2}%
  \global\let#1\pgfmathresult}
\def\List{1}

\newcommand\Prod{%
\def\Product{1}%
\foreach \i in \List {%  
\pgfmathsetglobalmacro{\Product}{int(\Product * \i)}}%
\Product}

\begin{document}
\section*{works}
\def\List{1,2,3,1,-1}
Product of {\List} is \Prod

\section*{works}
\def\List{2,2,3}
Product of {\List} is \Prod

\section*{works not}
\pgfmathsetmacro\N{1+\Product}
\N
\end{document}

在此处输入图片描述

相关内容