当数据类型不是整数时,tex 中的算术

当数据类型不是整数时,tex 中的算术

用例。

我正在起草一份合同,一开始我会指定一个小时的费率

\newcommand{\monthlyrate}{\$10000}

在以下命令中,我想指定罚款,该罚款应为月费率的倍数。例如,

penalty should be 4*\monthlyrate \$ 

是否可以让 tex 直接进行计算?当然,我认为其中一个潜在的障碍是 \montlyrate 被定义为字符串,因此无法进行算术运算。

PS 是的,如果我只需要用文字表达我的意思,那没什么大不了的。我只是觉得这在当前用例之外还有潜在的用途。

答案1

在此处输入图片描述

\documentclass{article}

\newcommand\monthlyrate[1][1]{\$\the\numexpr#1*1000\relax}
\begin{document}

   The monthly rate is \monthlyrate\ equivalently \monthlyrate[12] per year.

\end{document}

答案2

你会给 LuaTeX 一个机会吗?当谈到除法时,你就会发现 TeX 的局限性。

\directlua{M=2000}

The monthly rate is \$\directlua{tex.print(M)} equivalently 
\$\directlua{tex.print(M*12)} per year.

\bye

编辑:\$添加(参见评论)。

答案3

\documentclass{article}
\newcommand\monthlyrate{\$750}
\newcommand\Penalty[1]{\$\the\numexpr#1
  *\expandafter\stripdollar\monthlyrate\relax}
\def\stripdollar#1#2\relax{#2\relax}
\begin{document}

The monthly rate is \monthlyrate.

The penalty should be \Penalty{4}
\end{document}

在此处输入图片描述

相关内容