使用计算定义变量

使用计算定义变量

我如何定义一个由不同变量计算出来的变量,如下所示:

\newcommand \varA {3}
\newcommand \varB {2}
\newcommand \varC {\varB*\varA}

因此\varC将包含6而不是3*2。这很重要,因为\varC将在文本和 pgfplot 中用作变量。

答案1

如果你的目的是使用浮点数,pgfmath那就不好了。看下面的例子。

\documentclass{article}
\usepackage{xfp}
\usepackage{pgfmath}

\ExplSyntaxOn
\NewDocumentCommand{\setvar}{mm}
 {
  \fp_zero_new:c { l_flobue_var_#1_fp }
  \fp_set:cn { l_flobue_var_#1_fp } { #2 }
 }
\NewExpandableDocumentCommand{\usevar}{m}
 {
  \fp_use:c { l_flobue_var_#1_fp }
 }
\ExplSyntaxOff

\begin{document}

\section{PGF}

\pgfmathsetmacro\varA{123.45}
\pgfmathsetmacro\varB{0.012345}
\pgfmathsetmacro\varC{\varA/\varB}

\verb|\varA| is \varA \\
\verb|\varB| is \varB \\
\verb|\varC| is \varC

\section{xfp}

\setvar{A}{123.45}
\setvar{B}{0.012345}
\setvar{C}{\usevar{A}/\usevar{B}}

\verb|A| is \usevar{A} \\
\verb|B| is \usevar{B} \\
\verb|C| is \usevar{C}

\setvar{B}{0.0012345}
\setvar{C}{\usevar{A}/\usevar{B}}

\noindent
Now \verb|C| is \usevar{C}; try with pgfmath

\end{document}

在此处输入图片描述

xfp采用\setvar和的方法有几个优点\usevar

  1. 更高的准确性
  2. 范围更大
  3. \pgfmathsetmacro检查所定义的命令
  4. 更大的灵活性

第四点值得举个例子:如果你需要使用上一次除法的结果,你可以简单地这样做

\fpeval{\usevar{A}/\usevar{B}}

不需要设置另一个变量来获取结果可扩展

相关内容