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}