将有理数字符串转换为变量并返回

将有理数字符串转换为变量并返回

处理有理数时如何转换 LaTeX 变量和字符串?我找到了很多整数的工作示例,但没有找到有理数的工作示例。

\documentclass[12pt]{article} 
\begin{document}
\newcommand{\stress}{223.032}
\stress
\end{document}

产生输出“223.032”。我找到了 numprint 包来格式化数字字符串并附加单位等,但如何处理实际值?像这样:

\documentclass[12pt]{article} 
\begin{document}
\newcommand{\stress}{223.032}
% convert to numeric variable
\stressval=\value{\stress}
% do st with the number
\doublestressval=2*\stressval
% convert to string variable
\doublestress=\tostring{\doublestressval}
% print result
\doublestressval
\end{document}

答案1

这是定义和使用变量的相当通用的方法。我加载siunitx以显示值,因为它比 强大得多numprint

\documentclass[12pt]{article}
\usepackage{siunitx}

\ExplSyntaxOn

\NewDocumentCommand{\definevars}{m}
 {% #1 = key-value list
  \prop_set_from_keyval:Nn \l_gluge_vars_prop { #1 }
  \prop_map_inline:Nn \l_gluge_vars_prop
   {
    \fp_zero_new:c { l__gluge_vars_##1_fp }
    \fp_set:cn { l__gluge_vars_##1_fp } { ##2 }
   }
 }

\NewExpandableDocumentCommand{\usevar}{m}
 {
  \fp_use:c { l__gluge_vars_#1_fp }
 }

\ExplSyntaxOff

\definevars{
  stress=223.032,
  doublestress=2*\usevar{stress},
  mpv=1.256637062e-6,
}


\begin{document}

The double stress is \qty{\usevar{doublestress}}{\pascal}

The magnetic permeability in vacuum is 
\qty[exponent-mode=scientific]{\usevar{mpv}}{\henry\per\meter}

\end{document}

在此处输入图片描述

你可以使用\definevars任意数量的指令。当然,如果你使用指令\usevar来定义新变量,那么之前的指令必须已经定义。

相关内容